![]() |
請問有人會 8051 嗎?? 請幫忙看看 程式 謝謝。
共陰極 7段顯示器 跑馬燈
問題 是 asm 我不會 移動 TABLE 的 index ORG 0000H TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH MOV DPTR,#TABLE //這是 把table MOV P1,#7 MOVC A,@A+DPTR MOV P2,A ACALL DELAY ------------------------------------------------- #include<AT89X52.h> #include<INTRINS.h> code unsigned char table[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, }; void delayms(unsigned int time); main() { while(1) { unsigned int t; unsigned int m; unsigned char y; unsigned char x; for (x=0; x<2;x++) for (y=0; y<8;y++) { P1=y; P2=table[8*x+y]; delayms(30); } } } C的話,寫出來了 問題1 請問 asm 怎麼 移動 DPTR(據說 這是 pointer) TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH MOV DPTR,#TABLE //這是 把table MOV P1,#7 MOVC A,@A+DPTR MOV P2,A ACALL DELAY 這樣 會在 最右邊的顯示器 顯示 0(3FH) ,請問 怎麼樣令它 繼續 往下顯示 也就是說 顯示1 (06H) 請用程式碼 表達 謝謝 第2個問題 ORG 0000H TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH (第一個) DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,3FH (第二個) MOV DPTR,#TABLE //這是 把table MOV P1,#7 MOVC A,@A+DPTR MOV P2,A ACALL DELAY 若我 第1次 要顯示 8個分別對應 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH 第2次 要顯示 8個分別對應 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,3FH 請問該怎麼做???? 謝謝指導 |
http://tw.myblog.yahoo.com/redkimkim...65&page=1&sc=1
這裡可以參考看看~ 很久沒有摸這些 書本 模擬器 早已送人 ~~:on_22: :on_14: |
DPTR是一個TABLE開始的位置(記憶體位置)
所以一開始是3FH(記憶體內容) 也就是會顯示0 要顯示1,就是DPTR的下一個位置 所以是DPTR+1個位置 MOV A,1 MOVC A,@A+DPTR #@老鼠符號是代表位置 MOV P2,A ==== 再來是要想如何自動+1 到你想要的位置再回到0顯示了 |
所有時間均為台北時間。現在的時間是 05:37 PM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *