新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 課程設(shè)計(jì):矩陣鍵盤掃描(匯編)

課程設(shè)計(jì):矩陣鍵盤掃描(匯編)

作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/201611/315814.htm

//比較簡(jiǎn)單的匯編矩陣鍵盤掃描程序
//P2口高四位接列線,第四位接行線

//源程序和proteus仿真我一打包,地址:http://proteus.5d6d.com/thread-9013-1-1.html
ORG0000H
AJMPMAIN

ORG0030H
MAIN:MOVP2,#0F0H;給列送高電平
LCALLDELAY;延時(shí),使電路穩(wěn)定下來(lái)
MOVR4,00H
MOVA,P2;取P2口的值
ANLA,#0F0H;屏蔽行線的影響
CJNEA,#0F0H,L;如果有鍵按下,就跳轉(zhuǎn)到L
DESPLAY:
MOVA,R7
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP1,A
AJMPMAIN

L: LCALLDELAY;延時(shí)去除抖動(dòng)
MOVA,P2;重新取值
JBACC.4,L1;P2.4這一列有鍵按下?沒(méi)有則跳轉(zhuǎn)到L1
MOVR3,#00H;R3用作記列號(hào)
AJMPQ1

L1: JBACC.5,L2
MOVR3,#01H
AJMPQ1

L2: JBACC.6,L3
MOVR3,#02H
AJMPQ1

L3:JBACC.7,MAIN
MOVR3,#03H
AJMPQ1

Q1: MOVP2,#0FH;給行送高電平
LCALLDELAY;延時(shí),穩(wěn)定電路
MOVA,P2;取值
ANLA,#0FH;屏蔽高四位
JBACC.0,Q2;判斷是不是第0行,不是則轉(zhuǎn)移
MOVR4,#00H;如果是,那把0送給R4(R4存行(轉(zhuǎn)換為鍵號(hào)))
AJMPJIA

Q2: JBACC.1,Q3
MOVR4,#04H
AJMPJIA

Q3: JBACC.2,Q4
MOVR4,#08H
AJMPJIA

Q4: JBACC.3,MAIN
MOVR4,#0CH
AJMPJIA

JIA: MOVA,R3 ;行號(hào)加上列號(hào)就是改鍵的值
ADDA,R4
MOVR7,A;調(diào)整后放在R7寄存器中
AJMPMAIN

DELAY:MOVR6,#20H;仿真時(shí)測(cè)試延時(shí)為13ms

Q6: MOVR5,#0BBH
DJNZR5,$
DJNZR6,Q6
RET

//下面為0-f的字形表
TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H
DB7CH,39H,5EH,79H,71H;

END



評(píng)論


技術(shù)專區(qū)

關(guān)閉