这是我做的一个项目,开始运行正常,后来突然就程序不运行了,百思不得其解,后来把一个LED程序烧写进去测试,发现单片机变慢了。
使用STC11F02E,通过定时器中断翻转LED,程序如下:
#include"reg51.h"
#define uchar unsigned char
sbit FMQ =P3^5;
sbit LED = P3^7;
void timer0_init()
{
TMOD=0x21; //定时器1工作方式2 定时器0 工作方式1
TH0=(65536-50000)/256; //定时50ms
TL0=(65536-50000)%256;
ET0=1; //使能定时器0中断
EA=1; //开启总中断
TR0=1; //启动定时器0
}
void main()
{
FMQ = 0;
timer0_init();
while(1)
{
;
}
}
void timer0() interrupt 1
{
uchar times;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
times++;
if(times==20)
{
LED = ~LED;
}
}
程序运行的结果是LED近10秒才翻转一次,这个太奇怪了。
有经验的来看看!
|