[STM8] 为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗

[复制链接]
5820|13
 楼主| douyaxiaomai 发表于 2014-10-27 17:12 | 显示全部楼层 |阅读模式
为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗
bit.bmp

为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗

为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗
 楼主| douyaxiaomai 发表于 2014-10-27 17:15 | 显示全部楼层
Error[Pe020]: identifier "bit" is undefined D:\用户目录\Desktop\STM8S103F3资料\STM8S103F3库例程\IAR\GPIO\main.c 47
596142041 发表于 2014-10-27 20:52 | 显示全部楼层
在IAR里面没有bit这数据类型,bit貌似只有51才有吧!
 楼主| douyaxiaomai 发表于 2014-10-28 08:36 | 显示全部楼层
596142041 发表于 2014-10-27 20:52
在IAR里面没有bit这数据类型,bit貌似只有51才有吧!

不是,因为我之前用iar给飞思卡尔的K60编程时是可以使用BIT的
arefeng 发表于 2014-10-28 08:52 | 显示全部楼层
可能是关键词不是“BIT”
arefeng 发表于 2014-10-28 08:54 | 显示全部楼层
 楼主| douyaxiaomai 发表于 2014-10-28 10:25 | 显示全部楼层
STM8如何定义端口?我想像51那样用sbit test=p1^0;我用的是IAR软件
2013-04-07 10:32mjtc901109 | 分类:嵌入式 | 浏览650次
分享到:
2013-04-07 14:07 提问者采纳答题闯关,过关即送礼!快来参加~
STM8不支持位寻址,不能像51那样定义。
可以用(REGx&(1<<n))来取x寄存器的第n位。
用REGx|=(1<<n);来置位x寄存器的第n位。
用REG&|=(~(1<<n));来清零x寄存器的第n位。
提问者评价
谢谢!
lu50211 发表于 2014-10-28 12:27 | 显示全部楼层
typedef struct
{
        unsigned char Bit0                :1;
        unsigned char Bit1                :1;
        unsigned char Bit2                :1;
        unsigned char Bit3                :1;
        unsigned char Bit4                :1;
        unsigned char Bit5                :1;
        unsigned char Bit6                :1;
        unsigned char Bit7                :1;
}MainTabBit_t;
typedef union
{
        MainTabBit_t        标志寄存器;
        unsigned char        Val;
}MainTab_t;
MainTab_t        MainTab[6];
//----------------------------------------------------------------------
#define        Hard标志寄存器                        MainTab[0].Val                        //硬件故障标记
#define        HardCheck标志寄存器                MainTab[1].Val                        //硬件检测标记
#define        Run标志寄存器                        MainTab[2].Val                        //运行工作标记
#define        TempEr标志寄存器                MainTab[3].Val                        //温度故障标记
#define        Key标志寄存器                        MainTab[4].Val                        //按键标记
#define        Time标志寄存器                        MainTab[5].Val                        //时间标记
ccmc 发表于 2014-10-28 15:23 | 显示全部楼层
大哥,不是什么编译器都能支持bit关键字的,就算c51也是sbit关键字
用之前花几分钟看看编译器文档吧
xuryan 发表于 2014-10-28 15:54 | 显示全部楼层
douyaxiaomai 发表于 2014-10-28 08:36
不是,因为我之前用iar给飞思卡尔的K60编程时是可以使用BIT的

你确定没做梦?IAR K60可以使用bit?
zhuanganwu 发表于 2014-10-28 17:06 | 显示全部楼层
没有的。。。。我用IAR写STM8S也试过,bit不能用!
zyz7 发表于 2016-8-23 09:41 | 显示全部楼层
8楼方法不错
sxy9150 发表于 2016-11-11 16:30 | 显示全部楼层
#include "stdbool.h"后,用bool定义Bit位,不过莫鸟用,还是占用一个字节
wforest68 发表于 2016-11-12 23:45 | 显示全部楼层
就是一个宏定义问题,可以自己定义一下,然后就可以用了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部