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); //改变这个参数可以调整电机转速
}
}
}
}