#include <reg51.h> #include <stdio.h> #include <string.h> //stdio.h,string.h用于printf函数原型 void delay(unsigned int z); void uart_init(void); //串行口初始化 sbit button = P2^0; // P2.0引脚定义 sbit led = P2^2; // P2.0引脚定义 bit last_button_state; // 记录上一次按钮状态,使用bit类型匹配 void main() { led = 0; uart_init(); // 初始化按钮状态 last_button_state = button; printf("Button state monitoring started\n"); printf("Initial button state: %d\n", button); while(1) { // 实时输出按钮状态用于调试 //printf("Current button state: %d\r", button); // 检测按钮状态变化 if (button != last_button_state) { // 延长消抖时间确保稳定检测 delay(20); // 再次检测按钮状态,确认变化 if (button != last_button_state) { last_button_state = button; // 输出按钮状态变化 if (button == 0) { led = 1; printf("\nP2.0 state: Pressed (0)\n"); } else { led =0; printf("\nP2.0 state: Released (1)\n"); } } } // 主循环延迟 delay(50); } } void uart_init(void) { TMOD=0x20; //即0010 0000,定时器/计数器1,工作方式2 TH1=0xfd; //设置波特率为9600 TL1=0xfd; TR1=1; //启动定时器/计数器1 SCON=0x50; //SM0=0;SM1=1;REN=1;0101 0000.串口工作方式1,允许串行控制 PCON=0x00; //设置SMOD=0 IE=0x80; //EA=1;ES=0;只开总中断,关闭串口中断避免干扰按钮检测 TI=1; //中断请求标志位,直接使用printf必须加入此句才能实现发送 } void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }通过按钮改变引脚的电平的状态并输出虚拟终端
张小明
前端开发工程师
【转载】权限控制模型
权限控制模型全解:ACL、RBAC、ABAC、PBAC、DAC、MAC 的区别与场景 来源:https://developer.volcengine.com/articles/7548835278577008690 权限控制模型全解:ACL、RBAC、ABAC、PBAC、DAC、MAC 的区别与场景 在现代企业系统、SaaS 平台、安全合…
死锁避免与银行家算法的核心在于通过动态检测资源分配后的系统状态是否处于“安全状态”,从而决定是否允许资源分配
死锁避免与银行家算法的核心在于通过动态检测资源分配后的系统状态是否处于“安全状态”,从而决定是否允许资源分配。安全状态指的是存在至少一个进程执行序列(即安全序列),使得所有进程都能顺利完成,且不会导致死锁。…
如何构建企业级「上下文图谱」非常详细收藏我这一篇就够了
最近一篇关于“上下文图谱(context graphs)”的文章,引发AI圈很多共鸣,其核心论点是:下一个万亿级平台,不会靠在既有记录型系统(systems of record)上“加点 AI”建出来,…
杰和IM1-210核心板用模块化设计重新定义工业主板开发
在工业自动化领域,主板平台长达数月的开发周期常使新产品错失良机;定型的主板平台因场景的加速迭代已难以适应新的业务需求,这些“卡脖子”难题,如今有了新的解决方案。杰和科技深刻理解工业自动化场景的严苛需求,推出…
数字员工是什么?AI销冠系统在提升销售效能中的主要作用是什么?
数字员工作为现代企业的重要创新工具,正在深刻改变业务运作的方式。通过AI销冠系统,数字员工能够自动化进行客户互动,显著提高销售效率。在业务流程中,这些数字代理通过精确的数据处理,可以快速识别客户需求并进行个性…
JSQLParser解析SQL神器
JsqlParserUtils sql解析通用工具/*** SQL解析通用工具**/ Slf4j public class JsqlParserUtils {public static String assembleDeriveQuerySql(String sql, Expression expression) {if (expression null) {return sql;}Statement parse null;try {parse CCJSqlParserUtil…