C51 拓展总线编程总结

C51 拓展总线编程基本架构
总线结构
可以看出,8位数据总线游P0口组成,16位地址总线(最大寻址64K)由P0(地8位地址) 和 P2(高4位地址),控制总线则由P3口及相关引脚控制,如ATE脚控制的是地址锁存,!WR(P36写信号)---->当写数据时会产生负脉冲信号,!RD(P37写信号)---->当读数据时会产生负脉冲信号

总线使用的例子

编写程序时,使用的C51 绝对地址访问
C51 keil 提供了三种访问绝对地址的方法
1.绝对宏:
在程序中,用“
#include “absacc.h”
”即可使用其中定义的宏来访问绝对地址,包括: CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD 具体使用可看一看absacc.h便知

例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD [0x0002];指向外RAM的0004h地址
2. _at_关键字
直接在数据定义后加上***at*** const即可,但是注意: (1)绝对变量不能被初使化; (2)bit型函数及变量不能用_at_指定。 例如:
idata struct link list at 0x40;指定list结构从40h开始。
xdata char text[25b] at 0xE000;指定text数组从0E000H开始
提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。
**3.**指针

unsigned char xdata *Port; //指针类型是外部RAM(xdata)

void main(void)
{
u32 volatile i=0;
Port=0x40FF; //赋予指针地址(外部ram)0x40FF
*Port = 0x55; //0x40FF地址赋值为0x55;
while(1);
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值