亚洲春色中文字幕久久久-三上亚,啪啪啪网站,国产午夜伦鲁鲁,四虎影视在线永久免费观看,中国精品视频一区二区 ,半夜妺妺叫我吃她胸,亚洲无线看天堂av,人妻互换免费中文字幕,被群CAO的合不拢腿H的皇后,护士的下面又湿又紧10P

標(biāo)題: 51單片機(jī)匯編語(yǔ)言八路搶答器數(shù)組越界問(wèn)題 [打印本頁(yè)]

作者: 青銅左腳    時(shí)間: 2026-7-7 22:01
標(biāo)題: 51單片機(jī)匯編語(yǔ)言八路搶答器數(shù)組越界問(wèn)題
目的:使用51單片機(jī)P0口驅(qū)動(dòng)共陽(yáng)數(shù)碼管實(shí)現(xiàn)8路搶答器,上電默認(rèn)顯示0,然后1-8按鍵被按下就顯示該數(shù)值,且后續(xù)任何按鍵按下無(wú)效,按復(fù)位鍵從來(lái)。問(wèn)題:代碼1剛上電,數(shù)碼管無(wú)任何顯示!!!;1-8按鍵功能正常。
問(wèn)題分析:通過(guò)KEIL調(diào)試發(fā)現(xiàn)初始化A=00,1:LOOP行完后A是0XC0,P0是0XC0(顯示數(shù)字0);2:第一輪結(jié)束然后跳轉(zhuǎn)到LOOP執(zhí)行完后A變成0X00(TABLE【192的偏移地址是多少?越界了所以是0X00】),P0又變?yōu)?0(顯示數(shù)字0.),然后程序不斷循環(huán)1、2
解決方案:讓循環(huán)發(fā)生在P0賦值0之后、或者每次循環(huán)都重新賦值P0為0,代碼B就是讓循環(huán)發(fā)生在P0賦值之后,這樣P0端口在沒有按鍵按下的時(shí)間都是固定值(循環(huán)前被賦值MOV P0,A)
代碼A:
KEY2 BIT P2.1
KEY3 BIT P2.2
KEY4 BIT P2.3

KEY5 BIT P2.4
KEY6 BIT P2.5
KEY7 BIT P2.6
KEY8 BIT P2.7

ORG 00H
MAIN:
     MOV A,#00
     MOV DPTR,#TABLE
LOOP:
         MOVC A,@A+DPTR
     MOV P0,A

KEYA:JB KEY1,KEYB
         MOV A,#1
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYB:JB KEY2,KEYC
         MOV A,#2
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
                 
KEYC:JB KEY3,KEYD
     MOV A,#3
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYD:JB KEY4,KEYE
     MOV A,#4
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYE:JB KEY5,KEYF
     MOV A,#5
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYF:JB KEY6,KEYG
         MOV A,#6
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYG:JB KEY7,KEYH
         MOV A,#7
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYH:JB KEY8,LOOP
         MOV A,#8
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
        

TABLE:DB 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8
      DB 0x80,0x90,0x88,0x83,0xC6,0xa1,0x86,0x8e
          END
/***********************/
代碼B:
KEY2 BIT P2.1
KEY3 BIT P2.2
KEY4 BIT P2.3

KEY5 BIT P2.4
KEY6 BIT P2.5
KEY7 BIT P2.6
KEY8 BIT P2.7

ORG 00H
MAIN:
     MOV A,#00
     MOV DPTR,#TABLE
LOOP:
         MOVC A,@A+DPTR
     MOV P0,A

KEYA:JB KEY1,KEYB
         MOV A,#1
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYB:JB KEY2,KEYC
         MOV A,#2
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
                 
KEYC:JB KEY3,KEYD
     MOV A,#3
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYD:JB KEY4,KEYE
     MOV A,#4
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYE:JB KEY5,KEYF
     MOV A,#5
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYF:JB KEY6,KEYG
         MOV A,#6
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYG:JB KEY7,KEYH
         MOV A,#7
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $
         
KEYH:JB KEY8,KEYA
         MOV A,#8
         MOVC A,@A+DPTR
     MOV P0,A
         JMP $


TABLE:DB 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8
      DB 0x80,0x90,0x88,0x83,0xC6,0xa1,0x86,0x8e
          END






作者: 188610329    時(shí)間: 2026-7-8 22:37
匯編的目的, 就是程序簡(jiǎn)單化,沒必要,把簡(jiǎn)單的應(yīng)用,搞到復(fù)雜化吧?

你的按鍵都在 P2, 數(shù)碼管在 P0, 這么寫不是更簡(jiǎn)單?

Start:
        MOV        P0,#0C0H
        MOV        DPTR,#TABLE
        CLR        A
        MOV        R2,A
Check_key:
        CPL        A
        XOR        A,P2
        JZ        Check_key
Key_Analysis:
        RRC        A
        INC        R2
        JNC        Key_Analysis
Key_Disp:
        MOV        A,R2
        MOVC A,@A+DPTR
        MOV        P0,A
        SJMP $

TABLE:DB 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8
      DB 0x80,0x90,0x88,0x83,0xC6,0xa1,0x86,0x8e
END







歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1