导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:T0怎么没有运行中断?[Vieirawin]

 *第8371篇: 初学者:T0怎么没有运行中断?

  
楼 主:Vieirawin 2003年2月21日22:08
 初学者:T0怎么没有运行中断?
想用定时器T0引起中断时发送数据,同时也想设置串口波特率9600,1位停止位,8位数据
不知这样做行不行,另外用KEILC51调试时不见有T0中断产生,不知怎么回事,谁能帮小弟?
另外,也许是不会用KEILC51调试,望赐教?
void initClock(void)
{   
    TR0 = 0;
    TF0 =0;
    TMOD |= 0x01;       
    TCON = 0x00;
    TH0 = 0x00;
    TL0 = 0x00;
    TR0 = 1;
}
void initComm(void)//9600波特率,1位停止位,8位数据
{  
    TMOD |= 0x20;       
    SCON = 0xC0; //串口工作方式为3
    PCON = 0x00; //设置串口波特率9600,1位停止位,8位数据      
    TH1  = 0xFD; //设置T1初始值
    TL1  = 0xFD; //设置T1初始值
}
void main(void)
{
    TMOD = 0x21; 
    EA = 1;    //开中断
    ET0 = 1;   //打开定时器中断允许
    initComm();
    initClock(); 
    for(;;);
}
void clock_int(void) interrupt 1
{
    initClock(); 
}
  
2楼:tm1300 2003年2月22日10:00
 参考
void initClock(void) (USE 1 OR 2 OR 3 OR 4)
{   
    TR0 = 0;
//    TF0 =0;
//    TMOD |= 0x01;       
//    TCON = 0x00;
    TH0 = 0x10;
    TL0 = 0x10;
    TR0 = 1;
}
void initComm(void)//9600波特率,1位停止位,8位数据
{  
//    TMOD |= 0x20;       
//    SCON = 0xC0; //串口工作方式为3   //因为数据位为9位
    SCON = 0x20; //串口工作方式为1
    PCON = 0x00; //设置串口波特率9600,1位停止位,8位数据(11.0592M晶振)      
    TH1  = 0xFD; //设置T1初始值
    TL1  = 0xFD; //设置T1初始值
}
void main(void)
{
    TMOD = 0x21; 
//    EA = 1;    //开中断
//    ET0 = 1;   //打开定时器中断允许
    initComm();
    initClock(); 
    EA = 1;    //开中断
    ET0 = 1;   //打开定时器中断允许
    for(;;);
}
void clock_int(void) interrupt 1 (USE 1 OR 2 OR 3 OR 4)
{
//    initClock();          如果要调用initClock(); 则使用(USE 1 OR 2 OR 3 OR 
4)
      TH0 = 0x01;
      TL0 = 0x01;
      ..........        //建议对硬件某引脚端口进行高低电平切换,做测试。
}
  
3楼:tm1300 2003年2月22日10:02
 主要说明
中断中要调用外部函数的话,中断使用寄存器组必须和外部寄存器组一致,否则,肯定出
错。

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

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


[上一篇主题]:C51编程:at89c2051串口发数据就出错

[下一篇主题]:初学者:关于KEIL编译/警告