news 2026/10/15 17:00:20

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)

控制单独LED

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

D:\work\SDCC\include\mcs51\8051.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 ;
部分含义
__sbitSDCC 的关键字,表示“定义一个位变量”(占 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

#include<mcs51/8051.h>// 用 SDCC 的头文件,不是 REGX52.Hvoidmain(void){while(1){// P2 = 0xFE; // 11111110,P2.0/P20 输出低电平,点亮第一个 LEDP2_0=0;// 直接写 P2_0,头文件里已经定义好了}}

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

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

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

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

#include<mcs51/8051.h>// 包含P2_0的定义voidmain(void){// 按下点亮led,松开灭while(1){if(P3_1==0){// 如果按键 k1 按下P2_0=0;// led 01 亮}else{P2_0=1;// led 01 灭}}}

效果展示

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 16:59:11

书版10.0免安装版配置与发排避坑指南

简介&#xff1a;方正书版10.0免安装版是一款面向出版、印刷行业设计师与排版工作者的专业排版工具&#xff0c;解压后即可直接运行&#xff0c;省去繁琐安装步骤&#xff0c;适合需要在不同设备上快速开展排版工作的初、中级用户。压缩包为rar格式&#xff0c;整体约38.2MB&am…

作者头像 李华
网站建设 2026/10/15 16:58:25

Springer投稿LaTeX全流程指南:模板配置、参考文献样式与系统避坑

去年这个时候&#xff0c;我把做了将近两年的工作写成论文&#xff0c;准备投到Springer旗下的一本工程类期刊。写LaTeX正文本身不算难&#xff0c;真正让人崩溃的是从模板准备到投稿系统提交的整条流水线——模板下载下来第一次编译就报错&#xff0c;参考文献样式选错被编辑打…

作者头像 李华
网站建设 2026/10/15 16:58:16

FPGA数字钟设计详解:从时钟使能到动态扫描的Verilog实战

简介&#xff1a;使用Verilog语言在FPGA上开发的数字钟完整工程&#xff0c;面向有基础数字电路概念、希望上手FPGA开发的初学者或相关课程学习者。设计覆盖计时、跑表、闹钟和时间调整等常用功能&#xff0c;包含时钟分频、计时计数、显示驱动、按键防抖与闹钟比较等模块&…

作者头像 李华
网站建设 2026/10/15 16:58:03

定制软件开发版本更新怎么办?更新判断与售后责任说明

定制软件开发上线后&#xff0c;企业可能收到程序修复、安全升级、接口调整或新增功能的更新建议。处理时应先确认更新原因和影响范围&#xff0c;再核对责任费用、兼容条件、发布安排和验证方法。通常可以按照“确认原因—评估影响—确认费用与责任—测试并发布—验证结果—更…

作者头像 李华