?? key_led11
字號:
KEY_VALUE_OUT:
POP PSW
POP ACC
RET
;***************************************************************
;***************************************************************
;LED顯示輸出程序
;***************************************************************
TIME_MODE_SEL:
PUSH ACC
PUSH PSW
MOV A,KEY_VALUE
ANL A,#0F0H ;屏蔽低四位
MODE1: ;顯示方式11-14 LED_DISPLAY1: LED逐個左移點亮
CJNE A,#10H, MODE2 ;判斷是否為模式1
MOV A,KEY_VALUE
ANL A,#0FH ;屏蔽高四位
TIME11:
CJNE A,#01H,TIME12 ;判斷顯示時間是否為0。5S
JNB T05flag,TIME15 ;出口返回
CLR T05flag ;清0。5S到時間標志位
LCALL LED_DISPLAY1 ;調(diào)顯示方式1
LJMP TIME15 ;出口返回
TIME12:
CJNE A,#02H,TIME13 ;判斷顯示時間是否為1。0S
JNB T10flag,TIME15 ;出口返回
CLR T10flag ;清1。0S到時間標志位
LCALL LED_DISPLAY1 ;調(diào)顯示方式1
LJMP MT_OUT ;出口返回
TIME13:
CJNE A,#03H,TIME14 ;判斷顯示時間是否為1。5S
JNB T15flag,TIME15;出口返回
CLR T15flag ;清0。5S到時間標志位
LCALL LED_DISPLAY1 ;調(diào)顯示方式1
LJMP TIME15 ;出口返回
TIME14:
CJNE A,#04H,TIME15 ;判斷顯示時間是否為2。0S
JNB T20flag,TIME15 ;出口返回
CLR T20flag ;清2。0S到時間標志位
LCALL LED_DISPLAY1 ;調(diào)顯示方式1
LJMP TIME15 ;出口返回
TIME15:
LJMP MT_OUT
MODE2: ;顯示方式21-24 LED_DISPLAY2: LED逐個右移點亮
CJNE A,#20H, MODE3 ;判斷是否為模式2
MOV A,KEY_VALUE
ANL A,#0FH ;屏蔽高四位
TIME21:
CJNE A,#01H,TIME22 ;判斷顯示時間是否為0。5S
JNB T05flag,TIME25 ;出口返回
CLR T05flag ;清0。5S到時間標志位
LCALL LED_DISPLAY2 ;調(diào)顯示方式2
LJMP TIME25 ;出口返回
TIME22:
CJNE A,#02H,TIME23 ;判斷顯示時間是否為1。0S
JNB T10flag,TIME25 ;出口返回
CLR T10flag ;清1。0S到時間標志位
LCALL LED_DISPLAY2 ;調(diào)顯示方式2
LJMP TIME25 ;出口返回
TIME23:
CJNE A,#03H,TIME24 ;判斷顯示時間是否為1。5S
JNB T15flag,TIME25 ;出口返回
CLR T15flag ;清0。5S到時間標志位
LCALL LED_DISPLAY2 ;調(diào)顯示方式2
LJMP TIME25 ;出口返回
TIME24:
CJNE A,#04H,TIME25 ;判斷顯示時間是否為2。0S
JNB T20flag,TIME25 ;出口返回
CLR T20flag ;清2。0S到時間標志位
LCALL LED_DISPLAY2 ;調(diào)顯示方式2
LJMP TIME25 ;出口返回
TIME25:
LJMP MT_OUT
MODE3: ;顯示方式31-34 LED_DISPLAY3: LED流水燈左移
CJNE A,#30H, MODE4 ;判斷是否為模式3
MOV A,KEY_VALUE
ANL A,#0FH ;屏蔽高四位
TIME31:
CJNE A,#01H,TIME32 ;判斷顯示時間是否為0。5S
JNB T05flag,MT_OUT ;出口返回
CLR T05flag ;清0。5S到時間標志位
LCALL LED_DISPLAY3 ;調(diào)顯示方式3
LJMP MT_OUT ;出口返回
TIME32:
CJNE A,#02H,TIME33 ;判斷顯示時間是否為1。0S
JNB T10flag,MT_OUT ;出口返回
CLR T10flag ;清1。0S到時間標志位
LCALL LED_DISPLAY3 ;調(diào)顯示方式3
LJMP MT_OUT ;出口返回
TIME33:
CJNE A,#03H,TIME34 ;判斷顯示時間是否為1。5S
JNB T15flag,MT_OUT ;出口返回
CLR T15flag ;清1。5S到時間標志位
LCALL LED_DISPLAY3 ;調(diào)顯示方式3
LJMP MT_OUT ;出口返回
TIME34:
CJNE A,#04H,MT_OUT ;判斷顯示時間是否為2。0S
JNB T20flag,MT_OUT ;出口返回
CLR T20flag ;清2。0S到時間標志位
LCALL LED_DISPLAY3 ;調(diào)顯示方式3
LJMP MT_OUT ;出口返回
MODE4: ;顯示方式41-44 LED_DISPLAY4: LED流水燈右移
CJNE A,#40H,MT_OUT ;判斷是否為模式4
MOV A,KEY_VALUE
ANL A,#0FH ;屏蔽高四位
TIME41:
CJNE A,#01H,TIME42 ;判斷顯示時間是否為0。5S
JNB T05flag,MT_OUT ;出口返回
CLR T05flag ;清0。5S到時間標志位
LCALL LED_DISPLAY4 ;調(diào)顯示方式4
LJMP MT_OUT ;出口返回
TIME42:
CJNE A,#02H,TIME43 ;判斷顯示時間是否為1。0S
JNB T10flag,MT_OUT ;出口返回
CLR T10flag ;清1。0S到時間標志位
LCALL LED_DISPLAY4 ;調(diào)顯示方式4
LJMP MT_OUT ;出口返回
TIME43:
CJNE A,#03H,TIME44 ;判斷顯示時間是否為1。5S
JNB T15flag,MT_OUT ;出口返回
CLR T15flag ;清1。5S到時間標志位
LCALL LED_DISPLAY4 ;調(diào)顯示方式4
LJMP MT_OUT ;出口返回
TIME44:
CJNE A,#04H,MT_OUT ;判斷顯示時間是否為2.0S
JNB T20flag,MT_OUT ;出口返回
CLR T20flag ;清2。0S到時間標志位
LCALL LED_DISPLAY4 ;調(diào)顯示方式4
LJMP MT_OUT ;出口返回
MT_OUT:
POP PSW
POP ACC
RET
;***************************************************************
;***************************************************************
;流水燈執(zhí)行子程序1,2---拉屏程序
;P1.0-P1.7以一定的時間間隔TIME_LED來逐個點亮
;***************************************************************
LED_DISPLAY1: ;LED逐個左移點亮
PUSH ACC
PUSH PSW
MOV P1,DISP_REG ;送P1顯示
SETB C
MOV A,DISP_REG
RLC A ;左移
ANL A,DISP_REG
MOV DISP_REG,A
JC LED_DISP1
MOV DISP_REG,#0FEH
LED_DISP1:
POP PSW
POP ACC
RET
LED_DISPLAY2: ;LED逐個右移點亮
PUSH ACC
PUSH PSW
MOV P1,DISP_REG ;送P1顯示
SETB C
MOV A,DISP_REG
RRC A ;右移
ANL A,DISP_REG
MOV DISP_REG,A
JC LED_DISP2
MOV DISP_REG,#7FH
LED_DISP2:
POP PSW
POP ACC
RET
;***************************************************************
;***************************************************************
;流水燈執(zhí)行子程序3,4
;P1.0-P1.7以一定的時間間隔TIME_LED來流水點亮
;入口參數(shù)
;流水燈正反流動顯示標志位:FOLLOW_BACK
;LED狀態(tài):LED_STATE
;***************************************************************
LED_DISPLAY3: ;LED流水燈左移
PUSH ACC
PUSH PSW
MOV A,DISP_REG ;送上次顯示狀態(tài)
MOV P1,A ;流水燈正向顯示輸出
RL A
MOV DISP_REG,A ;將狀態(tài)回送
POP PSW
POP ACC
RET
LED_DISPLAY4: ;LED流水燈右移
PUSH ACC
PUSH PSW
MOV A,DISP_REG ;送上次顯示狀態(tài)
MOV P1,A ;流水燈正向顯示輸出
RR A
MOV DISP_REG,A ;將狀態(tài)回送
POP PSW
POP ACC
RET
;***************************************************************
;***************************************************************
;中斷定時器0的中斷子程序
;***************************************************************
TIMER0:
PUSH ACC
PUSH PSW
MOV TH0,#0D8H ;重裝記數(shù)初數(shù),定時時間為10mS
MOV TL0,#0F0H
SETB T10MSflag ;置位10MS的定時時標位
DEC TIME_05 ;0.5S記數(shù)器減1
DEC TIME_10 ;1.0S記數(shù)器減1
DEC TIME_15 ;1.5S記數(shù)器減1
DEC TIME_20 ;2.0S記數(shù)器減1
MOV A,#00H ;定時0.5S記數(shù)器記數(shù)程序
CJNE A,TIME_05,T05_OUT
MOV TIME_05,#10 ;0.5S記數(shù)器重裝記數(shù)值
SETB T05flag ;置位0.5S的定時時標位
T05_OUT:
;定時1.0S記數(shù)器記數(shù)程序
CJNE A,TIME_10,T10_OUT
MOV TIME_10,#20 ;1.0S記數(shù)器重裝記數(shù)值
SETB T10flag ;置位1.0S的定時時標位
T10_OUT:
;定時1.5S記數(shù)器記數(shù)程序
CJNE A,TIME_15,T15_OUT
MOV TIME_15,#30 ;1.0S記數(shù)器重裝記數(shù)值
SETB T15flag ;置位1.0S的定時時標位
T15_OUT:
;定時10S記數(shù)器記數(shù)程序
CJNE A,TIME_20,T20_OUT
MOV TIME_20,#40 ;2.0S記數(shù)器重裝記數(shù)值
SETB T20flag ;置位2.0S的定時時標位
T20_OUT:
POP PSW
POP ACC
RETI
;***************************************************************
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -