求助:谁帮我看看这段程序的问题

[复制链接]
2778|2
 楼主| yanghl 发表于 2010-2-26 06:31 | 显示全部楼层 |阅读模式
说明:芯片是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
   {
   }
秋天落叶 发表于 2010-2-26 09:41 | 显示全部楼层
最好先仿真看看,程序死在哪了,再找问题
 楼主| yanghl 发表于 2010-2-26 12:46 | 显示全部楼层
没有仿真器啊~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

82

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部