?? key_ledbb
字號:
LCALL LED_DISPLAY2 ;調(diào)顯示方式2
LJMP TIME25 ;出口返回
TIME23:
CJNE A,#03H,TIME24 ;判斷顯示時間是否為1。5S
JNB T15flag,TIME25 ;出口返回
CLR T15flag ;清0。5S到時間標(biāo)志位
LCALL LED_DISPLAY2 ;調(diào)顯示方式2
LJMP TIME25 ;出口返回
TIME24:
CJNE A,#04H,TIME25 ;判斷顯示時間是否為2。0S
JNB T20flag,TIME25 ;出口返回
CLR T20flag ;清2。0S到時間標(biāo)志位
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到時間標(biāo)志位
LCALL LED_DISPLAY3 ;調(diào)顯示方式3
LJMP MT_OUT ;出口返回
TIME32:
CJNE A,#02H,TIME33 ;判斷顯示時間是否為1。0S
JNB T10flag,MT_OUT ;出口返回
CLR T10flag ;清1。0S到時間標(biāo)志位
LCALL LED_DISPLAY3 ;調(diào)顯示方式3
LJMP MT_OUT ;出口返回
TIME33:
CJNE A,#03H,TIME34 ;判斷顯示時間是否為1。5S
JNB T15flag,MT_OUT ;出口返回
CLR T15flag ;清1。5S到時間標(biāo)志位
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到時間標(biāo)志位
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到時間標(biāo)志位
LCALL LED_DISPLAY4 ;調(diào)顯示方式4
LJMP MT_OUT ;出口返回
TIME42:
CJNE A,#02H,TIME43 ;判斷顯示時間是否為1。0S
JNB T10flag,MT_OUT ;出口返回
CLR T10flag ;清1。0S到時間標(biāo)志位
LCALL LED_DISPLAY4 ;調(diào)顯示方式4
LJMP MT_OUT ;出口返回
TIME43:
CJNE A,#03H,TIME44 ;判斷顯示時間是否為1。5S
JNB T15flag,MT_OUT ;出口返回
CLR T15flag ;清1。5S到時間標(biāo)志位
LCALL LED_DISPLAY4 ;調(diào)顯示方式4
LJMP MT_OUT ;出口返回
TIME44:
CJNE A,#04H,TIME55 ;判斷顯示時間是否為2.0S
JNB T20flag,MT_OUT ;出口返回
CLR T20flag ;清2。0S到時間標(biāo)志位
LCALL LED_DISPLAY4 ;調(diào)顯示方式4
LJMP MT_OUT ;出口返回
TIME55:
MOV KEY_VALUE,#11H
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ù)
;流水燈正反流動顯示標(biāo)志位: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的定時時標(biāo)位
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的定時時標(biāo)位
T05_OUT:
;定時1.0S記數(shù)器記數(shù)程序
CJNE A,TIME_10,T10_OUT
MOV TIME_10,#20 ;1.0S記數(shù)器重裝記數(shù)值
SETB T10flag ;置位1.0S的定時時標(biāo)位
T10_OUT:
;定時1.5S記數(shù)器記數(shù)程序
CJNE A,TIME_15,T15_OUT
MOV TIME_15,#30 ;1.0S記數(shù)器重裝記數(shù)值
SETB T15flag ;置位1.0S的定時時標(biāo)位
T15_OUT:
;定時10S記數(shù)器記數(shù)程序
CJNE A,TIME_20,T20_OUT
MOV TIME_20,#40 ;2.0S記數(shù)器重裝記數(shù)值
SETB T20flag ;置位2.0S的定時時標(biāo)位
T20_OUT:
POP PSW
POP ACC
RETI
;***************************************************************
;***************************************************************
;取鍵盤按鍵狀態(tài)標(biāo)志程序
;***************************************************************
KEY_VALUE_GET:
PUSH ACC
PUSH PSW
K1G_NEXT0:
JNB K1_flag,K2G_NEXT0
CLR K1_flag ;清K1按鍵盤有效標(biāo)志位
MOV A,KEY_GET_REG
K1_STA0: ;KEY進(jìn)入狀態(tài)
CJNE A,#00H,K1_STA1 ;判按鍵狀態(tài)是否為00
CLR KEY_LED_flag ;清KEY/LED顯示標(biāo)志位,設(shè)為KEY顯示狀態(tài)
MOV KEY_GET_REG,#01H;將按鍵狀態(tài)寄存器設(shè)為01,即模式選擇狀態(tài)
ORL KEY_VALUE,#80H ;指示模式選擇
ANL KEY_VALUE,#0F7H
LJMP KEY_VALUE_OUT ;跳轉(zhuǎn)返回
K1_STA1: ;KEY模式選擇狀態(tài)
CJNE A,#01H,K1_STA2 ;判按鍵狀態(tài)是否為01
MOV KEY_GET_REG,#02H;將按鍵狀態(tài)寄存器設(shè)為02,即時間選擇狀態(tài)
ORL KEY_VALUE,#08H;指示時間選擇
ANL KEY_VALUE,#7FH
LJMP KEY_VALUE_OUT ;跳轉(zhuǎn)返回
K1_STA2: ;KEY時間選擇狀態(tài)
CJNE A,#02H,K1_STA3
MOV KEY_GET_REG,#03H
LJMP KEY_VALUE_OUT ;跳轉(zhuǎn)返回
K1_STA3:
CJNE A,#03H,K1_STA3 ;判按鍵狀態(tài)是否為02
SETB KEY_LED_flag ;置KEY/LED顯示標(biāo)志位,設(shè)為LED顯示狀態(tài)
MOV DISP_REG,#0FEH ;重新初始化顯示寄存器
MOV KEY_GET_REG,#00H;將按鍵狀態(tài)寄存器設(shè)為00,即初始進(jìn)入狀態(tài)
LJMP KEY_VALUE_OUT ;跳轉(zhuǎn)返回
K2G_NEXT0:
JNB K2_flag,KEY_VALUE_OUT
CLR K2_flag ;清K2按鍵盤有效標(biāo)志位
MOV A,KEY_GET_REG ;讀按鍵狀態(tài)寄存器
KEY_MODE: ;模式選擇
CJNE A,#01H,KEY_TIME ;判狀態(tài)是否為模式選擇方式
MOV A,KEY_VALUE ;將原鍵盤值取出
SWAP A
INC A ;將模式選擇加1,即選擇下一個LED顯示模式
ANL A,#07H ;將高四位屏蔽
CJNE A,#05H,KEY_MODE1 ;模式選擇只有1-4 四種方式
ANL A,#01H ;將低四位置為1
KEY_MODE1:
SWAP A
ANL KEY_VALUE,#0FH ;將高四位屏蔽
ORL KEY_VALUE,A
LJMP KEY_VALUE_OUT ;跳轉(zhuǎn)返回
KEY_TIME: ;時間選擇
CJNE A,#02H,KEY_VALUE_OUT ;判狀態(tài)是否為時間選擇方式
MOV A,KEY_VALUE ;將原鍵盤值取出
INC A ;將模式選擇加1,即選擇下一個LED顯示模式
ANL A,#07H ;將高四位屏蔽
CJNE A,#05H,KEY_TIME1 ;時間選擇只有1-4 四種方式
ANL A,#0F1H ;將低四位置為1
KEY_TIME1:
ANL KEY_VALUE,#0F0H ;將低四位屏蔽
ORL KEY_VALUE,A ;將KEY_VALUE返回
LJMP KEY_VALUE_OUT ;跳轉(zhuǎn)返回
KEY_VALUE_OUT:
POP PSW
POP ACC
RET
;***************************************************************
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -