C51一些小问题-------区分sbit和define

在学习C51的时候,发现有点搞混了sbit和define

参考了一下这两位博主

(24条消息) sbit以及#define_看到我请叫我去学习-!的博客-CSDN博客

(24条消息) sbit 使用方法_ly_zszcyx的博客-CSDN博客_单片机sbit用法

总的来说(后补充)

就是define只能用在并行口
sbit用在指定具体到某个引脚

图中有栗子 define是对应P0整个 sbit具体到P1^1 P1^2

55729d39c1314f6cb8c1f59932afc723.jpg

 

1、sbit

关键字:定义

sbit只能在51 上用


运用:

sbit led = P0^0

 

将P00端口定义为led

此时想使P0端口输出低电平则可以

led = 0;


第一种方法:sbit位变量名=地址值 

第二种方法:sbit位变量名=SFR名称^变量位地址值   

第三种方法:sbit位变量名=SFR地址值^变量位地址值

2、#define

关键词:替换

作用:

第一:将IO口换一个名字,如:#define LED P2    意思就是将P2口重新命名为LED;
第二:宏定义,将一个语句集合命名,例如:#define goto {ML1=1;ML2=0;MR1=1;MR2=0}

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要连接一个4位共阳数码管到C51单片机上,并且连接对应的引脚。然后,编写C语言程序来控制数码管显示字符“C51--4--”。 以下是一份简单的程序示例: ```c #include <reg51.h> // 导入C51单片机的寄存器定义 // 定义数码管的引脚 sbit LED_A = P2^2; sbit LED_B = P2^3; sbit LED_C = P2^4; sbit LED_D = P2^5; sbit LED_E = P2^6; sbit LED_F = P2^0; sbit LED_G = P2^1; sbit LED_DP = P2^7; void delay(unsigned int x) // 延时函数,用于控制数码管的显示时间 { unsigned int i, j; for (i = x; i > 0; i--) for (j = 110; j > 0; j--); } void main() { while (1) // 循环显示字符 { LED_A = 1; LED_B = 1; LED_C = 1; LED_D = 0; LED_E = 0; LED_F = 1; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 0; LED_B = 1; LED_C = 1; LED_D = 1; LED_E = 0; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 0; LED_B = 0; LED_C = 1; LED_D = 1; LED_E = 1; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 1; LED_B = 0; LED_C = 1; LED_D = 0; LED_E = 0; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 1; LED_B = 0; LED_C = 1; LED_D = 0; LED_E = 0; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 0; LED_B = 0; LED_C = 1; LED_D = 1; LED_E = 1; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 LED_A = 0; LED_B = 1; LED_C = 1; LED_D = 1; LED_E = 0; LED_F = 0; LED_G = 1; LED_DP = 0; delay(1000); // 延时1秒 } } ``` 需要注意的是,该程序只显示了字符“C51--4--”,如果需要显示其他字符,需要修改相应的引脚控制代码。同时,需要根据具体的硬件连接情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值