最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

4乘3鍵盤匯編源程序請教

作者:笨鳥急飛 欄目:技術(shù)交流
4乘3鍵盤匯編源程序請教
我在《8051單片機實踐與應(yīng)用》(清華大學(xué)出版社出版)一書中看到有關(guān)4乘3鍵盤的匯編程序,有些地方不明白,請高手指教。原理圖的接法是:p1.0-p1.3接4個橫列,p1.5-p1.7接3個豎列。本書給的部分源程序是這樣寫的:

             org    00h
       start:mov    r4,$06h  ;清除30H-35H的地址
             mov    r0,#30h
       clear:mov    @r0,#00h
             inc    r0
             djnz   r4,clear
       l1:   mov    r3,#0f7h ;掃描初值,p1.3=0
             mov    r1,#00h  ;取碼指針
       l2:   mov    a,r3     ;開始掃描
             mov    p1,a     ;將掃描值送p1
             mov    a,p1     ;讀入p1值,判斷是否有鍵按下
             mov    r4,a     ;存入r4,以判斷是否放開
             setb   c
             mov    r5,#03h  ;掃描p1.5-p1.7
        l3:  rlc    a        ;將按鍵值左移一位
             jnc    keyin    ;判斷c=0?有鍵按下則c=0,跳至keyin
             inc    r1       ;c=1則表示沒按,將取碼指針值加1
             djnz   r5,l3    ;3列掃描完畢了嗎?
我的問題是將¥0f7h=111110111b送給累加器,為什么左移,為什么利用判斷c 是否等于0就能判斷是否有按鍵按下。謝謝。

2樓: >>參與討論
coldra
這樣的
        org    00h
       start:mov    r4,$06h  ;清除30H-35H的地址
             mov    r0,#30h
       clear:mov    @r0,#00h
             inc    r0
             djnz   r4,clear
       l1:   mov    r3,#0f7h ;掃描初值,p1.3=0
             mov    r1,#00h  ;取碼指針
       l2:   mov    a,r3     ;開始掃描
             mov    p1,a     ;將掃描值送p1
             mov    a,p1     ;讀入p1值,判斷是否有鍵按下
             mov    r4,a     ;存入r4,以判斷是否放開
;以上把P1.3置低電平,我想這些IO口都應(yīng)該加有上拉
             setb   c
             mov    r5,#03h  ;掃描p1.5-p1.7
        l3:  rlc    a        ;將按鍵值左移一位
             jnc    keyin    ;判斷c=0?有鍵按下則c=0,跳至keyin
             inc    r1       ;c=1則表示沒按,將取碼指針值加1
             djnz   r5,l3    ;3列掃描完畢了嗎?
以上表示將a左移,依次判斷p1.7-p1.5是否按上,如果p1.7在與p1.3線交叉點的鍵按下,p1.7讀為0,則a左移后c為0,可確定該鍵了,跳到keyin,如果沒有,則再左移,看p1.6與p1.3的鍵按下否,同理,直到p1.5。

覺得這個程序并不完整,應(yīng)該還要改變掃描初值0f7h,為0fb,0fd,0fe,來判斷p1.2,p1.1,p1.0p這些線,還要繼續(xù)加循環(huán)才是


3樓: >>參與討論
hui7744
mov    r4,$06h
start:mov    r4,$06h  ;清除30H-35H的地址

這條指令是不是應(yīng)該改成:MOV   R4,#06H


4樓: >>參與討論
笨鳥急飛
感謝樓上兩位,特別是2樓的。
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
哪位仁兄知道電腦上的COM、LPT和USB的引腳定義發(fā)給我,謝謝!
關(guān)于2N5551雪崩三極管
請教大家一個問題?測試一個產(chǎn)品,要測試什么參數(shù)!
有哪位工程師用過AD7328這個芯片,大家一起交流一下經(jīng)驗
請問貼片三極管 S1A 36 是什么型號
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號