永发信息网

keil c51中如何利用DPTR向外部读写数据啊?

答案:2  悬赏:0  手机版
解决时间 2021-04-27 17:29
  • 提问者网友:黑米和小志
  • 2021-04-27 08:29
keil c51中如何利用DPTR向外部读写数据啊?
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-04-27 09:46
说明变量时指定不同的存储类型,编译器会自动识别内部,外部,ram,rom等等
比如:
unsigned xdata char ch; //定义成xdata就已经告诉编译器访问时用MOVX了
ch = 0x13;
编译器会自动生成类似这样的汇编:
MOV A, #13
MOV DPTR, #XXXX
MOVX @DPTR, A追问如果我要访问0x8000;这个地址,指针要怎么定义,怎么给这个地址附值?
谢谢,答好加分!追答1、使用
#define my_data_C CBYTE[0x8000] // my_data_C 指向 CODE
#define my_data_X XBYTE[0x8000] //my_data_X 指向 XRAM
使用:
char ch;
ch = my_data_C; //读code 0x8000 内容
my_data_X = ch; //向xram 0x8000 写

2、直接转换
ch = *((unsigned char code *)(0x8000));
*((unsigned char xdata *)(0x8000)) = ch;

3、指针直接赋值
unsigned char data ch;
unsigned char code *pc
unsigned char xdata *px;
pc = 0x8000;
px = 0x8000;
ch = *pc;
*px = ch;
全部回答
  • 1楼网友:荒野風
  • 2021-04-27 09:52
MOVX @DPTR, A
MOVX A, @DPTR
例如DPTR为0x1234,A为0x56,则MOVX @DPTR, A将会:
P2口输出0x12,P0口先输出0x34(可利用ALE锁存)后输出0x56(可利用WR#选通信号写入操作)。
大体上是这样,具体的时序自己翻书。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯