导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→STC2051外中断测脉宽串口输出,那里出问题了。值不对[sydjh]

 *第23684篇: STC2051外中断测脉宽串口输出,那里出问题了。值不对

  
楼 主:sydjh 2008年5月24日11:44
 STC2051外中断测脉宽串口输出,那里出问题了。值不对
串口传输这里可以没有问题的了。用查询方式可以正确得到脉宽的值。但是用外中断就不行。。。不知道程序那里有问题。
void main ()
{ /*M1和M0组合控制IO配置,00双向标准IO,01为推挽输出。10仅为输入(高阻),11开漏*/
 //WDT_CONTR=0x3f;
 P1M1=0xb9;//10111001
 P1M0=0x89;//10001001
 P3M1=0xfc;//11111100
 P3M0=0xf8;//11111000
 TL0=0; TH0=0;  TL1=0;  TH1=0; EA=0;  ET1=0; ET0=0;  EX1=0;  EX0=0; 
 AUXR=0xc0;//11000000,定时器1采用晶振频率不分频频为时钟源.快速计数
 TMOD=0x99;//10011101,bit7/3:INT低电平控制;bit6/2:0定时,1计数;bit5/1:bit5/4/1/0:设置16位计数器.
 EA=1;
 dcf=0;  //定时器1采用系统时钟计数,定时器0采用Q1时钟计数。 
 a=0; 
 b=0;
 P1_4=1;
 P3_2=0;
 red_key();
 c=0x00;
 flage=0;
/////////////////////////
while(1)
{   AUXR=0xc0;
 //while(op2==0)
 // {EX1=0;EA=0;}
   //TMOD=0x99;
   TMOD=0x99;      //设T0为方式1(GATE=1)
   TR1=1;//开计数器
   IT1=1; /*下降沿产生中断*/
   EX1=1;//允许INT1(P3.3中断)
   EA=1;
  while(c==1)
   { EA=0;
     TR1=0;
     send_uart(a);
     send_uart(b);
     TMOD=0x09;
     AUXR=0xc0;      
         c=0;
    while(op1==1)
    {;}    
   }
  
   //EX1=0;EA=0;
    //WDT_CONTR=0x3f;
}      
}    
int0() interrupt 2 //using 1      //INT0中断函数 }
{   //send_uart(0XFF);
 //AUXR=0xc0;      // 保存计数器值
 a=TH1;
 b=TL1;
 TH1=0;
 TL1=0;  
 c++;
 //TR0=1; 

>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:单片机群45977061,欢迎加入

[下一篇主题]:ET-2008AAPLUS语言学习机电路板