标题:
单片机用两个按键控制流水灯
[打印本页]
作者:
沧兴电子
时间:
2020-6-18 08:49
标题:
单片机用两个按键控制流水灯
一个按键正向流动,另一个按键反向流动
单片机源程序如下:
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit s2=P3^4;
sbit s3=P3^5;
uchar code table[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
uchar num;
void delayms(uint);
void main()
{
while(1)
{
if(s2==0)
{
delayms(5);
if(s2==0)
{
while(s3)
{
P1=table[num];
delayms(500);
num++;
if(num==8)
num=0;
}
}
}
if(s3==0)
{
delayms(5);
if(s3==0)
{
while(s2)
{
P1=table[num];
delayms(500);
num--;
if(num==-1)
num=7;
}
}
}
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
复制代码
作者:
2001216GZV
时间:
2021-11-6 10:36
uchar num 不能移动什么意思
作者:
KTZL
时间:
2021-11-17 15:10
//把全局变量uchar num改为局部变量就行了
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit s2=P3^4;
sbit s3=P3^5;
uchar code table[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
void delayms(uint);
void main()
{
while(1)
{
if(s2==0)
{
delayms(5);
if(s2==0)
{ uchar num=0;
while(s3)
{
P1=table[num];
delayms(500);
num++;
if(num==8)
num=0;
}
}
}
if(s3==0)
{
delayms(5);
if(s3==0)
{ uchar num=8;
while(s2)
{
P1=table[num-1];
delayms(500);
num--;
if(num==0)
num=8;
}
}
}
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
作者:
lsg0280
时间:
2021-11-26 15:11
这个程序挺好理解,谢谢
作者:
2224、、
时间:
2022-10-28 20:53
请问与没有Proteus电路图
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1