at89s52单片机程序以50hz的频率循环点亮led发光管并能通过开关s1,s2调整发光时间

来源:百度知道 编辑:UC知道 时间:2024/05/11 13:26:40

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit longtime=P3^2; //增加灯的时间
sbit shorttime=P3^3; //减少灯的时间
uchar i,a;
uint num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void init()
{
num=10;
P0=0xFE;
a=P0;
}

void keyscan()
{
if(longtime==0)
{
delay(5);
if(longtime==0)
while(!longtime);
num=num+200;
}
if(shorttime==0)
{
delay(5);
if(shorttime==0)
while(!shorttime);
if(num>=200)
num=num-200;
else
num--;
if(num==0)
num++;
}
}

void main()
{
init();
while(1)
{

for(i=0;i<8;i++)
{
keyscan();
a=_crol_(a,1);
P0=a;