2024年重庆大学通信工程大二课程:《MCU原理及应用——基于恩智浦S12X的嵌入式系统开发》实验课程记录。(错误在所难免,请多斧正!🙏)
目录
资源下载和实验环境
见下前言和注意事项
一、实验目的
掌握C语言综合编程方法,掌握A/D转换、SCI串行通信、中断等功能部件的使用规则和应用方法,熟悉综合程序设计方法和PC软件工具。
二、实验内容
2.1 A/D转换
A/D转换,8位精度,转换结果右对齐,将转换结果通过B口LED灯(开发板)表达。
检测对象为开发板上圆盘电位器RV1分压得到的模拟量。MCU的PAD00/AN00已默认跳接至该模拟电平输入,其电压范围0~5V(逆时针旋转电压变大)。通过旋转电位器RV1进行分压调节以观察程序运行效果,此时B口LED灯的状态应是A/D转换的二进制表示。
在上述实验成功的基础上,检测对象改为为开发板上光敏器件RZ1经过放大得到的模拟量,MCU的PAD01/AN01已默认跳接至该模拟电平输入,其电压范围0~5V。改变光敏器件RZ1的光照,以观察程序运行情况。(教材P189)
代码实现
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void main(void) {
/* put your own code here */
DisableInterrupts;
DDRB = 0xFF;
PORTB = 0xFF;
ATD0CTL1 = 0x00;
ATD0CTL2 = 0x40;
ATD0CTL3 = 0x08;
ATD0CTL4 = 0xA3;
ATD0DIEN = 0x00;
ATD0CTL5 = 0x21;
//AN00(RV1):0x00
EnableInterrupts;
for(;;) {
while((ATD0STAT0&0x80)!=0x80);
PORTB = ~ATD0DR0H;
} /* loop forever */
/* please make sure that you never leave main */
}
硬件显示
实验六 2.1 AD转换光敏
2.2 SCI串行通信,PC机连接
SCI0双向,8位,9600bps,无校验位。MCU平时处于查询等待状态,MCU的SCI0串行通信TTL电平收发线已通过开发板上的SCI0-RS232/TTL串行通信接口转换成PC机的USB接口线,PC机驱动安装后即会有一个虚拟串口设备(如COM4、COM5…)。
PC机上直接使用【串口调试】工具软件选择虚拟串口、进行发送数据或接收数据显示。当MCU每收到PC主机发来的Hex数据88(十六进制)命令后,就将本地原始某数据加1后上传给PC主机”串口调试”工具软件Hex显示。
预备软件:USB转RS232串口(CH340)驱动安装;PC机端串口调试助手。
硬件链接:将USB电缆一端接开发板P1- DB9的SCI0_RS232串口插座,另一端接PC机USB接口。(即蓝、白USB线都要接)
【通信 Communication】即MCU与外设或其它器件进行数据交换。通信主要方式有并行通信和串行通信。
【串行通信 Serial Communication Interface】逐位顺序传输。也称通用异步收发器(Universal Asynchronous Receiver/Transmitter)
代码实现
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void main(void) {
/* put your own code here */
byte txdata=0,rxdata=0;
SCI0BD=52;
SCI0CR1=0x00;
SCI0CR2=0x0C;
while((SCI0SR1&0x80)!=0x80);
SCI0DRL=0x66;
EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
while((SCI0SR1&0x20)!=0x20);
rxdata=SCI0DRL;
if(rxdata==0x88){
txdata++;
while((SCI0SR1&0x80)!=0x80);
SCI0DRL=txdata;
rxdata=0;
}
} /* loop forever */
/* please make sure that you never leave main */
}
【不足】
上述程序SCI串行数据接受是采用查询方式进行。在高级复杂的应用中,CPU往往有多种任务要执行,此时若SCI没有接收到外来的串行数据,CPU会一直处于等待查询的状态,无法进行其他控制处理,浪费CPU的资源。
故应该将SCI串行接受安排为中断响应方式,即 使能接收满中断,在中断服务程序中进行数据接收和相应处理。(见 2.3 改进2.2)
软件显示
2.3 改进2.2
上面实验内容2 改为中断方式检测PC主机的命令。
总结
及时完成实验!不要拖延