单片机(S12X)课程实验内容与指导
实验参考:1、教材第4章“仿真、调试与C语言编程”,以及相关章节。
2、教材第14章“S12XS128开发平台的DIY设计与使用”。
3、文档附件:CQU-S12X核心板/扩展板简要说明、完全原理图PDF。
4、资源下载:www.cqumcu/
注意事项:1、教学实验核心开发板上MCU型号为MC9S12XS128MAL,16Mhz外部晶振。
2、在做硬件下载调试实验时,需要连接仿真器TBDML,此时仿真器兼做电路板供电,应将仿真器的USB接口端连接在电脑背后以防供电电流不足。
3、硬件实验时要确保开发板上的外设部件已通过跳线帽跳接到MCU相关引脚,并且没有与其它外设部件冲突。
4、*号题为选做、提高内容。
实验一 编程入门、仿真调试
实验目的:熟悉飞思卡尔MCU仿真与调试环境的使用方法,掌握汇编语言程序的编辑书写规范,学习单片机汇编语言程序调试手段,进一步编制应用程序,体会MCU应用程序特点。
实验环境:CodeWarrior IDE仿真调试软件;
编程语言选择:单选汇编语言(Relocatable Assembly);
调试连接选择:全软件仿真(Full Chip Simulation);
实验内容:1、编辑、编译简单样本程序:两个4字节无符号数相加。熟悉CodeWarrior IDE 的工程建立、菜单、工具、窗口、状态等。
a. 已知:($2000)=被加数开始,($2004)=加数开始;具体值在单步运行开始前预先在Debug窗口的Memory区通过手工设定。
b. 仿真调试:分别利用单步、全速、停止、断点、复位等运行调试手段,观察寄存器A、B、X、Y、PC、CCR等的状态与变化,以及观察FALSH中指令地址和RAM中数据变化情况,
验证运行结果。(该仿真调试方法将运用于以后的各次实验中)
样本程序代码参考如下:重点编辑Entry后面的代码,其它已在工程建立时自动完成,保留前面的宏定义代码,与自己任务无关的其它代码可以删除。
2、使用查表法将累加器A中的某2位BCD码(如58)转换为ASCII码,存入RAM$2080、$2081中。
工程编译、连接完成后,进入仿真调试窗口,且在运行程序前手工预设Register区的A值。
仿真调试:分别利用单步、全速、停止、断点、复位等运行调试手段,观察寄存器A、B、X、Y、PC、CCR等的状态与变化,以及观察FALSH中指令地址和RAM中数据变化情况,验证运行结果。(该仿真调试方法将运用于以后的各次实验中)
3、数据搬移:源代码中使用FCB伪指令任意设定10个无符号数,将其读入到内存RAM$2040~$2049单元中。Debug窗口Memory区右键→Address,输入2040处看结果.
*4、冒泡法数字排序:在上一个程序基础上,将内存RAM$2040~$2049单元中的10个数按由小到大重新排放(X、Y指针,双重循环)。
实验二 编程提高、并行I/O接口、中断
实验目的: 熟悉飞思卡尔MCU指令及其应用规则,巩固汇编语言程序编程方法,熟悉数据传输、算术逻辑处理、分支、循环、软件延时、并行I/O等应用程序编制技巧,初步熟悉硬件连接调试方法。
实验环境:CodeWarrior IDE仿真调试软件 + CQUS12X开发板套件;
编程语言选择:单选汇编语言(Relocatable Assembly);
调试连接选择:硬件连接调试(TBDML);
仿真调试器一端连接电脑背后USB接口,另一端插接核心板的BDM接口。
实验内容:
1、LED跑马灯。依次点亮核心板上的8个LED灯,LED已接B口8位,B口位输出低电平时点亮。亮出时间控制调用软件延时100ms。
2、检测核心板上的2个按键(SW1、SW2)控制LED灯的亮或灭。按键已接J口低2位(须设置J口位为输入、启用内部上拉电阻),LED已接B口8位,B口位输出低电平时点亮。
3、外部中断IRQ触发的LED跑马灯。核心板上8个LED已接B口8位,B口位输出低电平时点亮,IRQ引脚(已接至扩展板按键SW1)下降沿引发中断。按动SW1即能给IRQ引脚施加带有下降沿的低电平。
调试时,可在中断服务程序中设置断点,以方便观察是否进入中断。
在此程序正常运行的基础上再加入对核心板按键SW1(J口最低位,按下时接地,须设置上拉电阻)的检测,当其按下时取消跑马灯显示,IRQ再次按下时继续显示跑马灯。
*4、4x4行列式键盘(扩展板右下侧)检测,行线、列线已分别跳接在PH0~4和PH4~7检测到的按键号送交B口的8位LED灯进行二进制表达。(扩展板上的行列线排布已通过排线扭转调整为常规线序)
实验三 GPIO、中断、定时器
实验目的:掌握C语言综合编程方法,掌握并行I/O口、定时器、中断等功能部件的使用规则和应用方法,熟悉中断处理程序的安排。
实验环境:CodeWarrior IDE仿真调试软件 + CQUS12X开发板套件;
编程语言选择:单选汇编语言(Relocatable Assembly)或单选C语言;
调试连接选择:硬件连接调试(TBDML);
仿真调试器一端连接电脑背后USB接口,另一端插接核心板的BDM接口。
实验内容:1、软件译码、动态扫描的4位连排共阴级数码管显示任意数字。数码管段选线直接连至PB0~PB7;位选线(COM端)通过三极管驱动电路接在PK0~PK3,则PK0~PK3输出高电平时即为选通对应位的数码管。
2、利用MCU的TIM定时器、中断功能部件,实现1s精确定时(MCU为8MHz总线频率),每定时时间到,使核心板上接B口8位的最高位的LED亮灭一下,观察是否进入中断。调试时,可在中断服务程序中设置断点,以方便观察是否进入中断。
3、利用MCU的PIT定时器、中断功能部件,实现1s精确定时(MCU为8MHz总线频率),每定时时间到,使核心板上接B口8位的最高位的LED亮灭一下,观察是否进入中断。调试时,可在中断服务程序中设置断点,以方便观察是否进入中断。C语言编程。
*4、统计每3s时间内脉冲事件次数,结果送B口LED灯(核心板上)进行二进制表达。TIM通道0输出比较以定时1s,时间到时IOC0引脚电平自动翻转(将驱动扩展板上LED4);TIM通道7输入捕捉以检测脉冲,扩展板上按键SW2每按动一次形成一个下降沿脉冲,由IOC7响应。通道0每3个中断后(即成3s定时)送结果,通道7每1个中断中计数值递增。
线上编程课排名结果是每1s时间到LED4亮出/熄灭,每3s时间到显示统计到的按键次数。C语言编程。
实验四 A/D转换、SCI/SPI串行通信、PWM控制
实验目的:掌握C语言综合编程方法,掌握A/D转换、SCI串行通信、中断等功能部件的使用规则和应用方法,熟悉综合程序设计方法和PC软件工具。
实验环境:CodeWarrior IDE仿真调试软件 + CQUS12X开发板套件;
编程语言选择:单选C语言;
调试连接选择:硬件连接调试(TBDML);
仿真调试器一端连接电脑背后USB接口,另一端插接核心板的BDM接口。
实验内容:1、A/D转换,8位精度,转换结果右对齐,将转换结果通过B口LED灯(核心板)表达。检测对象为扩展板上圆盘电位器RV1分压得到的模拟量。MCU的PAD00/AN00已默认跳接至该模拟电平输入,其电压范围0~5V(逆时针旋转电压变大);通过旋转电位器RV1进行分压调节以观察程序运行效果,此时B口LED灯的状态应是A/D转换的二进制表示。
另:在上述实验成功的基础上,检测对象改为为扩展板上光敏器件RZ1经过放大得到的模拟量,MCU的PAD01/AN01已默认跳接至该模拟电平输入,其电压范围0~5V。改变光敏器件RZ1的光照,以观察程序运行情况。
2、SCI串行通信,PC机连接。SCI0双向,8位,9600bps,无校验位;MCU平时处于查询等待状态,MCU的SCI0串行通信TTL电平收发线已通过核心板上的PL2303芯片转换成PC机的USB接口线。PC机上直接使用”串口调试”工具软件进行发送数据或接收数据显示。当MCU接收到PC主机发来的Hex数据$88命令后,就将A/D转换的结果上传给PC主机”串口调试”工具软件Hex显示,当接收到$a5时停止传送。
预备软件:PC机端串口调试助手;USB转TTL串口驱动(PL2303)。
硬件连接:将USB电缆一端接核心板Mini串行插口,另一端接PC机USB接口。
*3、PWM脉宽调制。PWM1输出波形模拟用作D/A,控制扩展板LED3灯的亮度。
*4、SPI串行通信。SPI0单向,主入从出,扩展板上8位拨位开关状态将通过74LS165并入串出芯片的输出Q输入到MCU的MISO,将接收的结果送至B口8位LED显示。改变8位拨位开关状态,以观察程序运行情况。
提示:对照电路原理图自行查硬件连接关系;完成一次SPI读开关状态的步骤:先输出一个下降沿给74LS165的片选端PL(与MCU的PE2引脚相通),再SPI0发送一个字节以驱动数据移位,然后才SPI0读一个字节。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论