PUSH P2 B0: JNB P3.0,NH JNB P3.1,DH ;全红
A9: MOV P1,#0F6H SETB P2.6 SETB P2.7
ACALL DELAY JNB P3.2,B0 JMP JE
;只允许东西方向车辆通行 NH: MOV P1,#0DEH SETB P2.6 SETB P2.7
ACALL DELAY JNB P3.2,B0 JMP JE
;只允许南北方向车辆通行 DH: MOV P1,#0F3H SETB P2.6 SETB P2.7
ACALL DELAY JNB P3.2,B0 JMP JE JE:
POP P2 POP P1 POP 60H SETB EA RETI
5.3.4 红绿灯时间调整程序
时间调整按键连接到外部中断引脚P3.3,即INT1捕获到一个低电平,则进入该中断进行相关处理。程序如下:
;加减程序 IINT1:
CLR EA JB P3.3,$ PUSH P1 PUSH P2
B1: JNB P3.1,DDEC
IINC: JNB P3.0,SINC ;加1程序 ZINC: ;自动加1 MOV R0,#15 A10: ACALL BCD
ACALL DISPCLK DJNZ R0,A10 MOV A,60H ADD A,#01H DA A MOV 60H,A JNB P3.3,B1 JMP JS
SINC: ;手动加1 MOV R3,#20 A11: ACALL BCD
ACALL DISPCLK DJNZ R3,A11 MOV A,60H ADD A,#01H DA A MOV 60H,A B2: JB P3.3,JS JNB P3.4,SINC JMP B2
DDEC: ;减1程序 JNB P3.0,SDEC ZDEC:
MOV R4,#15 A12: ACALL BCD
ACALL DISPCLK DJNZ R4,A12 MOV A,60H ADD A,#99H DA A
MOV 60H,A JB P3.3,JS JMP B1
SDEC: ;手动减1程序 MOV R5,#20 A13: ACALL BCD
ACALL DISPCLK DJNZ R5,A13 MOV A,60H ADD A,#99H DA A
MOV 60H,A B3: JB P3.3,JS
JNB P3.4,SDEC JMP B3
JS: MOV 61H,60H POP P2 POP P1 SETB EA RETI 5.4 系统软件调试 5.4.1 TKS仿真器
仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。单片机系统开发中的仿真包括软件仿真和硬件仿真。
软件仿真这种方法主要是使用计算机软件来模拟实际的单片机运行,因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最后的设计;
硬件仿真使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步、全速、查看资源断点等。
5.4.2 集成开发环境KEIL
KEIL IDE Vision2集成开发环境主要由以下部分组成:
◆ u Vision2 IDE。ision2 IDE包括:一个工程管理器,一个功能丰富并有交互式错误提示
的编辑器选项设置生成工具,以及在线帮助。使用vision2创建源文件并组成应用工程加以管理。vision2可以自动完成编译汇编链接程序的操作;
◆ C51编译器和A51汇编器。Vision2 IDE创建的源文件可以被C51编译器或A51汇编器
处理生成可重定位的object文件。KEIL C51编译器遵照ANSI C语言标准支持C语言的所有标准特性,另外还增加了几个可以直接支持80C51结构的特性。KEIL A51宏汇编器支持80C51及其派生系列的所有指令集;
◆ LIB51库管理器。B51库管理器可以从由汇编器和编译器创建的目标文件建立目标库,
这些库是按规定格式排列的目标模块,可在以后被链接器所使用当链接器处理一个库时仅仅使用了库中程序使用了的目标模块而不是全部加以引用; ◆BL51链接器定位器。L51链接器使用从库中提取出来的目标模块和由编译器汇编器生成
的目标模块创建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位的代码和数据所有的代码和数据都被固定在具体的存储器单元中。 利用KEIL开发和调试系统软件流程大致如下: ◆启动Vision2,进入KEIL软件的集成开发环境;
◆利用KEIL内置的文本编辑器进行程序源文件的编辑,因为KEIL集成的文本编辑器对中文支持不是很好,可以选择其他的编辑器(本文使用的文本编辑器是Ultraedit—32),Vision2能够自动识别外部改变了的源文件;
◆建立工程,指定针对哪种单片机进行开发,指定对源程序的编译、链接参数,指定调试方式(本文采用外部硬件仿真器仿真调试的方式,即使TKS仿真器仿真),然后对工程进行相关设置;
◆设置好工程后即可进行编译、链接。连接仿真器对软件进行调试。也可以生成下载到单片机存储器上的HEX文件。 5.4.3 系统软件调试
系统的软件调试借助于TKS仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就是要使各个子程序模块运行正确,程序的运行流程正确。软件调试主要分以下几个步骤进行:
◆功能子程序的调试。能子程序的调试包括运算、采样、数字滤波以及PID运算等子程序的调试。在调试功能子程序时,许多参数都是未知的,要根据其所需的条件,给出假定的数据,使其运行,如果能完成预定的处理功能或与手工计算的结果相符,就说明该子程序己调试通过。调试时由小到大,由里到外。例如,调试PID算法子程序时,先调通其包含的各个运算子程序和参数处理子程序,然后将它们连起来进行通调。通调时,也是假定一些数据、参数和初始条件,然后运行程序。当运算结果与手工计算的结果相同时,该算法子程序则调试完成,反之,就要进行相应的修改。其它子程序的调试同理; ◆程序流程的调试。序流程的调试主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序。在调试过程中,先将PID算法子程序屏蔽,输出可控硅导通时间用一个固定的常数代替,在各个中断服务子程序设置断点,然后运行程序,查看程序是否能运行到所有的断点,若所有断点都能运行到,则程序流程基本正确。去掉所有断点,再一次运行程序,查看可控硅状态,从而判断程序流程正确,反之,若程序流程不正确,做相应的修改后,重新调试;
◆功能程序与算法程序的通调。完成整个程序流程的调试后,将PID等算法子程序加入,在算法子程序前或后设置断点,运行整个程序。当程序在断点处暂停时,查看PID计算的控制量与手工计算的值是否相同。多运行几次,若每次的结果都正确,则说明程序各个部分互相没有矛盾,反之,则说明算法子程序和其它子程序之间有影响,需要做相应的修改后重新调。 参考文献:
[l]边海龙,孙永奎. 单片机开发与典型工程项目实例详解[J].电子工业出
版社,2008,(10):.
[2]张鑫,华臻,陈书谦. 单片机原理及应用[J].电子工业出版社,2008(5). [3]黄智伟.凌阳单片机课程设计指导[J]. 北京航空航天大学出版社,2007, [4]余锡存 曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出
版社,2000.7
[5]雷丽文 等.微机原理与接口技术[M].北京:电子工业出版社,1997.2
相关推荐: