Social Icons

twitterfacebookgoogle plusrss feedemail

6/14/2010

微處理機期末考程式碼(原題目)


原本的期末考試中,是叫我們做4個七段顯示器,每當按下一個按鈕,則數值會跑進七段顯示器中,並且數值會往左跑,用圖比較好說明請看下面:


四個七段顯示器如下:
0
0
0
0
當按下鍵盤上的5時,七段顯示器則顯示
0
0
0
5
當按下鍵盤上的1時,七段顯示器則顯示
0
0
5
1
當按下鍵盤上的7時,七段顯示器則顯示
0
5
1
7
依此類推



這次考試如果會的話,不會很難,相信很多人一樣都是卡在接線(助教考前都沒說,還好我考試中剛好被我找到),這次的程式碼我就不在像上一篇一樣獎的那麼仔細了,就直接貼程式碼,想了解的可以看看,不懂得可以再詢問我

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

軟體驗證方法教學:
UV4模擬中斷實驗與七段顯示器影片 -BY阿添

程式碼:

ORG 00H
MOV B,#60H
MOV R0,#03H
MOV R3,#00H
MOV R4,#00H
MOV R5,#00H
MOV R6,#00H
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
JMP SAVE
KEY1:MOV A,#01H
JMP SAVE
KEY2:MOV A,#02H   
JMP SAVE
KEY3:MOV A,#03H   
JMP SAVE
KEY4:MOV A,#04H   
JMP SAVE
KEY5:MOV A,#05H    
JMP SAVE
KEY6:MOV A,#06H    
JMP SAVE
KEY7:MOV A,#07H  
JMP SAVE
KEY8:MOV A,#08H  
JMP SAVE
KEY9:MOV A,#09H  
JMP SAVE
KEYA:MOV A,#0AH  
JMP SAVE
KEYB:MOV A,#0BH   
JMP SAVE
KEYC:MOV A,#0CH    
JMP SAVE
KEYD:MOV A,#0DH  
JMP SAVE
KEYE:MOV A,#0EH  
JMP SAVE
KEYF:MOV A,#0FH
SAVE:
MOV 30H,A
MOV A,R0
XRL A,#03H
JZ L1
MOV A,R0
XRL A,#02H
JZ L2
MOV A,R0
XRL A,#01H
JZ L3
L4:
MOV A,R5
ANL A,#0FH
ORL A,#00H
MOV R6,A
MOV A,R4
ANL A,#0FH
ORL A,#20H
MOV R5,A
MOV A,R3
ANL A,#0FH
ORL A,#40H
MOV R4,A
MOV A,30H
MOV B,#60H
ORL A,B
MOV R3,A
JMP C1
L3:
MOV A,R4
ANL A,#0FH
ORL A,#20H
MOV R5,A
MOV A,R3
ANL A,#0FH
ORL A,#40H
MOV R4,A
MOV R6,#00H
MOV A,30H
MOV B,#60H
ORL A,B
MOV R3,A
JMP C1
L2:
MOV A,R3
ANL A,#0FH
ORL A,#40H
MOV R4,A
MOV A,30H
MOV B,#60H
ORL A,B
MOV R3,A
MOV R5,#20H
MOV R6,#00H
JMP C1
L1:
MOV A,30H
MOV B,#60H
ORL A,B
MOV R3,A
MOV R4,#40H
MOV R5,#20H
MOV R6,#00H
C1:
MOV R7,#40
LOOP2:
MOV P2,R3
CALL DELAY
MOV P2,R4
CALL DELAY
MOV P2,R5
CALL DELAY
MOV P2,R6
CALL DELAY
DJNZ R7,LOOP2
DEC R0
JMP LOOP
DELAY:
MOV R1,#14
D1:MOV R2,#00H
DJNZ R2,$
DJNZ R1,D1
RET
END

另外給各位一個提醒:
程式碼這樣已經很短請盡量不要再增加行數了,否則會跳出TARGET OUT OF RANGE的錯誤訊息。這是因為 JNB沒辦法跳那麼多行,解決辦法很簡單,很好想。

沒有留言:

張貼留言

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

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