单片机自行车速度里程计论文

河南大学本科毕业生学士学位论文

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 -

联系客服:779662525#qq.com(#替换为@)