标题:
51单片机加减程序运行错误,求帮助
[打印本页]
作者:
柠玖
时间:
2021-11-2 21:53
标题:
51单片机加减程序运行错误,求帮助
我写的是0~9的加减,从0~9的加法是可行的。
但是按下s4就直接回到0了。没有减下去请问大佬们我哪里写错了吗
单片机源程序如下:
#include <reg51.h>
sbit s2=P3^0;
sbit s3=P3^1;
sbit s4=P3^2;
sbit we=P2^7;
sbit du=P2^6;
char code m[]={0x3f,0x06,0x5b,0x4f,0x66,0xdf6d,0x7d,0x07,0x7f,0x77};
int c=0;
void ys(int a)
{
int i,j;
for(i=0;i<a;i++)
for(j=0;j<a;j++);
}
void main()
{
while(1)
{
we=1;
P0=0xfe;
we=0;
if(s2==0)
{
ys(10);
if(s2==0)
{
du=1;
P0=0x00;
du=0;
ys(200);
}
}
if(s3==0)
{
ys(20);
if(s3==0)
{
if(c<9)
{
c++;
du=1;
P0=m[c];
du=0;
ys(200);
}
}
}
if(s4==0)
{
ys(20);
if(s4==0)
{
if(c>0)
{
c--;
du=1;
P0=m[c];
du=0;
ys(200);
}
}
}
}
}
复制代码
作者:
wulin
时间:
2021-11-3 06:25
#include <reg51.h>
sbit s2=P3^0;
sbit s3=P3^1;
sbit s4=P3^2;
sbit we=P2^7;
sbit du=P2^6;
char code m[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int c=0;
void ys(int a)
{
int i,j;
for(i=0;i<a;i++)
for(j=0;j<110;j++);
}
void main()
{
du=1;
P0=m[c];
du=0;
ys(10);
while(1)
{
we=1;
P0=0xfe;
we=0;
if(s2==0)
{
ys(10);
if(s2==0)
{
du=1;
P0=0x00;
du=0;
while(s2==0);
}
}
if(s3==0)
{
ys(20);
if(s3==0)
{
if(c<9)
{
c++;
du=1;
P0=m[c];
du=0;
while(s3==0);
}
}
}
if(s4==0)
{
ys(20);
if(s4==0)
{
if(c>0)
{
c--;
du=1;
P0=m[c];
du=0;
while(s4==0);
}
}
}
}
}
复制代码
作者:
xianfajushi
时间:
2021-11-3 06:46
https://blog.csdn.net/xianfajushi/article/details/80885105
作者:
weijoyer
时间:
2021-11-3 08:07
你搞个按键松开检测,你按着按键会一直加
作者:
13205495918
时间:
2021-11-3 08:19
是不是你的按键时间的问题,虽然只摁一下,但是对于单片机来说已经运算了好几次减法的程序
作者:
累不死的狗
时间:
2021-11-3 21:54
加一个松手检测试一下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1