INTERRUPT
;保护现场作用,根据实际情况进行保存,中断内部和外部都使用的资源需要保
护,常规需要保护的内容有PSW PCH R0 R1
SWAPR R1 ,PSW
MOVPSW_TEMP, R1
MOVR1 , PCH
MOVPCH_TEMP, R1
;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
;中断处理
;...
;...
;...
;‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
;恢复现场作用
INT_END
MOVR1 , PCH_TEMP
MOVPCH, R1
SWAPR R1 , PSW_TEMP
MOV PSW, R1
IRET
;;;;;;;;;;;;;;中断部分结
束;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;入口函数,主程
序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN
CALL INIT_ALL ;初始化寄存器
CALL INIT_RAM ;初始化RAM
LOOP
INC UNIT ;个位数字的递增
MOV R0 ,UNIT
XOR R0 ,#0X0A
JB PSW ,Z
JMP C_DIS
CLR UNIT
INC DECADE ;十位数字的递增
MOV R0 ,DECADE
XOR R0 ,#0X0A
JB PSW ,Z
JMP C_DIS
CLR DECADE
INC HUNDRED ;百位数字的递增
MOV R0 ,HUNDRED
XOR R0 ,#0X0A
JB PSW ,Z
JMP C_DIS
CLR HUNDRED
INC THOUSAND ;千位数字的递增
MOV R0 ,THOUSAND
XOR R0 ,#0X0A
JB PSW ,Z
JMP C_DIS
CLR THOUSAND
C_DIS
MOV R0,#0x33
MOV DIS_DEL,R0 ;DIS_DEL是用来延时数值的递增用的,数值越
大,那么递增的速度就越慢
CALL LED_DISPLAY ;数码管显示当前数值
DECJZ DIS_DEL
JMP $‐2 ;调整地址以当前地址减2的位置
JMP LOOP
CRET
;*************************************************************
*****************
;* 函 数 名: INIT_ALL
;* 函数功能: 初始化函数,对各种寄存器的初始化
;* 入口参数: 无
;* 返 回: 无
;*************************************************************
*****************
|