使用安装在主板上的按钮,
每次按一次时,字符将停止或继续流动
§注意:PA1不能用作开关输入。
开关输入改为PG4。PG4端子和按钮键
连接。使用PG4时DOWN/RUN
必须将位置设置为RUN(共享PG4)。
如何写使用安装在主板上的按钮, 每次按一次时,字符将停止或继续流动单片机的代码
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- 阿里嘎多学长 2023-04-06 10:32关注
以下内容部分参考ChatGPT模型:
首先,我们需要将PG4引脚配置为输入模式,代码如下:sbit SW = P3^2; // PG4对应P3.2 void InitSwitch() { SW = 1; // 先将PG4拉高 P3M1 &= ~0x04; // 将P3.2设置为普通输入模式 P3M0 |= 0x04; }
然后,在主程序中,我们需要不断检测PG4引脚的状态,如果检测到PG4被按下,则停止或继续字符的流动。具体实现如下:
bit flag = 1; // 定义一个标志位,用于判断字符是否需要流动 void main() { InitSwitch(); InitUART(); while(1) { if(SW == 0) // 检测到PG4被按下 { flag = !flag; // 取反标志位,停止或继续流动 while(!SW); // 等待PG4被松开 } if(flag) // 如果标志位为真,即需要流动字符 { SendString("Hello World!"); // 发送字符串 } } }
完整代码如下:
#include <STC89.H> sbit SW = P3^2; // PG4对应P3.2 void InitSwitch() { SW = 1; // 先将PG4拉高 P3M1 &= ~0x04; // 将P3.2设置为普通输入模式 P3M0 |= 0x04; } void InitUART() { TMOD &= 0x0F; // 设置定时器1为模式1 TMOD |= 0x20; TH1 = 0xFD; // 波特率设置为9600bps TL1 = 0xFD; PCON &= 0x7F; // SMOD=0,波特率不加倍 TR1 = 1; // 启动定时器1 SCON = 0x50; // 设置串口为模式1 ES = 1; // 打开串口中断 EA = 1; // 打开总中断开关 } void SendChar(unsigned char c) { SBUF = c; while(TI == 0); TI = 0; } void SendString(char *s) { while(*s) { SendChar(*s++); } } bit flag = 1; // 定义一个标志位,用于判断字符是否需要流动 void main() { InitSwitch(); InitUART(); while(1) { if(SW == 0) // 检测到PG4被按下 { flag = !flag; // 取反标志位,停止或继续流动 while(!SW); // 等待PG4被松开 } if(flag) // 如果标志位为真,即需要流动字符 { SendString("Hello World!"); // 发送字符串 } } } void UART() interrupt 4 { if(RI == 1) { RI = 0; } }
如果我的建议对您有帮助、请点击采纳、祝您生活愉快
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)
- ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。