標題:
單片機用兩個按鍵控制流水燈
[打印本頁]
作者:
滄興電子
時間:
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.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1