[STM8] stm8有关位操作问题

[复制链接]
2140|7
 楼主| gpjun2008 发表于 2013-11-1 09:07 | 显示全部楼层 |阅读模式
【unsigned char Z1_Ram _at_ 0x25;         //Z1[拔卡]】
用的IAR会出现报错Error[Pe020]: identifier "bit" is undefined ,但是keil就不会报错,这是什么情况,程序是51移植的。
 楼主| gpjun2008 发表于 2013-11-1 09:08 | 显示全部楼层
还有添加#include <intrins.h>头文件编译后里面的 extern bit           _testbit_ (bit);也报错了。说是bit未定义。求解
香水城主 发表于 2013-11-1 14:03 | 显示全部楼层
标准C中没有bit这个类型,所以它不具备在不同编译环境之间移植的能力。
 楼主| gpjun2008 发表于 2013-11-1 17:20 | 显示全部楼层
香水城主 发表于 2013-11-1 14:03
标准C中没有bit这个类型,所以它不具备在不同编译环境之间移植的能力。

//void transbit(bit d)
1:我把上面bit这句改成了下面的char类型,if也是直接判断char。这个应该没问题吧。
2:还有其他的移植有没有什么更方便的方法。
void transbit(char d)                  //送1位数据到液晶显示控制器子程序
{  PB_DDR|=0x20;                       //先送数据到数据口线DI  
   PB_CR1|=0x20;
   PB_CR2&=0xdf;
   if(d)
     PB_ODR |=0x20;
   else
     PB_ODR &=0xdf;
s_f_tan 发表于 2013-11-4 09:01 | 显示全部楼层
bit 是 keil 才支持的,iar 编译器不支持,要不都改成结构体的位域,否则不同平台移植要修改的
拿起书本 发表于 2013-11-4 15:04 | 显示全部楼层
C语言没有bit类型 ,要不自己定义一下?
zeluo 发表于 2013-11-4 20:37 | 显示全部楼层
自己换一个写法吧  楼主
zeluo 发表于 2013-11-4 20:37 | 显示全部楼层
这样   应该相对 思想就不会拘泥了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

267

帖子

3

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