急啊,求助,PIC18F4520串口中断打开了.却没有反映..

2020-02-08 09:04发布

本帖最后由 sweet_136 于 2012-8-4 15:03 编辑

360桌面截图20120804150228.jpg (57.43 KB, 下载次数: 0) 下载附件 2012-8-4 15:02 上传
现在出现了这个警告.不知道是哪里问题.
//AD 端口设置
   setup_adc_ports(AN0_TO_AN8|VSS_VREF); //AN0-AN8为AD输入端口,VREF为参考端
   setup_adc(ADC_CLOCK_INTERNAL);
   
   enable_interrupts(INT_RDA);  //使能串口接收中断
   enable_interrupts(GLOBAL);   //使能串口接收中断


上面是主函数,

下面是中断.
为什么不能进入到中断里面去呢? 好纠结...搞了好几天了就一直是这个问题.或者.数据有时候不对.
#int_RDA
void RDA_isr()
{   
  receivedata=getc();//得到数据
  
  switch(receivedata)
        {
                case 10:
                        LED[0].key_status = OFF;
                        printf("LED[0].key_status = OFF ");
                        receivedata = 0;
                        break;
                case 11:
                        LED[0].key_status = ON;
                        printf("LED[0].key_status = ON ");
                        receivedata = 0;
                        break;
               
                case 20:
                        LED[1].key_status = OFF;
                        printf("LED[1].key_status = OFF ");
                  receivedata = 0;
                        break;
                case 21:
                        LED[1].key_status = ON;
                        printf("LED[1].key_status = ON ");
                        receivedata = 0;
                        break;
                       
                case 30:
                        LED[2].key_status = OFF;
                        printf("LED[2].key_status = OFF ");
                        receivedata = 0;
                        break;
                case 31:
                        LED[2].key_status = ON;
                        printf("LED[2].key_status = ON ");
                        receivedata = 0;
                        break;
                       
                case 40:
                        LED[3].key_status = OFF;
                        printf("LED[3].key_status = OFF ");
                        receivedata = 0;
                        break;
                case 41:
                        LED[3].key_status = ON;
                        printf("LED[3].key_status = ON ");
                        receivedata = 0;
                        break;
               
                case 0xFA:
                        LED[0].error_flag = ON;
                        printf("LED[0].error_flag = ON ");
                        receivedata = 0;
                        break;
                case 0xFB:
                        LED[1].error_flag = ON;
                        printf("LED[1].error_flag = ON ");
                        receivedata = 0;
                        break;
                case 0xFC:
                        LED[2].error_flag = ON;
                        printf("LED[2].error_flag = ON ");
                        receivedata = 0;
                        break;
                case 0xFD:
                        LED[3].error_flag = ON;
                        printf("LED[3].error_flag = ON ");
                        receivedata = 0;
                        break;
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
sweet_136
1楼-- · 2020-02-09 05:10
 精彩回答 2  元偷偷看……
portx
2楼-- · 2020-02-09 09:08
每次进中断首先清除中断标志位,PIC的串口中断是硬件产生中断标志软件清除的。否则会导致中断进不来或乱掉
sweet_136
3楼-- · 2020-02-09 11:25
portx 发表于 2012-8-29 11:31
每次进中断首先清除中断标志位,PIC的串口中断是硬件产生中断标志软件清除的。否则会导致中断进不来或乱掉 ...

对头(要十个字呀.....)

一周热门 更多>