C语言 初学者 51单片机 将程序第五行的 #define led P2 替换成sbit led= P2;程序不报错但流水灯实验不行

发布网友 发布时间:2022-04-23 21:14

我来回答

3个回答

热心网友 时间:2023-10-09 21:06

首先,sbit led= P2,这个写法是错误的,虽然编译时不报错,但编译后执行程序时却是错误的。
sbit 是定义一个引脚的,注意,只是定义一个引脚,而 P2是一个并行口,有8个引脚,是不能sbit 来定义,可以用 sfr 定义。
#define 并不是定义引脚的,也不是定义并行口,只是一个宏替换,就是程序中的led 换成P2后再编译。
所以,sbit 和 #define根本就不是一回事,更谈不上什么替换了。
两者毫无关系。

热心网友 时间:2023-10-09 21:06

sbit 只能定义一个位,P2是八个位,所以不能这么写,把sbit 改为sfr

热心网友 时间:2023-10-09 21:06

sfr led= P2;

追问也就是说#define严格来说是不对的对吗? 但这里用define也能显示,并且没有报错啊
求解谢谢!!!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com