亚洲春色中文字幕久久久-三上亚,啪啪啪网站,国产午夜伦鲁鲁,四虎影视在线永久免费观看,中国精品视频一区二区 ,半夜妺妺叫我吃她胸,亚洲无线看天堂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