打印
[STM8]

stm8有关位操作问题

[复制链接]
1674|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;

使用特权

评论回复
5
s_f_tan| | 2013-11-4 09:01 | 只看该作者
bit 是 keil 才支持的,iar 编译器不支持,要不都改成结构体的位域,否则不同平台移植要修改的

使用特权

评论回复
6
拿起书本| | 2013-11-4 15:04 | 只看该作者
C语言没有bit类型 ,要不自己定义一下?

使用特权

评论回复
7
zeluo| | 2013-11-4 20:37 | 只看该作者
自己换一个写法吧  楼主

使用特权

评论回复
8
zeluo| | 2013-11-4 20:37 | 只看该作者
这样   应该相对 思想就不会拘泥了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

267

帖子

3

粉丝