此帖出自嵌入式系统论坛
最新回复
;;;;;;;;;;;;;;;;;;;;
;; PROGRAM START ;;
;;;;;;;;;;;;;;;;;;;;
;
START: LCALL CLEARMEN ;上电初始化
START1: JB P3.0,DISPLAYS ;P3.0=1,显示里程
LCALL DISPLAYV ;显示速度
START2: SJMP START1 ;转START1循环
;
;;;;;;;;;;;;;;;;;;;;
;;INTEX0 PROGRAM ;;
;;;;;;;;;;;;;;;;;;;;
; 里程计数程序,用外中断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 ;中断返回
;
详情
回复
发表于 2007-6-3 01:22
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持