A. 關於單片機查表指令時用RLC左移指令
【1】表格中存放了1024個數據,編號0-1023項。每個數據2個位元組。
【2】R3,R2,構成16位的編號。二進制格式。編號為x。
【3】第x項的數據起始地址應為 TAB+(2*x)。
【4】2*x,其實就是左移一次x。由於x是16位的。但51沒有16位循環左移指令。
【5】藉助於A,利用帶進位位循環左移RLC A指令,完成R3,R2左移一次。其中,低位的R2部分,左移時,R2最高位藉助於Cy進位位補足到R3的最低位。
理解一下RLC A這條指令的功能,影響的標志位就可以了。
B. 51單片機寄存器這個表格是什麼意思
第一列,Bit,也就是位/位域。例如Bit[3:2]就是代表這個8位寄存器中的第3位和第2位。
第二列,Name,也就是位/位域的名稱。
第三列,Reset,也就是復位後的默認值。
第四列,R/W,也就是該位/位域的讀寫屬性。RO = Read Only只讀,WO = Write Only只寫,R/W = Read/Write可讀可寫。此外也有一些特殊的玩意兒例如W1C(寫1清零)之類。
第五列,Description,功能描述。
C. 51單片機的TAB表示表格的意思,那麼它在ROM中有對應的地址嗎求大蝦!!!!!!
用匯編語言或C語言寫程序時,都可以用符號TAB表示一個表格的,其實,表格就是存放在ROM中的一組數據,既然是存放在ROM中的,就一定對應一個地址的,准確說,是一個數據表格的首地址。但是這個地址,寫程序時是不用寫出具體的地址的,是由編譯軟體來根據程序的排列而定的。
D. 求單片機AT89C52控制步進電機的程序 謝謝! 要C語言的
#include <reg52.h>
unsigned char code F_Rotation[4]={0x08,0x10,0x20,0x40};//正轉表格
unsigned char code B_Rotation[4]={0x40,0x20,0x10,0x08};//反轉表格
void Delay(unsigned int i)//延時
{
while(--i);
}
main()
{
while(1)
{
unsigned char i;
unsigned int j;
for(j=0;j<512;j++)
{
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //輸出對應的相 可以自行換成反轉表格
Delay(500); //改變這個參數可以調整電機轉速
}
}
for(j=0;j<512;j++)
{
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //輸出對應的相 可以自行換成反轉表格
Delay(500); //改變這個參數可以調整電機轉速
}
}
}
}