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) { //程序 }}请问这个程序可以正确执行吗?
展开
 我来答
迪凯特科技(北京)有限公司 2023-07-28
展开全部
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。 通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信…
jyaow
2014-07-16 · TA获得超过956个赞
知道小有建树答主
回答量:460
采纳率:75%
帮助的人:151万
展开全部

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

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

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




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

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

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

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

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

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

来自:求助得到的回答
迪凯特科技(北京)有限公司
2018-11-13 广告
串口服务器通信迪凯特家好,迪凯特科技(北京)有限公司是一家长期专力于串口通讯、物联网终端数据传输设备的科技公司,主推产品DIGATTO T系列串口服务器、SUNIX系列多串口卡、物联设备 I.O.T数据传输设备,以质量好、性能优,受到广大用... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
保取乐7665
2014-07-16 · TA获得超过167个赞
知道答主
回答量:128
采纳率:0%
帮助的人:176万
展开全部
你可以试一下我写的PIC18系列的串号头文件和源文件, 给个邮箱之类的
打字不易,如满意,望采纳。
追问
weipenglyj“at”gmail“dot”com
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式