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) { //程序 }}请问这个程序可以正确执行吗?
展开
 我来答
jyaow
2014-07-16 · TA获得超过956个赞
知道小有建树答主
回答量:460
采纳率:75%
帮助的人:152万
展开全部

这是你全部程序?那应该不行吧。涉及到2个方面的问题

第一个方面是,你这个RCIE是零,也就是关闭中断。所以后面的highinterrupt中断一定不是串口触发的。也就是说,这个中断子程只能是由另外一个high priority的中断触发。我不知道你为什么要这么写,是不是你故意这样做的?

如果中断被执行,虽然你的RCIF真的有可能是1,程序被执行,但是程序逻辑是错的。




第二个方面是,如果你希望串口触发中断,则

  1. 你这个是high interr高级中断的子程序,所以还要设定 RCIP 为 high。这样RCIF才能触发高级中断。

  2. 没有enable peripheral的中断,这个通过PEIE设置。

  3. 没有enable global的中断,这个通过GIE设置。

  4. 在中断程序里面清RCIF,设置它为零

    除此以外还要注意很多问题,例如看门狗、晶振什么的。不过不属于这个帖子的讨论范围了。

来自:求助得到的回答
保取乐7665
2014-07-16 · TA获得超过167个赞
知道答主
回答量:128
采纳率:0%
帮助的人:176万
展开全部
你可以试一下我写的PIC18系列的串号头文件和源文件, 给个邮箱之类的
打字不易,如满意,望采纳。
追问
weipenglyj“at”gmail“dot”com
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式