求助关于PIC单片机串口中断的接受和发送问题

作者&投稿:自于 (若有异议请与网页底部的电邮联系)
51单片机的串口通信中接收中断和发送中断的问题。~

在程序中检测RI和TI,RI表示接收中断,TI表示发送中断,如果只要在接收中断时运行,可以如下设置:
......
JNB RI,EXIT
......
CLR RI
......
EXIT:
RETI

//创建一个串口通讯
SerialPort CurrentPort = null;
CurrentPort = new SerialPort();
CurrentPort.ReadBufferSize = 128;
CurrentPort.PortName = comName; //端口号
CurrentPort.BaudRate = bandRate; //比特率
CurrentPort.Parity =parity;//奇偶校验
CurrentPort.StopBits = stop;//停止位
CurrentPort.DataBits = databit;//数据位
CurrentPort.ReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常
//绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理
CurrentPort.DataReceived += Sp_DataReceived;
CurrentPort.Open();



定义一个变量 byte[] receiveStr;

//绑定的事件处理函数
private static void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
SerialPort sp = sender as SerialPort;
if (sp == null)
return;
byte[] readBuffer = new byte[sp.ReadBufferSize];
sp.Read(readBuffer, 0, readBuffer.Length);

//赋值
receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串。
}


//你要求的按钮事件可以这么写
private void button1_Click(object sender, EventArgs e)
{
if(receiveStr!=null)
{
变量 xxx=receiveStr;
}
}

你在主函数中先把RCIF标志位清零,你做的应该是SCI串行通信吧,一上电,就表示程序开始执行了,你程序一开始执行就是要进行SCI串行通信,当然一开始就进入中断了,如果你不想这样,你可以连一个按钮,当此按钮按下后就进入中断执行SCI通信

没跑过PIC,中断要是一直进入的话,看下芯片数据手册里进入中断后是不是还要把中断标志位清零,有的是读取一定值后自动清零,有的就要手工清零了,再多没看出来了


pic单片机与51的区别在哪
1、总线结构区别51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据传输效率。正因为在PIC系列单片机中采用了哈佛双总线...

pic单片机与51单片机有什么区别?
1、总线结构不同 MCS-51的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在PIC系列单片机中采用了哈佛双总线结构,...

PIC单片机编程图书信息
想了解关于PIC单片机编程的深入学习资料吗?这本专业的书籍或许能满足你的需求。它名为《PIC单片机编程》,由日本作者光永法明,后田敏,以及王会芝共同编写,秦晓平进行审校,确保了内容的权威性和准确性。这本书由知名的科学出版社出版,于2010年4月1日发行,其国际标准书号为9787030268440,方便读者在购买...

PIC单片机的基本功能区域包括哪几部分?各有什么作用?
PIC单片机是一种微型计算机,主要由中央处理器、存储器、输入输出接口等组成。其中,基本功能区域主要包括以下几个部分:中央处理器(CPU):是PIC单片机的核心部件,主要负责数据运算和控制指令的执行。存储器:包括闪存(Flash Memory)、EEPROM和随机访问存储器(RAM),用于存储程序和数据。输入输出接口:包...

PIC单片机的简介
1.PIC单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。2.PIC 单片机是一个小的计算机。3.PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力...

PIC单片机有什么特点
1) PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如,一个摩托车的点火器需要一个I\/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且...

pic 单片机 参考文献
PIC系列8位单片机为适应各种不同的用途,有多种型号可供选用。但是,尽管PIC单片机有不同的档次和型号,但其最基本的组成则大同小异。因此,在这里先从型号PIC16F84的单片机入手,讨论其基本组成。PIC16F84是双列直插式(DIP)塑料封装,最大时钟频率可达4MHz。现为Microchip公司的独家产品,关于其具体技术...

PIC单片机的详细介绍
在计算存储器的容量时,我们规定 1G 字节 = 1,024M 字节, 1M 字节 = 1,024K 字节, 1K 字节= 1,024 字节. 它们不是以1000为倍数,因为这是用二进制计算的缘故。用PIC单片机使电路做的很小巧变得可能。因为PIC单片机可以把计算部分、内存、输入和输出等都做在一个芯片内。

PIC单片机的介绍
PIC16F877单片机内部资源丰富,广泛应用于工业控制领域。我们研制了基于PIC16F877单片机的同步电动机新型智能励磁控制系统,控制程序可以实时计算,利用内部的捕捉单元可以很容易实现自动投励、全压投切电路。同时我们通过控制晶闸管移相整流模块的控制端电压来控制整流模块的输出,使得整个系统硬件电路简单、调试...

PIC单片机有何优势?
说实话,自己感觉,就目前来看,PIC单片机的唯一优点或者是还算比较独特的特点就是它的保密性稍好,把保密熔丝位熔断之后任凭谁也反编译不出来,至于其他的,和现在主流的单片机,尤其是你提到的STM32处理器相比来说,真是没有什么优势,东西还死贵 ...

城厢区18083642229: 关于单片机串口接收的问题 -
茶聂复方: 哈哈,这简单!如果是单片机串口接收,当接收到数据之后,硬件会自动将数据存入SBUF,然后置位RI 开启中断,进入中断服务程序,如果在中断中不复位RI,退出中断程序后,下次再接收到 新的数据后就不会再次触发中断.

城厢区18083642229: PIC单片机中串行异步通信,接收不许中断,接收允许中断,如何处理二者的关系? -
茶聂复方: 一般中断后你要判断一下标志位,是发送产生的中断还是接收产生的中断,再进行相应的发送和接收的处理 你的中断服务程序和主程序要有2个缓冲区,发送和接收,用这2个缓冲区与主程序进行数据交换

城厢区18083642229: 求助关于PIC单片机串口中断的接受和发送问题 -
茶聂复方: 你在主函数中先把RCIF标志位清零,你做的应该是SCI串行通信吧,一上电,就表示程序开始执行了,你程序一开始执行就是要进行SCI串行通信,当然一开始就进入中断了,如果你不想这样,你可以连一个按钮,当此按钮按下后就进入中断执行SCI通信

城厢区18083642229: pic18F单片机串口USART接收的问题?
茶聂复方: 在允许串口中断的情况下,当缓冲器接收完一个完整的字节,而且ri=0,则会将缓冲器内的数值保存到sbuf寄存器中,并且ri置1,产生中断请求.如果缓冲器没有接收完一个完整的字节(没有收到停止位),或者接收完一个完整的字节时ri=1,则不产生中断,不将缓冲器内的值保存到sbuf,接收到的数据帧丢失,不再恢复.

城厢区18083642229: 单片机串行口的发送中断与接收中断是不是有各自的中断入口地址. -
茶聂复方: 同一个收发模块的接收中断和发送中断是相同的入口,并在中断例程里去判断是什么引发中断;

城厢区18083642229: 单片机的串口输入总是中断 -
茶聂复方: 肯定串口有数据,且接收完成后才能进入中断,造成你这种现象的,要么是硬件电路有干扰,RXD线总有一些干扰脉冲,所以造成中断.要么是程序其他地方有问题,强制是RI置1,而进入了中断.

城厢区18083642229: PIC 串口无法接收数据,请大神门帮忙 -
茶聂复方: 希望多描述一下你的问题,代码也不全无法做出判断.中断究竟是timer0还是串口触发的?每次串行信号接收完毕之后,都读取信号了吗?如果没有读,则overflow寄存器会自动置1,随后的所有串口信号都不再接收.你尝试给串口重复发送信号,看是否一次都接受不到?如果能且仅能接收一次,那就是overflow了,可以在中断子程内清这个寄存位.如果一次都接收不到,那就是配置写错了.

城厢区18083642229: 求单片机串口中断接收程序,怎样一次性接受多个字符? -
茶聂复方: 首先把变量a定义成一个数组a[10],数组大小,根据要接收的字符确定.再加一个变量J. 在开中断ES=1后,加一个延时函数.我用过很多这样的了.请多给点分,以后我还可以帮你.程序如下:#include<reg52.h>unsigned char flag,i,j; unsigned int k;...

城厢区18083642229: pic串口进步了中断.一帧数据接收进不了中断,接收一个字节,也救不了中断.谁帮忙看看怎么回事? -
茶聂复方: 是用的MAX485吗? 485有个RE脚...置1为发送,置0为接收.试试..也遇到了同样的问题..这样一个改就好了..

城厢区18083642229: 关于单片机串口中断的几个问题,求解答 -
茶聂复方: 1.TI是串口数据发送完毕的标志,同时在硬件上有引起进中断的功能.你程序里开了串口中断,在中断服务程序中又不清TI,会导致单片机反复不停地进入中断服务程序,实际导致数据根本无法正确发送.虽然你仿真可以运行,但执行的结果是不正确的.2.MOV SBUF,A最好放在清 TI之后,因为不知你能再清TI和MOV SBUF,A插入多少指令.如果清TI和MOV SBUF,A之间执行的指令不多,那么就无所谓.但是最好养成良好的编程习惯,这样程序不容易出错.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网