本帖最后由 1stupidman 于 2010-11-28 16:25 编辑
我编了个单片机程序控制发光二极管亮灭,用内部定时器0控制,想让单片机上电2.5S后P2^7控制的发光二极管亮起来, 当中间的if(num==50) led1=0;这两行程序放在while语句中时就不运行,书上就是把这两行程序放在while语句中的,但是当这两行程序放在中断函数中的时候,就能正常运行,为什么呢,晶振是11.0592M的89C51单片机
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void init();
sbit led1=P2^7;// led1控制发光二极管亮灭
uchar num;
void mian()
{
init();
while(1)
{
if(num==50) //就是这两行程序
led1=0; // 就是这两行程序
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
//放在这里就能运行
} |