3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)

控制单独LED

SDCC安装目录下的这个文件里面有定义P2_0这个位置单独的定义,引用这个头文件就可以单独控制P2.0

D:\work\SDCC\include\mcs51\8051.h

h 复制代码
/* P2 */
__sbit __at (0xA0) P2_0 ;
__sbit __at (0xA1) P2_1 ;
__sbit __at (0xA2) P2_2 ;
__sbit __at (0xA3) P2_3 ;
__sbit __at (0xA4) P2_4 ;
__sbit __at (0xA5) P2_5 ;
__sbit __at (0xA6) P2_6 ;
__sbit __at (0xA7) P2_7 ;
部分 含义
__sbit SDCC 的关键字,表示"定义一个位变量"(占 1 位,不是 1 字节)
__at (0xA0) 把这个位变量定位到地址 0xA0
P2_0 变量名,代表 P2 口的第 0 位
; 语句结束

单独点亮P2.0

编译烧录如下代码,可以实现单独点亮P2.0

sdcc -mmcs51 --model-small --iram-size 256 --xram-size 0 --code-size 8192 .\key_led.c

c 复制代码
#include <mcs51/8051.h>   // 用 SDCC 的头文件,不是 REGX52.H

void main(void)
{
    while(1) {
        // P2 = 0xFE;  // 11111110,P2.0/P20 输出低电平,点亮第一个 LED
        P2_0 = 0;   // 直接写 P2_0,头文件里已经定义好了
    }
}

补充 1:P2_0 和 P2 = 0xFE; 的区别

写法 影响范围 适用场景
P2_0 = 0; 只影响 P2.0 只想控制一个灯,其他位不动
P2 = 0xFE; 影响整个 P2 口 流水灯、多个灯一起控制

补充 2:P2_0 = 0; 和 P2_0 = 1; 的效果

c 复制代码
P2_0 = 0;   // P2.0 输出低电平,灯亮(低电平点亮)
P2_0 = 1;   // P2.0 输出高电平,灯灭

按键控制LED

如图,四个按键一侧连接GND,另外一侧悬空。以k1为例,没有按下时,P3.1读取为高电平,按下时为低电平。

sdcc -mmcs51 --model-small --iram-size 256 --xram-size 0 --code-size 8192 .\key_led.c

c 复制代码
#include <mcs51/8051.h>   // 包含P2_0的定义

void main(void)
{   // 按下点亮led,松开灭
    while(1) {
        if(P3_1 == 0) {  // 如果按键 k1 按下
            P2_0 = 0;    // led 01 亮
        } else {
            P2_0 = 1;    // led 01 灭
        }
    }
}

效果展示

相关推荐
WD137298015572 小时前
WD5030L,为充电桩、工业设备、5G 基站、车载系统、消费电子提供电源,7-30V 的宽压输入
stm32·单片机·嵌入式硬件·5g·车载系统·51单片机
创界工坊工作室4 小时前
30-基于STM32的小麦烘干塔温度控制系统设计
stm32·单片机·嵌入式硬件·proteus
Zwawa5 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·单片机·嵌入式
单片机仿真设计5 小时前
【proteus仿真设计】基于 STM32 的开荒机器人遥控控制系统设计(仿真图+程序)
stm32·嵌入式硬件·机器人·proteus
smartpi_ai5 小时前
51 单片机写好了,大模型语音怎么接?17T 全驱动的现成方案、双板串口分工的边界与画板前的三项硬件确认
单片机·嵌入式硬件·学习
我先去打把游戏先6 小时前
NimBLE是什么-ESP32蓝牙协议栈详解
单片机·嵌入式硬件·ubuntu
木子n17 小时前
车载以太网与SOME/IP服务化通信实战-02.状态机与订阅:SOME/IP-SD的三态迁移、重传账与上电风暴
嵌入式硬件·网络协议·车载系统·车载以太网·some/ip
Gongsion7 小时前
30V输入耐压|1.5μA超低静态电流|200mA输出,CSM52系列:线性稳压器LDO,12V母线转3.3V/5V传感器、MCU弱电支路可靠稳压方案
单片机·嵌入式硬件·车载系统·无人机·智能家居
Steelenwang7 小时前
基于XT960的泵站监控方案
嵌入式硬件·物联网·硬件工程·智慧城市·智能硬件