一个单片机定时程序,怎么编不了,求大神帮帮
时间:10-02
整理:3721RD
点击:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led =P1^0; //LED pin,根据你自己LED连接的引脚来定义
uchar num=0,second=0,minute=0,hour=0;
void delay(unsigned int t) //延时函数,这个是11.0592MHz晶振大概延时1ms
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
TMOD =0x01; //设置定时器0为工作方式1
TH0=(65536-45872)/256; //装初值,从45872开始计数到65536溢出,共计时间大概为50us
TL0=(65536-45872)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0 =1; //启动定时器0
while(1) //程序在这里循环等待定时器中断
{
// led=0;
}
}
void LED() interrupt 1 //中断函数,1为中断号,代表定时器0中断
{
TH0=(65536-45872)/256; //重装初值,同上
TL0=(65536-45872)%256;
num++; //每溢出一次num加1
if(num == 20) //num计满20,1s时间到
{
num=0; //1s 时间
second++;
if(second==60) //1分钟
{
second=0;
minute++;
if(minute==60) //1小时
{
minute=0;
hour++;
if(hour==2) //2小时
led=~led;
}
}
}
}
#define uchar unsigned char
#define uint unsigned int
sbit led =P1^0; //LED pin,根据你自己LED连接的引脚来定义
uchar num=0,second=0,minute=0,hour=0;
void delay(unsigned int t) //延时函数,这个是11.0592MHz晶振大概延时1ms
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
TMOD =0x01; //设置定时器0为工作方式1
TH0=(65536-45872)/256; //装初值,从45872开始计数到65536溢出,共计时间大概为50us
TL0=(65536-45872)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0 =1; //启动定时器0
while(1) //程序在这里循环等待定时器中断
{
// led=0;
}
}
void LED() interrupt 1 //中断函数,1为中断号,代表定时器0中断
{
TH0=(65536-45872)/256; //重装初值,同上
TL0=(65536-45872)%256;
num++; //每溢出一次num加1
if(num == 20) //num计满20,1s时间到
{
num=0; //1s 时间
second++;
if(second==60) //1分钟
{
second=0;
minute++;
if(minute==60) //1小时
{
minute=0;
hour++;
if(hour==2) //2小时
led=~led;
}
}
}
}
有什么问题呢?等两小时led取反?
编不了是什么意思
这个程序是不是 LED 运行2小时,然后熄灭2小时,在运行,熄灭。一直这样循环呀?
这个程序是不是 LED运行2小时,在熄灭2小时 这样一直循环呀?