首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

SCI串口中断的问题

SCI串口中断的问题

    我用的gz16的芯片,设置用中断来接收PC机发送的数据,可以好象没有产生中断,不知道是为什么,下面是我得程序。


#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */


unsigned char temp=0;
unsigned char rxdata=0;
void MCU_init(void); /* Device initialization function declaration */


void main(void) {


  unsigned char temp,rxdata;
  temp=0;
  rxdata=0;
  PTD=0;
  DDRD=0xff;//output
  /* include your code here */
  CONFIG1=0x39;
  CONFIG2=0x10;


  SCBR=0x30;//baud rate 9600
 SCC1=0x40;//enable SCI,no parity test,8bit data

  SCC2=0x2C;//enable transmitter and receiver
  SCC3=0x00;
  SCC2_SCTIE=0;
  EnableInterrupts; /* enable interrupts */
  /* include your code here */


 


  for(;;) {
    __RESET_WATCHDOG(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave this function */
}



interrupt void SCRF(void)
{
 temp=SCS1;
 rxdata=SCDR;
  if(rxdata==0x55)  PTD_PTD0=1;
  else PTD_PTD2=1;
                                                   
  // SCC2_SCTIE=1;
 }

strong_chen在不在啊,帮我看看吧。
你的中断地址是如何定义的?地址对不对?
海纳百川  有容乃大
我在datasheet上查到是12,然后我顺序加1,变成13了。VECTOR 13 SCIrx
可还是不行
关键是我不知道问题出在哪一步
突然又好了,不知道是哪里的问题。
建议检查map文件中的中断向量及指定堆栈位置及大小
怀疑是硬件的问题。
海纳百川  有容乃大
你直接在interrupt后面加上13就行了
在把VECTOR 13 SCIrx删除掉
试一试
加13 = Vector 13的写法
对于串口通讯好坏没不会有影响的
建议检查map文件中的中断向量及指定堆栈位置及大小  能否说的稍微具体一点!谢谢
返回列表