内容发布更新时间 : 2024/11/2 19:25:27星期一 下面是文章的全部内容请认真阅读。
河南大学本科毕业生学士学位论文
SW1: MOV A 30H ;地址30H存放按键按下次数,送入A INC A ;按键次数加1 CJNE A #05H ;
MOV 30H #01H;把#01H送入30H地址,A中内容
是
05H,循环执行
RET ;30H内容不是#05H,返回 SW2:MOV A 30H ;
CJNE A #01H ;A中不是#01H,循环执行 ACALL K1
MOV A 32H INC A
CJNE A #05H MOV 32H #01H ACALL K1 K1: MOV A 30H CJNE A #02H MOV A 31H INC A RET SW3:MOV A 30H CJNE A #01H ACALL K2
MOV A 32H DEC A ;
CJNE A #00H MOV 32H #05H ACALL K2 K2: MOV A 30H CJNE A #02H MOV A 31H DEC A RET
INTEX0 PROGRAM
; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ; ;
- 44 -
;;A中不是#01H,循环执行 ;河南大学本科毕业生学士学位论文
里程计数程序,用外中断0实现,计数用60H-62H内存单元。 INTEX0: PUSH ACC ; 累加器堆栈保护 PUSH PSW ; 状态字堆栈保护 INC 60H ; 圈加1 CLR A ; 清A
CJNE A, 60H, INTEX0OUT ; 计数没溢出转INTEX0OUT INC 61H ; 溢出进位(61H加1) CJNE A, 61H, INTEX0OUT ; 计数没溢出转INTEX0OUT INC 62H ; 溢出进位(62H加1) INTEX0OUT: LCALL VIICWRITE ; 里程数据存入EEPROM SETB EX1 ; 开外中断1 POP PSW ; 状态字恢复 POP ACC ; 累加器恢复 RETI ; 中断返回
INTEX1 PROGRAM ;
每转1圈时间计数处理程序,每圈时间放在68H-6BH单元中。 INTEX1: PUSH ACC ; 堆栈保护 PUSH PSW ;
CLR EX1 ; 关外中断1
JNB 00H, INTEX11 ; 溢出标志为0转INTEX11 MOV TL1, #0FFH ; 溢出时计时单元赋#0FFH(显示
速度为零)
MOV TH1, #0FFH ; MOV 6CH, #0FFH ; MOV 6DH, #0FFH ;
INTEX11: MOV 68H, TL1 ; 将时间计数值移入暂存单元
68H-6BH
MOV 69H, TH1 ; MOV 6AH, 6CH ; MOV 6BH, 6DH ;
CLR A ; 清A
MOV TL1, A ; 计时单元置0 MOV TH1, A ; MOV 6CH, A ; MOV 6DH, A ;
CLR 00H ; 清溢出标志 POP PSW ; 堆栈恢复 POP ACC ;
RETI ; 中断返回 INTT1 PROGRAM
T1计数器中断服务程序。(计数器T1由外中断1输入控制,当为高电平时计时
- 45 -