首页 理论教育学习单片机多语言编程、进行I/O接口软仿真调试

学习单片机多语言编程、进行I/O接口软仿真调试

【摘要】:调试的目的是发现程序的错误。主要是观察工作寄存器、片内RAM单元、SFR及转移的地址位置是否正确,软仿真调试窗口如图3-8所示。2)单击调试菜单上的“外围设备→I/O→Port→Port 1”,I/O接口图标显示P1口状态。经过指令“CPL P1.0”,I/O接口图标显示P1口状态可看到P1.0=0。图3-8软仿真调试窗口4)在调试菜单中单击“单步”按钮,再一下下按动键盘上的“F10”键,程序则一条条执行。

1.调试程序

978-7-111-47138-7-Chapter03-170.jpg

978-7-111-47138-7-Chapter03-171.jpg

2.汇编

用Keil C51 V6.12编译软件汇编。将文件命名为“exam_1”并完成汇编而且确定无汇编错误、无警告和已生成了后缀为“.hex”的文件。

若程序汇编出错,则必须按系统信息栏的错误提示对程序进行修改,再次进行汇编,直到通过为止。否则无法产生.hex文件,更无法进入调试环境。只在程序汇编通过并产生.hex文件的条件下才可进入调试状态。

3.软仿真调试操作步骤

下面为简化软仿真调试统称“调试”。调试的目的是发现程序的错误。主要是观察工作寄存器、片内RAM单元、SFR及转移的地址位置是否正确,软仿真调试窗口如图3-8所示。

1)单击主菜单上的“调试”按钮,在第1条(LJMP MAIN)指令处显示黄色图标,并显示调试菜单条。(www.chuimin.cn)

2)单击调试菜单上的“外围设备→I/O→Port→Port 1”(因为程序中使用了P1口),I/O接口图标显示P1口状态(可以拖动)。上排表示输出状态,下排表示输入状态。标志“”表示高电平,空白表示低电平。系统上电复位后,端口均处于高电平输入状态。

3)在调试菜单中单击“跟踪”按钮,再一下下按动键盘上的“F11”键,程序则一步步执行。经过指令“CPL P1.0”,I/O接口图标显示P1口状态可看到P1.0=0。

这里“跟踪”是一条条执行指令,进入延时指令后继续执行“跟踪”,在左侧工作寄存器栏显示R5=0x05,R6=0x64,R7=0xF6数据一个个变化。先是R7不断减1,一直到R7=0为止。然后R6减1,再执行R7-1。如果有耐心的话,可以一直执行“跟踪”,观察工作寄存器的变化。因为每执行一步DJNZR7,$,等于延时2×2=4μs。总的延时时间t=250×4×100×5=500ms=0.5s。

978-7-111-47138-7-Chapter03-172.jpg

图3-8 软仿真调试窗口

4)在调试菜单中单击“单步”按钮,再一下下按动键盘上的“F10”键,程序则一条条执行。经过指令“CPL P1.0”时,I/O接口图标显示P1口状态可看到P1.0=0。在经过指令“SETB P1.0”时,I/O接口图标显示P1口状态可看到P1.0=1。执行SJMP MAIN程序转移到MAIN。连续单击“单步”按钮,可看到P1.0由1到0不断变化。实际就反映了灯P1.0的亮和灭的变化。

“单步”调试是一种宏调试。它可以一次执行完子程序的全部指令,这与“跟踪”调试不同。

5)在调试菜单中单击“调试开始/停止”按钮,返回编辑状态。尽管这是为练习而举的例子,但不管程序如何复杂在程序正确的条件下方法是相同的。