导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→串口中断与定时中断同时开存在的问题,请教大侠

* 50201: 串口中断与定时中断同时开存在的问题,请教大侠

   boysen 
boysen发表的帖子 

 串口中断与定时中断同时开存在的问题,请教大侠
串口中断与定时中断同时开存在的问题,请教大侠 

我通过AD转化采集外部信号值并显示在LCD上,每1ms采集一次,采用定时中断
1;同时需要显示串行口发来的数据,采用9600波特率(无多机通信)。结果是定时中断1显示正常,串行数据却接收不到。程序如下,请大侠们帮忙看看指正,我实在不知道原因了,只好贴出编的一段程序来请各位指教:
初始化:
IE=0x92;          
TMOD=0x21; 
TH1=0xf4;    
TL1=0XF4;//6时钟单片机,9600bps      
SCON=0x50;          
TCON=0x50;                   
TH0=0xf1;          
TL0=0x9a;//定时中断1ms
IP=0x00;    

定时中断
void disp(void) interrupt 1{//定时中断1
    TH0=0xf1;
    TL0=0x9a;    //重新赋值,定时1ms
    StaticShow(LineNo);//将数据送LCD显示,运行时间约0.1ms
    LineNo++;    //全局变量,计算定时中断次数
    if (LineNo==16)LineNo=0;
    }
串口中断:
void receive(void) interrupt 4{        
  uchar i,j;
  RI=0;
  if (SBUF!=0XCC)return;//侦头字节
  RI=0;
  if (_getkey!=0x55)return;//侦头字节
  if (_getkey!=0x01)return;//类型
  ES=0;//这里可考虑去掉,但是效果一样
  for (i=0;i  <128;i++){
      Buffer[i]=_getkey();//接收128字节数据
  }
ES=1;//重新开中断
}
语法没任何问题(手输入错误除外),串形中断单独使用也没有问题,现在情况是定时中断正常,不进入串行中断,搞了两天了,没有结果,郁闷中。。。。。。请大侠救命,谢谢
 
 


发表时间:2004年3月9日17:33:32

  
回复该帖

本主题共有 14 帖,分页:>>>>>该主题的所有内容[14]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  50208.[详细]请改用52芯片的T2资源!
摘要:想必你一定是用的51芯片,或是你未用T2来发生串口波特率。 晕!你用了串口,就不能在用T1中断了,因为T1此时是用来发生串口波特率的!你一定要用,就要改用52的芯片,它可以另用T2定时器来发生波特率!详细设置请查阅有关资料!......(212字)
- [dongxiaohai][1110次] 2004年3月9日

  50217.[详细]我看你先把定时中断理的显示函数去掉,再执行,看串口是不是好的。
摘要:因为我估计跟你的函数的运行时间有关系,可能他 t1中断没有被触发,可能定时中断运行的时间太长了。 这只是建议,您可以试试。......(120字)
- [shliujun][906次] 2004年3月9日

  50421.[详细]应该是显示运行时间太长的缘故
摘要:2 方法: (1)将串行中断优先级设成高于T1 (2)如果不是非要1ms刷新一次显示的话(事实上1ms就刷新显示对人眼来看说没必要),提高显示刷新周期,需要刷新的时候,在中断中做一个标记,在主循环中来执行显示刷......(200字)
- [guest][1122次] 2004年3月12日

[上一篇帖子]:求Adobe Acrobat软件。知道那里可以下到?谢谢了!
[下一篇帖子]:你是本科毕业设计还是研究生毕业设计,要用MC35进行设计。