导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]怎么用c编写MOV @DPTR,A????[monk5469]

 *第18251篇: [求助]怎么用c编写MOV @DPTR,A????

  
楼 主:monk5469 2007年9月4日12:30
 [求助]怎么用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这句汇编?
请版主和各位高手指教,谢谢!

  
2楼:mochaowu 2007年9月9日14:10
 8051对XRAM访问,必需用MOVX指令
8051 C语言可用_at_指定变量地址
unsigned int xdata DATAdptr _at_ 0x1000;//写到XRAM的首地址
DATAdptr = 0x1234; //没必要太繁

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:单片机程序开发,提供PIC,EMC单片机及兼容IC13554926387

[下一篇主题]:招聘行政助理(女)中专以上学历 提供吃住