PIC串口通信问题
RCSTA2bits.CREN=1;PIE3bits.RCIE=0;voidHighInterrupt(void){if(PIR3bits.RCIF==1){//程序}}...
RCSTA2bits.CREN=1;
PIE3bits.RCIE=0;
void HighInterrupt (void){ if(PIR3bits.RCIF==1) { //程序 }}请问这个程序可以正确执行吗? 展开
PIE3bits.RCIE=0;
void HighInterrupt (void){ if(PIR3bits.RCIF==1) { //程序 }}请问这个程序可以正确执行吗? 展开
迪凯特科技(北京)有限公司
2023-07-28
展开全部
这是你全部程序?那应该不行吧。涉及到2个方面的问题
第一个方面是,你这个RCIE是零,也就是关闭中断。所以后面的highinterrupt中断一定不是串口触发的。也就是说,这个中断子程只能是由另外一个high priority的中断触发。我不知道你为什么要这么写,是不是你故意这样做的?
如果中断被执行,虽然你的RCIF真的有可能是1,程序被执行,但是程序逻辑是错的。
第二个方面是,如果你希望串口触发中断,则
你这个是high interr高级中断的子程序,所以还要设定 RCIP 为 high。这样RCIF才能触发高级中断。
没有enable peripheral的中断,这个通过PEIE设置。
没有enable global的中断,这个通过GIE设置。
在中断程序里面清RCIF,设置它为零
除此以外还要注意很多问题,例如看门狗、晶振什么的。不过不属于这个帖子的讨论范围了。
来自:求助得到的回答
迪凯特科技(北京)有限公司
2018-11-13 广告
2018-11-13 广告
串口服务器通信迪凯特家好,迪凯特科技(北京)有限公司是一家长期专力于串口通讯、物联网终端数据传输设备的科技公司,主推产品DIGATTO T系列串口服务器、SUNIX系列多串口卡、物联设备 I.O.T数据传输设备,以质量好、性能优,受到广大用...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询