LED1 EQU 08H
LED2 EQU 09H
LED3 EQU 0AH
LED4 EQU 0BH
LedT0 EQU 0CH ;0-3 轮流点亮4个数据管
SDA EQU P2.0
SCL EQU P2.1
Address EQU 0EH
I2CData EQU 0FH
;=================================================
ORG 0000H
LJMP START;转入主程序
;=================================================
ORG 000BH
;定时器0中断入口
INT_TO:
PUSH ACC
PUSH PSW
CLR TF0 ;清定时0中断标志
MOV TH0,#0F6H ;2.5MS
MOV TL0,#03DH ;
MOV A,#11110000B ;关数码管
ORL P2,A
MOV A,LedT0
CJNE A,#0,INT_T0_1
MOV A,LED1
MOV C A,@A+DPTR
MOV P0,A
CLR P2.7
MOV LedT0,#1
LJMP INT_T0_END
INT_T0_1:
MOV A,LedT0
CJNE A,#1,INT_T0_2
MOV A,LED2
MOV C A,@A+DPTR
MOV P0,A
CLR P2.6
MOV LedT0,#2
LJMP INT_T0_END
INT_T0_2:
MOV A,LedT0
CJNE A,#2,INT_T0_3
MOV A,LED3
MOV C A,@A+DPTR
MOV P0,A
CLR P2.5
MOV LedT0,#3
LJMP INT_T0_END
INT_T0_3:
MOV A,LED4
MOV C A,@A+DPTR
MOV P0,A
CLR P2.4
MOV LedT0,#0
LJMP INT_T0_END
INT_T0_END:
POP PSW
POP ACC
RETI
;=============================================
START:
MOV SP,#60H
CALL DELAY10MS
CALL DELAY10MS
CALL DELAY10MS
CALL AT24C01_READ_ALL
MOV A,LED1
CJNE A,#10,$+3 ;A<10 ,C=1
JNC START_RESET_24C01
MOV A,LED2
CJNE A,#10,$+3 ;A<10 ,C=1
JNC START_RESET_24C01
MOV A,LED3
CJNE A,#10,$+3 ;A<10 ,C=1
JNC START_RESET_24C01
MOV A,LED4
CJNE A,#10,$+3 ;A<10 ,C=1
JNC START_RESET_24C01
JMP START_INC
;第一次使用复位内部数值
START_RESET_24C01:
MOV LED1,#0
MOV LED2,#0
MOV LED3,#0
MOV LED4,#0
JMP START_INC_END
;加1
START_INC:
INC LED4
MOV A,LED4
CJNE A,#10,START_INC_END ;等于10,进位
MOV LED4,#00
INC LED3
MOV A,LED3
CJNE A,#10,START_INC_END
MOV LED3,#00
INC LED2
MOV A,LED2
CJNE A,#10,START_INC_END
MOV LED2,#00
INC LED1
MOV A,LED1
CJNE A,#10,START_INC_END
MOV LED1,#00
MOV LED2,#00
MOV LED3,#00
MOV LED4,#00
START_INC_END:
;储存
CALL AT24C01_WRITE_ALL
MOV TMOD,#01H ;设定T0为十六位定时模式。
MOV TH0,#0F6H ;2MS
MOV TL0,#03DH ;
[1] [2] [3] 下一页
本文关键字:程序 计数器 51单片机,单片机-工控设备 - 51单片机