铜锣烧学电子 2022-11-15 18:26 采纳率: 78.6%
浏览 14
已结题

关于单片机暂停和启动的问题,如何解决

问题遇到的现象和发生背景

给单片机流水灯加个暂停和启动

用代码块功能插入代码,请勿粘贴截图

#include<reg52.h>
unsigned int keyvalue;
void Delay10ms()
{
unsigned char i, j;

i = 234;
j = 115;
do
{
    while (--j);
} while (--i);

}
void Timer0Init()
{
//AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xE0; //设置定时初始值
TH0 = 0xB1; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0=1;
EA=1;
}
void keyscan()
{
P1=0xf0;//扫描法
if(P1 != 0xf0)
{
Delay10ms();
if(P1 != 0xf0)
{
switch(P1)
{
case 0xe0:keyvalue=0;break;
case 0xd0:keyvalue=1;break;
case 0xb0:keyvalue=2;break;
case 0x70:keyvalue=3;break;
}
P1=0x0f;
switch(P1)
{
case 0x0e:keyvalue=keyvalue;break;
case 0x0d:keyvalue=keyvalue+4;break;
case 0x0b:keyvalue=keyvalue+8;break;
case 0x07:keyvalue=keyvalue+12;break;
}
while(P1!=0x0f);//松手检测
}
}
}
void main()
{
Timer0Init();
while(1){
keyscan();
}
}
unsigned int i,ledn=9,was=0;
void time_iso() interrupt 1
{
TL0 = 0xE0; //设置定时初始值
TH0 = 0xB1; //设置定时初始值
i++;
if(i>=50)
{
i=0;
ledn++;
if(ledn<=8)
{
if(keyvalue==0)
P2=(0x01<<ledn);
if(keyvalue==1)
P2=
(0x80>>ledn);
}
else{
if(keyvalue==0)
ledn=0;P2=0x01;
if(keyvalue==1)
ledn=0;P2=
0x80;
}
if(keyvalue==2){
was++;
if(was<=4)
{
switch (was)
{
case 1:P2=0x7e;break;
case 2:P2=0xbd;break;
case 3:P2=0xdb;break;
case 4:P2=0xe7;break;
}
}
else
was=0;
}
if(keyvalue==3)
{
was++;
if(was<=4)
{
switch (was)
{
case 1:P2=0xe7;break;
case 2:P2=0xdb;break;
case 3:P2=0xbd;break;
case 4:P2=0x7e;break;
}
}
else
was=0;
}
}
}

运行结果及报错内容

希望让4和5号键能实现暂停和启动

我的解答思路和尝试过的方法

我试过用定义一个标志,但是不知道怎么放进去。

我想要达到的结果

实现暂停和启动

  • 写回答

1条回答 默认 最新

  • 风正豪 嵌入式领域优质创作者 2022-11-15 19:18
    关注

    首先给个建议,把代码放进代码块中。我这样用手机看代码很难受。索性不看了。
    先夸一下你,能够想到标志位。我们可以建立一个标志位flag,flag刚开始为0。如果我们按下按键5,flag为1表示启动流水灯,按下按键4,flag为0表示停止流水灯。然后我们在main函数的死循环里面,先进行按键扫描。之后就是flag判断,如果flag为1进行流水灯。else,所有灯关闭,或者什么不写保持现在状态。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日
  • 请采纳用户回复 11月16日
  • 创建了问题 11月15日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值