打印

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

[复制链接]
1748|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

主题

78

帖子

0

粉丝