Social Icons

twitterfacebookgoogle plusrss feedemail

6/13/2010

微處理機期末補考程式碼


這次的考試接線的部份還蠻重要的,接錯線就幾乎等於寫不出來
以下我簡單講解一下,如果要討論的更深入,可以MAIL、留言、跟我約時間等等我會講解得比較仔細。

1.      接線
接線的部份主要由兩個第一個是七段顯示器的abcdefg腳位第二個是七段顯示器ABCD的腳位,如果你排線接的是abcdefg的那邊,理論上那麼就做不出讓其它的八段顯示器亮,也就是只能亮一顆。
如果你排線接的是ABCD腳位的那邊,後來沒跑出來,我只能說你倒楣吧。
(詳細接線見下方說明)

2.      程式碼
這次程式碼的部份沒有用到新的東西,都是用到以前學的,我把它分成兩部分來說明
(1)   按鍵
按鍵的部份,在上課的時候助教就有稍微說明過了,這我就不說明了。
(2)   印在七段顯示器上
根據我們以前所學的要在七段顯示器上面顯示數字,那麼前面高位元是用來判斷哪顆七段顯示器,低位元則是用來判斷要顯示的數值

     例如      我要在第3顆七段顯示器上面顯示52進位碼也就是這樣
0
0
1
0
0
1
0
1
          |<---高位元---- >|    |< ---低位元--->|
     再舉一個例子你可能就會更懂

     例如     我要在第2顆七段顯示器上面顯示82進位碼也就是這樣
0
1
0
0
1
0
0
0
          |< ---高位元---- >|   |< ---低位元--->|

     所以如果按下鍵盤上的按鍵5,主程式(LOOP)則會跳到副程式KEY5的地方,這時候我只要將001001012(2516)直接輸入到P2(七段顯示器的輸出)即可。
    
     那麼要如何產這串二進位碼呢?

小提示:
如果你要寫得很簡單,你可以直接MOV P2, 00100101B,一行就結束,不過在這邊我是要教你怎麼做,所以就寫的詳細一點,其實也是為了下一篇文章鋪路,寫法很多自己取捨
     
       其實如果你如果真的懂了我上面的說明,以下就會很簡單
      首先例如如果按下鍵盤上的5,那麼接下來程式應該會跳到key5的地方執行,當一進入到key5時,我們則將05先放到A暫存器,而B暫存器則存放要在哪顆七段顯示器顯示的值(20),接著B暫存器做ORL的邏輯運算,這時候就會得到我們要的二進位碼(2516),之後每一個按鍵都這樣做就可以了。


如果不想用我的程式碼,想要用自己的,那麼我教你怎麼用軟體驗證
軟體驗證方法教學:
UV4模擬中斷實驗與七段顯示器影片 -BY阿添

以下程式碼可以先參考我有使用軟體驗證過,但還沒實際在機器上跑過(已驗證),如果有錯我會再通知大家。

程式碼:
ORG 00H
MOV B,#20H//左邊數過來第二顆七段顯示器
LOOP:
MOV  P1,#11101111B
JNB  P1.0,KEY0
JNB  P1.1,KEY1
JNB  P1.2,KEY2
JNB  P1.3,KEY3

MOV  P1,#11011111B
JNB  P1.0,KEY4
JNB  P1.1,KEY5
JNB  P1.2,KEY6
JNB  P1.3,KEY7

MOV  P1,#10111111B
JNB  P1.0,KEY8
JNB  P1.1,KEY9
JNB  P1.2,KEYA
JNB  P1.3,KEYB

MOV  P1,#01111111B
JNB  P1.0,KEYC
JNB  P1.1,KEYD
JNB  P1.2,KEYE
JNB  P1.3,KEYF
JMP LOOP
KEY0:MOV A,#00H
ORL A,B
MOV P2,A
JMP LOOP
KEY1:MOV A,#01H
ORL A,B
MOV P2,A
JMP LOOP
KEY2:MOV A,#02H
ORL A,B
MOV P2,A
JMP LOOP
KEY3:MOV A,#03H
ORL A,B
MOV P2,A
JMP LOOP
KEY4:MOV A,#04H
ORL A,B
MOV P2,A
JMP LOOP
KEY5:MOV A,#05H
ORL A,B
MOV P2,A
JMP LOOP
KEY6:MOV A,#06H
ORL A,B
MOV P2,A
JMP LOOP
KEY7:MOV A,#07H
ORL A,B
MOV P2,A
JMP LOOP
KEY8:MOV A,#08H
ORL A,B
MOV P2,A
JMP LOOP
KEY9:MOV A,#09H
ORL A,B
MOV P2,A
JMP LOOP
KEYA:MOV A,#0AH
ORL A,B
MOV P2,A
JMP LOOP
KEYB:MOV A,#0BH
ORL A,B
MOV P2,A
JMP LOOP
KEYC:MOV A,#0CH
ORL A,B
MOV P2,A
JMP LOOP
KEYD:MOV A,#0DH
ORL A,B
MOV P2,A
JMP LOOP
KEYE:MOV A,#0EH
ORL A,B
MOV P2,A
JMP LOOP
KEYF:MOV A,#0FH
ORL A,B
MOV P2,A
JMP LOOP
END
另外給各位一個提醒:
程式碼這樣已經很短請盡量不要再增加行數了,否則會跳出TARGET OUT OF RANGE的錯誤訊息。這是因為 JNB沒辦法跳那麼多行,解決辦法很簡單,很好想。
2010/06/18
接線部分說明:
(1)

(2)

(3)

祝各位考試順利
另外拜託考試時請把註解刪掉,不要直接複製貼上,直接貼就太扯了喔
2010/06/23
原本不想說明的,但是怕大家做出來不知道正確性,所以我今天又補了一張圖片,當程式碼能夠順執行時,七段顯示器所顯示的每個數字的圖形如下圖所示。
(請注意:F為每個燈都是熄的,請做出成果之後不要以為按鍵壞掉了,在這邊我不說明為什麼,請自己翻羅設實習設計的課本)
為什麼不是顯示正確的A-F而是顯示成七段顯示器的A-F(也就是下方這樣)?想知道的再問,我不想說明。

沒有留言:

張貼留言

俗話說
凡走過必留下痕跡,凡住過必留下鄰居
凡爬過必留下樓梯,凡來過必留下IP
看過文章之後歡迎留下您寶貴的意見喔!

 
 
无觅相关文章插件,迅速提升网站流量