註冊會員
|
請問有人會 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
請問該怎麼做????
謝謝指導
|