[求助]怎么用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这句汇编? 请版主和各位高手指教,谢谢! [详细内容] |