
单片机软件仿真实验.doc
12页单片机软件仿真实验一、使用Keil C51软件仿真的意义调试、运行汇编或C语言程序后,我们会觉得单片机并不很复杂,学起来也并不枯燥特别是Keil C51提供了 I/O端口、定时/计数器、中断结构和串行通信部件窗口,可观察到程序运行或单步调试时各端线、寄存器、标志位等电平的变化情况,对清晰把握流程及理解工作原理起到良好的促进作用当输出端电平按自己的要求变化时,愉悦随之而来!软件仿真不仅在学习探究阶段是好方法,实际应用中也是重要的环节二、由浅入深安排的实验项目[实验1 ] Keil C51软件仿真步骤输入、编译一个短小程序,调试运行观察P1.0端的电平变化规律,并对程序作适当修改,让P1端口各位依次出高电平点亮LED发光管(左移)[实验2] 十进制数转BCD码(汇编程序、C语言) 了解数据在累加器、存储单元内的存储形式及如何控制端口Port各位电平的高低、SWAP命令的功能 开始尝试调试或了解C语言程序[实验3] 定时器/计数器(汇编程序、C语言) 要点:定时器延时方法、程序查询溢出、定时器程序调试技巧 [实验4] 中断(汇编程序、C语言)1.定时器硬件中断 2.外部中断 要求:把握汇编程序的转跳流程、C51程序的中断服务函数定义格式,学会软件仿真调试时怎样实现外部中断。
[实验5] 航标灯(汇编程序) 白天灯灭,天黑闪亮,快慢可调,电路简单,流程清晰,调试、运行成功多有趣![实验6] 步进电机(C语言) 步进电机也称为脉冲电机,它可以接收单片机I/O端口的数字脉冲(高低电平的变化),使电机旋转过相应的角度,在要求快速启停、精确定位的场合广泛应用[实验7] 串行通信奇偶校验(汇编程序) 调试一个程序了解奇偶校验技术、方式2一帧数据组成、振荡周期、波特率周期,观察TB8(“第九位数据”)、P(PSW.0)、CY(位累加器C)、TI(中断申请)位[实验8] 转速自动稳定程序(C语言)三、实验内容实验1 Keil C51软件仿真步骤1.进入Keil uVision2集成开发环境2.建立项目 选“Project”—“New Project…”,在对话框中输入项目名:led注意:路径是E:\CJY\实验1\led,需先建个人文件夹及子文件夹“实验1”3.选芯片 项目建立完毕自动弹出器件选择对话框,选择“Inter”中的8051AH4.输入程序 选“File”—“New…”,在文本框中编辑源文件,保存汇编程序路径及文件名为: E:\CJY\实验1\ led.asm5.添加 将汇编程序添加到项目中,方法是在左边文件栏中用鼠标右键点击 弹出快捷菜单,选“Add Files to Group ‘Source Group 1’” ,在对话框中选led.asm,点击“Add” 、“Close”按钮。
6.编译 点击图标“ ”(Build Target),进行编译,根据错误提示修改7.调试 点击图标“ ”(Start/Stop Debug…)进行调试,“ ”单步执行,“”跳出循环Peripherals”—“I/O Ports”—“Port 1”显示端口窗口 点击“ ”可运行程序,“Port 1”端口的P1.0应怎样变化?“”停止 如何用左移指令使得P1端口各位依次出高电平点亮LED管?提示:增加、修改的语句有:MOV A,#01H、MOV P1,A 、RL A MOV P1,A8.关闭项目“Project”—“Clouse Project” 程序调试界面 实验2 十进制数转BCD码 借助本程序的调试,可清楚地观察到执行每条语句后各累加器内容的变化情况,了解到十进制数是以何种形式存入累加器的,I/O端口的电平的高低是怎样控制的 汇编语言程序调试界面C51程序:#include
当程序调试到下面位置时,应怎样做才能继续? 实验3汇编程序调试界面 C语言: #include
注意:点击定时器窗口中的TF0使其置1,可强迫溢出中断,并将#30改为#02H快捷C语言: #include
程序按延时2秒让P1.7电平变化,达到闪亮效果ORG 0000H ;安排程序起点软件仿真时必须有 +Vcc AJMP MAIN ;跳到主程序 ORG 0003H ;外部中断时自动转到此(矢量地址) AJMP WBINT ;跳到中断服务子程序 灯 ORG 000BH ;定时器矢量地址(溢出中断自动转到此) AJMP T0INT ;跳到溢出中断子程序 P1.78051 P3.2 INT0 ORG 0100H ;主程序入口地址MAIN: MOV SP,#30H CLR P1.7 CLR IT0 ;低电平触发方式 CLR PX0 ;优先等级0 SETB EX0 ;外部中断0开 去感光电路 SETB EA (白天高电平,天黑为低电平0) HERE: AJMP HERE ;等待外部中断(天黑) ;WBINT:MOV TMOD,#01H ;设置T0为定时功能 MOV TL0,#0B0H MOV TH0,#3CH SETB PT0 ;定时器优先等级为1 SETB TR0 ;启动定时器计数 。












