2020-01-19 19:37发布
jswd0810 发表于 2013-5-23 13:43 应该没有问题吧,我的定义 uchar bdata other_in;//此处other_in必须为bdata类型,否则编译出错 sbit mybit ...
chencc8 发表于 2013-5-22 17:09 我记得我是这样 在a.h上声明了extern bit a_0;结果报错…… 明天再试试看
Alimy 发表于 2013-5-27 10:42 不会啊。。。我一直就是这样用的。不会报错。。。报错的话就在b.h中用预编译命令。。 #ifdef _FILENAME_H ...
最多设置5个标签!
我是说在多文件的工程中如何使用sbit。
比如A模块的源文件中定义了:
uchar bdata other_in;
sbit mybit0=other_in^0;
sbit mybit1=other_in^1;
sbit mybit2=other_in^2;
sbit mybit3=other_in^3;
sbit mybit4=other_in^4;
sbit mybit5=other_in^5;
sbit mybit6=other_in^6;
sbit mybit7=other_in^7;
那么我在B模块的源文件中如何使用mybit0~7呢,
现在就算是在A模块的头文件中增加声明:extern uchar bdata other_in;
或者在B模块的源文件中声明:extern uchar bdata other_in;
然后再在B模块的源文件中声明:
sbit mybit0=other_in^0;
sbit mybit1=other_in^1;
sbit mybit2=other_in^2;
sbit mybit3=other_in^3;
sbit mybit4=other_in^4;
sbit mybit5=other_in^5;
sbit mybit6=other_in^6;
sbit mybit7=other_in^7;
都会在B.c下报错:other_in是错误的基地址
在HAL_UART.C中,定义了
uint8_t bdata SendFlag = FALSE;
sbit bSendFlag = SendFlag^0;
在HAL_UART.H中声明了
extern uint8_t bdata SendFlag ;
extern bit bSendFlag; 这里不能是sbit 了 要是bit 就ok keil 是有些问题 但这些问题不会弱
不会啊。。。我一直就是这样用的。不会报错。。。报错的话就在b.h中用预编译命令。。
#ifdef _FILENAME_H_
#define _FILENAME_H_
//写其他要写在b.h中的
extern bit a_0;
//写其他要写在b.h中的
#endif // end of FILENAME_H_
恩,我以前是直接从培训的51汇编跳到了工作环境中AVR的C。没有系统学习C51。
不清楚原来sbit定义的位变量,在声明的时候要用bit声明
一周热门 更多>