晕死了,AW16,SCI串口中断接收,进不去中断

[复制链接]
 楼主| winter1999 发表于 2007-10-10 15:21 | 显示全部楼层 |阅读模式
<br />interrupt&nbsp;VectorNumber_Vsci1rx&nbsp;void&nbsp;isrSCI1(void)<br />{<br />&nbsp;&nbsp;byte&nbsp;&nbsp;temp;<br />&nbsp;&nbsp;temp&nbsp;=&nbsp;SCI1S1;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;LedFlash&nbsp;=&nbsp;~LedFlash;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;if&nbsp;(SCI1S1_RDRF)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;COMM_BUF&nbsp;=&nbsp;SCI1D;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RD_FLAG&nbsp;=&nbsp;YES;<br />&nbsp;&nbsp;}<br />}<br />/*串口1初始化*/<br />void&nbsp;SCI1_Init(void)<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;SCI1BD&nbsp;=&nbsp;(BUSCLK/BandRate/16);&nbsp;&nbsp;//bandrate<br />&nbsp;&nbsp;SCI1C1&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//8bit<br />&nbsp;&nbsp;SCI1C2&nbsp;=&nbsp;0x2C;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许接收中断,接收和发送允许<br />&nbsp;&nbsp;SCI1C3&nbsp;=&nbsp;0x00;<br />}<br />主程序里已经&nbsp;&nbsp;EnableInterrupts;用串口调试助手调试,波特率是对的,因为发送是正确的。然后依然用串口调试助手调试接收,进不去串口接收中断,而定时器溢出中断是正常的,这是怎么回事呢?谢谢
张明峰 发表于 2007-10-10 15:42 | 显示全部楼层

你能保证PC发出的数据抵达芯片的RX引脚?

串口调试助手连续不停地发送0x55,然后用示波器看芯片RX引脚波型,没有示波器就用万用表量RX引脚直流电压,应该为0.5VDD左右。
 楼主| winter1999 发表于 2007-10-10 16:21 | 显示全部楼层

是的

张老师,我在RX和TX都加了LED,我用PC发数据的时候,可以观察到那个LED会按我发数据的频率闪。
 楼主| winter1999 发表于 2007-10-10 16:23 | 显示全部楼层

我按您说的试了

我的VDD是5.03V,不过RX脚只有1.8V
free_tech 发表于 2007-10-10 16:29 | 显示全部楼层

还是查硬件吧

估计你的max232接错线了,可以先把tx于rx短接,自发自收,肯定能进中断<br />
 楼主| winter1999 发表于 2007-10-10 16:31 | 显示全部楼层

free_tech您好,

您说232接错了,那怎么用AW16发正常呢,我试试自发自收
 楼主| winter1999 发表于 2007-10-10 18:00 | 显示全部楼层

还不成:(而且有奇怪的问题

1、如果我用串口调试助手发数据,那么回过头用AW16发数据给PC,结果肯定收不到,要重启N次串口调试助手才OK。<br />2、取消AW16上的发送程序,用PC发数据给AW16,结果串口调试助手的接收窗口也有显示,内容和发送窗口一样。
张明峰 发表于 2007-10-10 23:21 | 显示全部楼层

查你的电路吧,兄弟

肯定是你板子的线路有问题。别急,慢慢查。<br />要验证接受软件很简单:SCI1C1控制寄存器内置“LOOPS=1”“RSRC=0”就实现内部自发自收。你发什么就能收到什么。
 楼主| winter1999 发表于 2007-10-11 11:39 | 显示全部楼层

终于可以了,谢谢二位老师

换了块232,奇怪,这个232用来烧STC居然可以
dinizhuzhu 发表于 2010-8-17 11:17 | 显示全部楼层
void uart2_init(void)
{
    SCI2BDH=(unsigned char)(BAUD_DIV >> 8);
    SCI2BDL=(unsigned char)(BAUD_DIV & 0x00ff);
    SCI2C1 = 0x00;       //8bit
    SCI2C2 |= 0x3C;       //允许接收中断,接收和发送允许   
    SCI2S2 |= 0xC0;  
    //SCI2C1=0x00;
    //SCI2C2=SCI1C2_TE_MASK | SCI1C2_RE_MASK | SCI1C2_RWU_MASK ;
}
dinizhuzhu 发表于 2010-8-17 11:18 | 显示全部楼层
告诉你一下吧!SCI2S2寄存器必须设置!!!!!!!!!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

136

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部