找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1360|回复: 3
打印 上一主题 下一主题
收起左侧

还是linux下的sdcc问题,请大佬给予指导

[复制链接]
跳转到指定楼层
楼主
ID:656911 发表于 2020-10-8 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据类型扩充:
1、sfc:特殊功能寄存器声明
举例:
__sfc __at 0x80 led;
将P0口声明为led

#define led P0;
将P0口宏预处理为led

2、sbit:特殊功能位声明
举例:
__sbit __at 0x80 led;
将P0_0口声明为led

问题点:

sbit怎么用#define?
另外bit取反为什么不能用,比如led=~led就报错。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:656911 发表于 2020-10-8 14:07 | 只看该作者
报错内容为:
using ~ on bit/bool/unsigned char variables can give unexpected results due to promotion to int
回复

使用道具 举报

板凳
ID:656911 发表于 2020-10-8 14:48 | 只看该作者
取反确实看的教材没写清楚,正确方式为:
!符号是位取反(是“位”),只针对位变量。
~符号是按位取反(是“按位”),针对字节变量
回复

使用道具 举报

地板
ID:745431 发表于 2021-9-13 16:10 | 只看该作者
在“#define led P0”可用前,一定需要 #include 一个定义了IO口的头文件,例如你 #include "stc15fxx.h" 之后就可以直接 #define led P0了,要注意没有分号。
在stc15fxx.h 里会有如下:
#define _P0 0x80
SFR(P0, 0x80);          //1111,1111 端口0
SBIT(P00, _P0, 0);
SBIT(P01, _P0, 1);
SBIT(P02, _P0, 2);
SBIT(P03, _P0, 3);
SBIT(P04, _P0, 4);
SBIT(P05, _P0, 5);
SBIT(P06, _P0, 6);
SBIT(P07, _P0, 7);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表