说明:芯片是ST89S51,晶振6M,利用定时计数器,T0做为计时,T1为外部计数。设定T0为0.1S,在T0时间内判断计数如果大于等于2,继续计数判断,一旦小于2,则跳出循环,执行新的动作,目前的问题是,程序总是不稳定,执行判断一会儿就死机,请大家帮帮我,看一下问题到底出在哪?
--------------------------------
#include <reg51.h>
#define count 50000
#define TH_M0 (65536-count)/256
#define TL_M0 (65536-count)%256
unsigned int freq= 3;
void timer_init(void);
void delay2ms(int);
sbit MOT1=P2^7;
sbit MOT2=P2^6;
main()
{
while(1)
{
timer_init();
while(freq>=2)
{
MOT1=1;
MOT2=0;
TR0 = 1;
TR1 = 1;
}
TR0 = 1;
TR1 = 1;
MOT1=0;
}
}
void timer_init(void) //定时器初始化
{
IE=0x8a;
TMOD=0x61;
TH0=TH_M0;
TL0=TL_M0;
TH1=0;TL1=0;
TR1=1;TR0=1;
}
/*=========T0中断子程序========*/
void T0_s(void)interrupt 1 // 定时/计数器中断程序
{
TH0=TH_M0;
TL0=TL_M0;
TR1=0;TR0=0;
freq=TL1;
TH1 = 0; TL1 = 0;
}
void T1_s(void) interrupt 3
{
} |