|
| 出处:21ic 时间: 2007-10-09 |
|
zhaohe2001 发布于 2007-10-6 22:07:00 #include <at89x52.h>
unsigned long xdata datas[] = {0x00000001,0x00000002,0x00000003, 0x00000004,0x3F065B4F,0x666D7D07, 0x7F6F777C,0x895E7971}; unsigned long xdata datas2[] = {0x00030001,0x00040002,0x00005003, 0x00060004,0x4F065B4F,0x676D7D07, 0x7F89777C}; unsigned char xdata datas3[] = {0x01,0x02,0x03,0x04,0x05,0x06, 0x07,0x08,0x09,0xf8,0xfe,0xff}; void DelayMs(unsigned int time);//延时函数
/*********************************************** *主函数 *功能:程序入口 ************************************************/ void main() { unsigned char *p; unsigned char i; unsigned char da;
DelayMs(500); //延时,等待将数据写入外部存储器
while (1) { p = datas3;
for (i = 0; i < 7; i++) { da = *p++; P1 = 0xFE;//P1, P0端口控制8个7段数码管显示 P0 = da; //
DelayMs(1000); } } }
/***************************************************** * 延时函数 *******************************************************/ void DelayMs(unsigned int time) { unsigned int i; unsigned int j; for (j = 0x00; j < time; j++) { for (i = 0x00; i < 0x189; i++); } }
datas[]中每个数怎么是8位十六进制数啊,在访问外部存储器时是怎么处理的?
zhaohe2001 发布于 2007-10-6 22:25:00 c51编程时,要访问外部设置时,用以下语句可以了吗: char xdata *px; char data temp; temp=px[100]; //这三句是不是完成了将外部RAM的第100单元的数移到temp变量中?有没有什么环境设置之类的? 汇编以后, MOV A,0xOA ADD A,#0x64 MOV DPL,A CLR A ADDC A,px(0x09) MOV DPH,A MOVX A,@DPTR MOV temp,A
里面的0x0A,px(0x09)是什么意思?为何要加上该偏量?
zhaohe2001 发布于 2007-10-7 19:20:00 unsigned long xdata datas[] = {0x00000001,0x00000002,0x00000003, 0x00000004,0x3F065B4F,0x666D7D07, 0x7F6F777C,0x895E7971};
unsigned char xdata datas3[] = {0x01,0x02,0x03,0x04,0x05,0x06, 0x07,0x08,0x09,0xf8,0xfe,0xff};
datas[]中的每个数怎么是8位十六进制数啊? 而datas3[] 中是两位数?
沈老 发布于 2007-10-7 19:41:00 // 下面程序中读的是同一单元 #include <reg51.h> #include <ABSACC.h>
void main() { char rval; rval = XBYTE[0xFF02]; P2=0xFF; rval = PBYTE[02]; } /////////////////////////// 5: void main() 6: { 7: char rval; 8: rval = XBYTE [0xFF02]; C:0x000F 90FF02 MOV DPTR,#0xFF02 C:0x0012 E0 MOVX A,@DPTR 9: P2=0xFF; C:0x0013 75A0FF MOV P2(0xA0),#0xFF 10: rval = PBYTE[02]; C:0x0016 7802 MOV R0,#0x02 C:0x0018 E2 MOVX A,@R0 11: } C:0x0019 22 RET
rainmans 发布于 2007-10-7 19:47:00 没别的意思,见谅!
computer00 发布于 2007-10-7 20:52:00 0x0A,px(0x09)中存放的是px[0]的地址了
zhaohe2001 发布于 2007-10-9 11:03:00 我手头没书,刚从网上down了一本. 不怕大家笑话,我还是要问 datas[]中访问的是不是32位的外部存储空间? 那它的地址总线是怎么连接的呢?
xwj 发布于 2007-10-9 11:08:00 总线的连接还是一样的,但数组每个单元的地址是以4位间隔增加的
懂了吗?
PS:没事是多看看书,有疑问时多看看帮助
|
| 【关闭】 【打印】 |
|
|
|
|