標題: 單片機以8位邏輯電平開關(guān)K0~K7作為8位密碼輸入,設(shè)兩路密碼鎖程序問題 [打印本頁]
作者: 山有扶蘇兒 時間: 2019-5-30 19:53
標題: 單片機以8位邏輯電平開關(guān)K0~K7作為8位密碼輸入,設(shè)兩路密碼鎖程序問題
1.利用單片機設(shè)計一個簡單的以8位邏輯電平開關(guān)K0~K7作為8位密碼輸入,設(shè)兩路密碼鎖,第一路密碼為10101010,第二路密碼為11110000。
2.以8個發(fā)光二極管作為輸出,當輸入的密碼與第一路密碼相同時,第一個發(fā)光二極管點亮。當輸入的密碼與第二路密碼相同時,第二個發(fā)光二極管點亮。如果輸入的密碼與兩路密碼都不同,則8個發(fā)光二極管全部點亮。
3.必須先輸入第一路密碼,然后輸入第二路密碼才能使第二個發(fā)光二極管點亮。
求大佬看看程序哪里錯了
- DATA_IN EQU 8000H
- DATA_OUT EQU 8100H
- ORG 0100H
- MOV A,#0FFH
- MOV DPTR,#DATA_OUT
- MOVX @DPTR,A
- LOOP:
- MOV DPTR,#DATA_IN
- MOVX A,@DPTR
- CJNE A,#10101010B,LOOP1
- MOV DPTR,#DATA_OUT
- MOV A,#0FEH
- MOV B,A
- MOVX @DPTR,A
- LOOP1:
- CJNE A,#11110000B,LOOP
- MOV A,B
- CJNE A,#0FEH,LOOP
- MOV DPTR,#DATA_OUT
- MOV A,#0FDH
- ANL A,B
- MOVX @DPTR,A
- SJMP LOOP
- END
復(fù)制代碼
作者: suncat0504 時間: 2019-5-30 22:53
按照你的代碼
1、第一組密碼不匹配的時候,B寄存器沒有被設(shè)置;到第二組判斷密碼的時候,如果匹配,其后從B寄存器取值,那么這個值是什么值?
2、如果第一組密碼匹配了,輸出到8100H后,會繼續(xù)執(zhí)行第二組的密碼判斷。此時A寄存器中是0xFE,第二組密碼不匹配,轉(zhuǎn)LOOP。事實上,第一組密碼如果匹配了,就沒有必要執(zhí)行第二組密碼的判斷。當?shù)谝唤M不匹配,執(zhí)行第二組密碼判斷的時候,沒有必要去做0xFE的判斷,因為能走到第二組,第一組鐵定不匹配。所以第二組如果匹配,可以直接輸出0xFD到8100H。
修改如下
DATA_IN EQU 8000H
DATA_OUT EQU 8100H
ORG 0100H
MOV A,#0FFH
MOV DPTR,#DATA_OUT
MOVX @DPTR,A
LOOP:
MOV DPTR,#DATA_IN
MOVX A,@DPTR
CJNE A,#10101010B,LOOP1
;匹配第一組密碼,點亮Bit0對應(yīng)的LED
MOV DPTR,#DATA_OUT
MOV A,#0FEH
MOVX @DPTR,A
SJMP LOOP
LOOP1:
CJNE A,#11110000B,LOOP2
;匹配第一組密碼,點亮Bit1對應(yīng)的LED
MOV A,#0FDH
MOV DPTR,#DATA_OUT
MOVX @DPTR,A
SJMP LOOP
LOOP2:
;第一、二租密碼都不匹配,點亮所有LED
MOV A,#00H
MOV DPTR,#DATA_OUT
MOVX @DPTR,A
SJMP LOOP
作者: 山有扶蘇兒 時間: 2019-5-31 07:29
為啥用到這在個電路上沒法實現(xiàn)?是畫錯了么?
-
$4GSLC(N`LAXWHQYWC{FVT1.png
(49.29 KB, 下載次數(shù): 41)
下載附件
2019-5-31 07:28 上傳
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |