单片机计时

来源:百度知道 编辑:UC知道 时间:2024/06/15 03:08:15
我要设计一个单片机程序,就是一个按纽按下,就开始计时,5秒的时候亮一盏灯,30S一盏,45一盏,65一盏。 求程序
然后灯是一直亮的。后面没有变化了

按你的要求给你写了个简单程序,可用定时器写。下边是不用定时器写的。如按你的要求,按键接P1.0另一边接地,低电平说明按键按下。LED灯我习惯用低电平来点亮。程序如:
#include<reg51.h>
#define uchar unsigned char

sbit start=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit LED4=P1^4;
uchar count=0;

void delayms(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}

void delay5s(int x)
{
;//自己重写一个或者按上边改一下也可以
}

main()
{
start=1; //置输入
LED1=1;
LED2=1;
LED3=1;
LED4=1;
for(;;)
{
if(start==0)
{
delayms(20);// 20ms延时防抖动
if(start==0)
{
delay5s(1); //5s 5s延时函数照1ms函数改下就可以了。
LED1=0;
delay5s(6); //30s
LED2=0;
delay5s(9); //45s
LED3=0;
delay5s(13); //65s
LED4=0;
while(start==0) //等待按键解放
}
}
}
}

这种学习态度?没程序给你