![]() |
(MCS-51)89C52的一些程式問題!?
![]() ;主程式 ; ; ORG 0000H AJMP MAIN ; ORG 0003H ;INT0中斷服務副程式起始處 AJMP INT0_INT ; ORG 0013H ;INT1中斷服務副程式起始處 AJMP INT1_INT ; MAIN: MOV SP,#30H MOV TCON,#00000000B ;設定INT0及INT1為低準為觸發 MOV IP,#00000001B ;INT0設定為高優先權 SETB EA ;致能所有的中斷 SETB EX0 ;起始INT0中斷 SETB INT0 ;將INT0設為輸入端 SETB EX1 ;起始INT1 SETB INT1 ;將INT1設為輸入端 ; MOV A,#00000000B LOOP: MOV P1,A ACALL DELAY CPL A AJMP LOOP ; ; ; INT0_INT: PUSH A PUSH PSW CLR RS1 SETB RS0 MOV R2,#07 MOV A,#11111100B LEFT: MOV P1,A ACALL DELAY RL A DJNZ R2,LEFT POP PSW POP A RETI ; ; ; INT1_INT: PUSH A PUSH PSW SETB RS1 CLR RS0 MOV R2,#07 MOV A,#01111111B RIGHT: MOV P1,A ACALL DELAY RR A DJNZ R2,RIGHT POP PSW POP A RETI ; ; ; DELAY: MOV R0,#248 DEL1: MOV R1,#200 DEL2: DJNZ R1,DEL2 DJNZ R0,DEL1 RET ; END 現在我的動作要求為 一個七段顯示器 利用外部中斷INT0,INT1 INT0中斷執行 1 -> 2 -> 3 ->.......-> 9 優先數較低 INT1中斷執行 9 -> 8 -> 7 ->.......-> 1 優先數較高 主程式中斷執行閃爍 因此必須將8個LED燈改為七段顯示器 但程式部分就不太清楚該如何改 試過一些方法及書籍都不得其解 因接觸不深效果有限 煩請高手能舉手之勞幫解 敝人也會繼續試試 多謝幫忙:on_03: |
那個七段顯示器,在電路上,要注意一下,如下圖所示
![]() 正如上圖說的,七段共有8個接腳,(7個燈+1個共陽極或共陰) 一般是買共陽,對其他的腳輸入0就會亮,如果共陰,輸入1才會亮 電路如下圖(要記得加限流電阻): ![]() 如果你要把P1接到7段顯示器 分別把 語法:
P1.0 - a MOV P1,#00000001B; 那要1的話,就是b,c都要亮,其他都是不亮,那你要對P1輸出10011111B MOV P1,#10011111B; 其他的就看你自己啦 還有更進階的寫法,查表法,就可以用來跑迴圈 可以到GOOGLE找一下 8051+查表法 或 8051+DPTR 或 8051+間接定址 |
所有時間均為台北時間。現在的時間是 04:29 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *