本人在KEIL C51环境下有一段程序如下:
SFR KEY1=P1_; //按键1
SFR KEY2=P1^1; //按键2
SFR GREEN=P1^2; //绿 {MOD}LED
sbit RED=P1^3; //红 {MOD}LED
sbit SCL=P3^0; //时钟信号
sbit SDA=P3^1; //数据信号
sbit ir=P3^2; //接收端
sbit BEEP=P3^4; //蜂鸣器
bit head; //接收头标志
bit c_error=0; //错误标志
bit finish; //完成标志
bit repeatflag; //重复码标志
uchar idata key[64]; //
uchar data irdata[4]={0,0,0,0};
现在想转换到IAR C51环境,不知上述定义如何转换。
请教高手!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
SFR KEY2=P1^1; //按键2
SFR GREEN=P1^2; //绿 {MOD}LED
SFR???,KEIL有这种定义法?
IAR用位域。
IO口位域可以自己定义,或者直接用IAR头文件的。
比如
sbit RED=P1^3;
对应IAR:
#include <ioat89s52.h>
#define RED P1_bit.P1_3
bit head; //接收头标志
IAR可以这样定义
__bdata bitfiled bit_flags;
#define head bit_flags.bit0
#define c_error bit_flags.bit1
#define finish bit_flags.bit2
#define repeatflag bit_flags.bit3
另一个问题:如何插入空操作?
在KEIL中
#include <stdio.h>
再插入
_nop();
在IAR中如何?
IAR定义位变量可以:
#include <stdbool.h>
__no_init __bit bool bit_x;
一周热门 更多>