求教keil 51 转 iar 51 变量定义

2020-01-23 14:36发布

本人在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环境,不知上述定义如何转换。
请教高手!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
void_c
1楼-- · 2020-01-23 20:29
SFR KEY1=P1_;                                //按键1
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
liubeihua
2楼-- · 2020-01-23 23:27
多谢void_c指点。
另一个问题:如何插入空操作?
            在KEIL中
            #include <stdio.h>
            再插入
            _nop();

在IAR中如何?
liubeihua
3楼-- · 2020-01-24 03:10
空操作已解决:用__no_operation()替换_nop()
hais
4楼-- · 2020-01-24 07:05
 精彩回答 2  元偷偷看……
void_c
5楼-- · 2020-01-24 10:25
包包含适当的头文件。

IAR定义位变量可以:
#include <stdbool.h>
__no_init  __bit bool bit_x;
hais
6楼-- · 2020-01-24 14:09
KEIL中有 sbit POWER = P3^7;这样的用法,IAR中怎样定义?

一周热门 更多>