keil C语言编程 位地址定义,Keil C编写下位机程序的小技巧和注意点

1. 用C直接操作DPTR方式

我们平常用Keil C访问总线一般是定义 unsigned char xdata  *fardptr; fardptr=0xbf00; *fardptr=0; 来访问,这就涉及到一个问题:首先增加一个占两个字节的变量,其次是每次系统多了一个赋值给这个变量,不论你是否要用这个用量。用汇编操作总线 MOVX A,@DPTR  和MOVX @DPTR,A,我们可以用混汇编方法是可以插入,但象这种类似操作多了,代码看起来不清晰,还有一种办法:

我们先定义一个宏:#define dptr(n)  (*((unsigned char xdata *)n))   然后我们就可以象写函数一样

dptr(0xbf04)=0;

dptr(0xbf05)=0xff;

dptr(0xbf06)=0x18;

这种方式用Keil C 编译成的实际形式就是:

MOV   DPTR,#0BF04H

CLR   A

MOVX  @DPTR,A

INC   DPTR                        ;这里Keil c自动优化为INC ,而不是 MOV DPTR ,#0BF05H,使执行速度更快

MOV   A,#0FFH

MOVX  @DPTR,A

INC   DPTR

MOV   A,#018H

MOVX  @DPTR,A

这种写法是和直接汇编的效率是一样高的!但反过来行不行呢?

unsigned char m;

dptr(0xbf04)=0;  m=dptr(0xb

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值