![]() |
發布時間: 2019-5-30 19:53
正文摘要:1.利用單片機設計一個簡單的以8位邏輯電平開關K0~K7作為8位密碼輸入,設兩路密碼鎖,第一路密碼為10101010,第二路密碼為11110000。2.以8個發光二極管作為輸出,當輸入的密碼與第一路密碼相同時,第一個發光二極管點 ... |
按照你的代碼 1、第一組密碼不匹配的時候,B寄存器沒有被設置;到第二組判斷密碼的時候,如果匹配,其后從B寄存器取值,那么這個值是什么值? 2、如果第一組密碼匹配了,輸出到8100H后,會繼續執行第二組的密碼判斷。此時A寄存器中是0xFE,第二組密碼不匹配,轉LOOP。事實上,第一組密碼如果匹配了,就沒有必要執行第二組密碼的判斷。當第一組不匹配,執行第二組密碼判斷的時候,沒有必要去做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對應的LED MOV DPTR,#DATA_OUT MOV A,#0FEH MOVX @DPTR,A SJMP LOOP LOOP1: CJNE A,#11110000B,LOOP2 ;匹配第一組密碼,點亮Bit1對應的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 |