国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)的LCD1602液晶屏密碼鎖匯編程序

51單片機(jī)的LCD1602液晶屏密碼鎖匯編程序

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
;說(shuō) 明:首先顯示器提示輸入密碼,密碼在12.5S內(nèi)輸入有效,
; 輸入次三次錯(cuò)誤報(bào)警10S,輸入正確開(kāi)門(mén),7秒后返回初態(tài)
; 以上參數(shù)均可在主程序里設(shè)定,修改系統(tǒng)密碼在程序的結(jié)尾
RS BIT P2.7
RW BIT P2.6
E BIT P2.5
ENTER BIT 22H.0
OPEN BIT P3.6
SPEAK BIT P3.7
PASSBUF EQU 40H
KEYNUMBER EQU 41H ;存放識(shí)別后的按鍵號(hào)
ORG 0000H
AJMP MAIN
ORG 0003H
JMP KEY_INT
ORG 000BH
AJMP INTT0
ORG 001BH
AJMP INTT1
ORG 0030H
;========== 主程序開(kāi)始 ==============
MAIN: MOV 30H,#07H ;輸入密碼為7位 最高只可設(shè)15位
MOV 42H,#200 ;設(shè)定報(bào)警的時(shí)間,42H單元里的數(shù)*50MS
MOV 43H,#250 ;設(shè)定開(kāi)門(mén)時(shí)間 14的倍數(shù)(實(shí)際上液晶顯示器執(zhí)行指令占用了時(shí)間,開(kāi)門(mén)時(shí)間會(huì)比14*250MS大)
;44H號(hào)單元存放輸入錯(cuò)誤的次數(shù)
;45H為定時(shí)器0中斷次數(shù)
;46H為定時(shí)器1中斷次數(shù)
MOV 47H,#250 ;輸入密碼時(shí)間設(shè)定,50MS倍數(shù)
MOV SP,#60H
CLR OPEN
CLR SPEAK ;初始化輸出設(shè)備
CLR ENTER ;標(biāo)志位初始化
MOV TMOD,#11H ;定時(shí)器工作方式2
MOV TH0,#3CH ;初值50MS
MOV TL0,#0BH
MOV TH1,#3CH
MOV TL1,#0BH
SETB EA
SETB ET0
SETB ET1
MOV TCON,#00000000B ;電平觸發(fā)
START: MOV R0,30H
MOV R1,#31H
SS1: MOV @R1,#00H
INC R1
DJNZ R0,SS1 ;將輸入密碼緩沖單元清零
MOV P1,#0FH ;初始化按鍵口
MOV R1,#31H ;從31號(hào)單元開(kāi)始存放按建輸入的密碼
CLR 20H ;報(bào)警標(biāo)志清零
CLR 21H ;密碼超時(shí)標(biāo)志
MOV 46H,#00H ;超時(shí)后對(duì)定時(shí)器中斷次數(shù)清零,便于下一輪重新計(jì)時(shí)
INIT: ACALL SELLCD ;設(shè)定液晶工作方式
ACALL LINE1 ;在第一行顯示
MOV DPTR,#MES_P ;顯示請(qǐng)輸入密碼
ACALL DISPLAY
setb EX0 ;開(kāi)中斷,允許鍵盤(pán)輸入
KEYIN: JB 21H,ERR ;超時(shí)轉(zhuǎn)到錯(cuò)誤程序
JNB ENTER,KEYIN ;等待ENTER按下
CLR ENTER
clr EX0 ;密碼輸入完后鎖定鍵盤(pán)
;當(dāng)使用邊沿觸發(fā)時(shí)用上面的指令為什么禁止不了中斷???
;========== 密碼判斷程序 ============
COMP:
MOV DPTR,#PASS
MOV R4,30H ;密碼的長(zhǎng)度
MOV A,#0
MOV R1,#31H
LOOP: MOV R5,A
MOVC A,@A+DPTR
MOV PASSBUF,A ;取出系統(tǒng)設(shè)定的密碼
MOV A,@R1 ;從31號(hào)單元開(kāi)始取出輸入的密碼
CJNE A,PASSBUF,ERR ;比較
MOV A,R5
INC A
INC R1 ;取下一位
DJNZ R4,LOOP
;正確
MATCH: MOV A,#01H
ACALL ENABLE ;清屏,光標(biāo)復(fù)位
ACALL LINE1 ;從第一行開(kāi)始顯示
MOV DPTR,#MES_C
ACALL DISPLAY ;顯示"請(qǐng)進(jìn)"
ACALL LINE2
MOV DPTR,#TAB_1
ACALL DISPLAY
SETB OPEN ;開(kāi)門(mén)
MOV 44H,#00H ;輸入錯(cuò)誤次數(shù)清零
MOV R6,43H
ACALL DELAY
CLR OPEN ;復(fù)位
JMP START
;錯(cuò)誤
ERR: ACALL BACK
MOV R6,#03H
ACALL DELAY
ACALL BACK ;輸錯(cuò)提示音,鳴兩下
MOV A,#01H
ACALL ENABLE
ACALL LINE1
MOV DPTR,#MES_E
ACALL DISPLAY ;顯示錯(cuò)誤
MOV R6,#40H
ACALL DELAY
INC 44H
MOV A,44H
CJNE A,#03H,EE0
EE0: JC ERROUT ;輸錯(cuò)不到三次返回
MOV 44H,#00H ;清零
ACALL WRANING ;報(bào)警
ERROUT: JMP START
;=========== 按鍵中斷服務(wù)程序 ==========
KEY_INT:push acc
push psw
clr ex0
acall delay10ms ;延時(shí)消抖
SETB TR1 ;啟動(dòng)定時(shí)器
ACALL SMKEY ;按鍵識(shí)別
MOV A,KEYNUMBER ;返回按鍵號(hào)
ACALL BACK ;按鍵發(fā)聲
MOV R3,A
CJNE R3,#0BH,K1 ;ENTER是否按下
SETB ENTER
clr tr1 ;按下確認(rèn)后關(guān)畢定時(shí)器
mov 46h,#00h ;對(duì)中斷次數(shù)清零
AJMP KEY_RTN
K1: ADD A,#30H ;將按鍵號(hào)轉(zhuǎn)換為ASCⅡ碼
MOV @R1,A ;將輸入的密碼存入緩沖單元
INC R1 ;修改地址
ACALL WRDATA ;輸入一位顯示一個(gè)"*"
KEY_RTN:pop psw
pop acc
setb ex0
RETI
;=========== 按鍵識(shí)別程序 ==========
SMKEY:
MOV A,P1
ANL A,#0FH
WKEY: MOV B,A ;反轉(zhuǎn)法查詢(xún)
MOV P1,#0F0H
NOP
MOV A,P1
ANL A,#0F0H
ORL A,B
MOV P1,#0FH ;還原P1口初態(tài)
CJNE A,#0EEH,WKEY1
MOV KEYNUMBER,#00H
AJMP RETURN
WKEY1: CJNE A,#0EDH,WKEY2
MOV KEYNUMBER,#01H
AJMP RETURN
WKEY2: CJNE A,#0EBH,WKEY3
MOV KEYNUMBER,#02H
AJMP RETURN
WKEY3: CJNE A,#0E7H,WKEY4
MOV KEYNUMBER,#03H
AJMP RETURN
WKEY4: CJNE A,#0DEH,WKEY5
MOV KEYNUMBER,#04H
AJMP RETURN
WKEY5: CJNE A,#0DDH,WKEY6
MOV KEYNUMBER,#05H
AJMP RETURN
WKEY6: CJNE A,#0DBH,WKEY7
MOV KEYNUMBER,#06H
AJMP RETURN
WKEY7: CJNE A,#0D7H,WKEY8
MOV KEYNUMBER,#07H
AJMP RETURN
WKEY8: CJNE A,#0BEH,WKEY9
MOV KEYNUMBER,#08H
AJMP RETURN
WKEY9: CJNE A,#0BdH,WKEY10
MOV KEYNUMBER,#09H
AJMP RETURN
WKEY10: CJNE A,#0BbH,WKEY11
MOV KEYNUMBER,#0AH
AJMP RETURN
WKEY11: CJNE A,#0B7H,RETURN
MOV KEYNUMBER,#0BH ;判斷哪個(gè)鍵按下,返回相應(yīng)按鍵號(hào)碼
RETURN: MOV P1,#0FH
NOP
NOP
MOV A,P1
CPL A
ANL A,#0FH
JNZ RETURN ;等待按鍵松開(kāi)
RET

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉