MOV IE,ACC POP ACC RET
显示刷新子程序框图如图4.3所示:
开始读日期高位送47读秒低位送40读月份低位送48读秒高位送41读月份高位送49读分低位送42读年号低位送50读分高位送43读年号高位送51读时低位送44调显示程序读时高位送45子程序返回读日期低位送46
图4.3 显示刷新子程序框图
显示刷新子程序如下所示: MOV 40H ,R3 PUSH ACC
23
DISPLAY: MOV A, RO
MOV R6 ,A ;显示指针首址保护,存入R6 INC DPTR ;先将指针指向分钟单元 MOVX A,@DPTR
MOV R3,A ;保护寄存器A数据 ANL A, #OFOH
SWAP A MOV @R0 ,A
INC R0 MOV A, R3
ANL A, #OFOH MOV @R0,A INC R0 INC R0 DEC DPTR MOVX A, @DPTR
SWAP A MOV @R0,A
INC R0 MOV A,R3
ANL A, #OFOH MOV @R0 ,A MOVX @DPTR,A MOV R4,#1FH MOV A,R4 MOVX @DPTR,A DEC DPTR DEC DPTR
MOV A,@R0 ;得到小时的十位 ;显示指针加一 ;得到小时的个位 ;存入显示缓冲区 ;跳过分号的显示单元 ;得到分钟的十位 ;显示指针加一 ;得到分的个位 ;存入显示缓冲区 ;A\\C 口均为输出,方式0 ;位选字
;送位选字中间变量
;从位选字入(采用共阴接法全灭);指向PA口 ;查段码
24
ADD A,#0DH MOVC A,@A+PC
MOVX @DPTR,A ;段选码送PB口 ACALL DLL ;延时一毫秒
INC R0 ;指向显示缓冲区下一单元 MOV A, R4
JNB ACC .0,LD1 ;判断16位显示完
RR A ;未显示完,变为下一位位选字 MOV A,R4
AJMP LDO ;转显示下一位 POP ACC LD1:RET
DSGE: DB 3FG,06H,5BH,4FH,66H,6DH,7D,07H,7FH,67H,77H,7CH, “ 0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“A”“B” 39H,5EH,79H,71H;
“C”“D”“E”“F”
DL1: MOV R7,#02H ;延时子程序 DL: MOV R6,#OFFH NOP
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET
25
5 单片机应用系统的测试
5.1 在伟福中的调试
通过伟福仿真软件和Keil软件来验证程序。首先打开伟福仿真软件的界面,对仿真器的参数值进行设置。其设置如图5.1所示:
图5.1 仿真器的选择
我所选的是8751的仿真器,在目标生成文件中选择生成BIN和HEX文件(即二进制和十六进制文件)其设置如图5.2所示,设置完成后点“好”就可以了。
图5.2 生成文件的设置
然后在伟福里面输入我们的程序进行调试,刚开始有好几处错误,我们的程序没
26
有通过编译,然后我就查找错误的所在,一一更改之后终于通过编译,其运行结果如图5.3所示:
图5.3 编译通过后的界面
5.2 在Keil中的调试并连接实验箱
1、打开项目
在伟福内调试通过以后,再在Keil中下载到实验箱上进行验证,显现出所要求的效果。而在Keil中也要进行一些参数的设置,首先打开Keil仿真软件,首先要新建一个项目,点菜单Project→New Project,在弹出的对话框中选择保存的路径并输入项目名称“wang”后保存,然后在弹出新的项目窗口中选择参数,其参数的设置如下,
由于我们使用的是Atmel公司的芯片,所以要选Atmel后,点击确定。 2、设置芯片
在弹出的对话框中选择AT89C51这个芯片,点击确定。如图5.4所示:
27