[求助]怎么用c编写MOV @DPTR,A????最近我在用单片机c语言编写程序时遇到一个问题,想请教版主和各位高手:
对C8051F020单片机的4k的XRAM访问时,用的汇编语言应该是:
MOV DPTR, 1000H;
MOV A, #1234;
MOV @DPTR,A;
我把它用C语言表达如下:
unsigned int xdata *dptr;//写到XRAM的首地址
unsigned int A;
...
A=0x1234;
dptr=0x1000; //设写到的XRAM首地址为1000H
*dptr=A;
用这种方法,编译也没有出错。
而我的实际程序中,是先依次从单片机flash中读出数,再依次把这些值写到XRAM。程序为:
unsigned int xdata *flash_pread; //所读的flash首地址
unsigned int xdata *dptr;
unsigned int A;
unsigned int i=0; //计数
...
flash_pread=0x3000; //设所读的flash首地址为3000H
dptr=0x1000;
for(i=0;i <52;i++)
{
A=*(flash_pread+i);
*(dptr+i)=A; //注:进过断点测试后,问题好像出在这一步
}
...
这样写完后,编译也没有错,但运行后,i的值居然超过了52(比如达到1488),写XRAM也没有成功,但我就是想不通为什么,那么怎么用c编写MOV @DPTR,A这句汇编?
请版主和各位高手指教,谢谢!