在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 3407|回复: 3

串口通信中断问题(含程序)

[复制链接]
发表于 2005-12-15 21:30:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教各位高手,我编的这段串口通信程序,为什么无法进入中断?就是下面的接收中断函数void SciRecv_INT(void)interrupt 4 using 0

#include   <AT89X51.H>  
unsigned char Timer0Count;
unsigned char rdata,sdata[8];
unsigned int i=0;
sbit SendData = P3^4;
sbit RecvData = P3^5;
sbit watchdog   = P3^2;
bit try=0;
void Sci_SendData(void);

void main(void)
{
//interrupt manage  start//
IE = 0x00;   //中断屏蔽寄存器(可位寻址).   禁止所有中断
IP = 0x00;   //中断优先级寄存器(可位寻址).  无优先级

TCON = 0x00;  //定时器/计数器控制寄存器
PCON = 0x80;           //串行通信方式1,2,3的波特率加倍.
SCON = 0x50;  //选择串行方式1,及8位UART方式,波特率可变
TMOD = 0x21;  
TH1  = 0xFF;  //波特率为62.5K
TL1  = 0xFF;
Timer0Count = 7;
TH0  = 0x3C;
TL0  = 0xB0;
SendData = 1; //禁止串行通讯485发送数据 (0时发送)
RecvData = 0; //允许接收

  //interrupt manage end//
PX1 = 1;  //置位INT1中断优先级
EA = 1;  //全局禁止位.
EX1 = 1;  //开INT1中断
ES = 1;  //开串口中断
ET0 = 1;  //开T0中断

TR0 = 1;  //定时器0运行
TR1 = 1;  //定时器1运行
while(1)
{
   watchdog = ~watchdog;
}
}
void SciRecv_INT(void)interrupt 4 using 0
{
EA = 0;
ES = 0;
if(RI)
{
  rdata = SBUF;
  RI = 0;
}
else
EA = 1;
ES = 1;
}
void Timer0_INT(void)interrupt 1 using 3
{

SendData = 0;
RecvData = 1;
if(Timer0Count==0)
{
              SBUF=0xa0;
  while(TI==0);
  TI= 0;
  Timer0Count = 7;
  if(try==0)
  {
   P2_0 = 0;
   try  = 1;
  }
  else
  {
   P2_0 = 1;
   try  = 0;
  }
}
else
  Timer0Count--;
SendData = 1;
RecvData = 0;
}
发表于 2005-12-16 00:37:27 | 显示全部楼层

串口通信中断问题(含程序)

应该没什么问题啊
我也许没看的怎么懂还得继续看不着急
 楼主| 发表于 2005-12-16 10:55:49 | 显示全部楼层

串口通信中断问题(含程序)

当发送的时候,sbuf都存好数据以后,不是应该进入串行中断么?,按理说,应该进入接受中断函数(void SciRecv_INT(void)interrupt 4 using 0)了不是么?可是我这段怎么也进不去呀。。。
发表于 2005-12-20 09:04:09 | 显示全部楼层

串口通信中断问题(含程序)

这和存数据没有任何关系,从字面的意思理解,应该是当串口接受到数据会进入该中断函数,和发送没有任何关系,除非你将串口的输出和输入断接了。我觉得你可以从以下几个方面去查:
1、定时器中断可以进入吗?
2、如果定时器中断不能进入,那请你查一查是不是全部中断使能没打开?
3、如果定时器中断能进入,那请你查一查你的串口资料,是不是他的中断使能没打开?
4、如果都不是上面的问题,那要检查一下你的硬件了,看看它是不是能正常工作?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-14 12:30 , Processed in 0.024153 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表