《[信息与通信]单片机MSP430与PC机串口通讯设计.doc》由会员分享,可在线阅读,更多相关《[信息与通信]单片机MSP430与PC机串口通讯设计.doc(51页珍藏版)》请在三一办公上搜索。
1、河南科技大学本科毕业设计(论文)单片机MSP430与PC机串口通讯设计摘 要在多机通信的分布式控制系统中,通过PC机的串口与多台单片机的通信是最方便的。在这样的分布式控制系统中,单片机与微机之间的多路通信是整个系统的关键。基于MSP430系列单片机自身优越的性能以及其超低功耗的特点,利用MSP430F149的USART可以实现这种分布式多机通信功能。在解决了与PC串口或其他带有串口的终端相连所需要的串口电平和逻辑关系的转变之后,选用MSP430F149的异步模式UART,用C语言完成下位机(PC机)接收和发送数据程序,借助VC+6.0开发平台并利用PComm软件包完成上位机(单片机)的通信程序
2、。文章介绍了美国TI公司新一代16位Flash型MSP430F149系列单片机的结构、特性和功能。详细介绍了如何利用VC十+6.0进行串口通讯程序的编制,重点介绍了如何利用实现异步通讯的方法。关键词:MSP430系列单片机,多路通信,控制系统,异步模式,PcommDesign of the Serial Communication between MSP430F149 and PCABSTRACTIn the controlled system of distributing type in which many computers are communicating, by way of t
3、he PC string contact with many single chip machines to correspond is the most convenient. In this controlled system of distributing type, the various communication between single chip machines and microcomputer is the whole key. According to the low achievement consume and perfect function of MSP430
4、,The USART that used in system of MSP430F149 can carry out this kind of function of singular to group. It is required to solve the voltage conversion and the change of logic relation, when the MSP430 connects with the PC string or other terminals which take with strings. And then, we can choose the
5、asynchronous module (UART) of MSP430F149 to complete the MSP430F149s main processor in language of C and write out the PCs processor asking for help from The VC+6.0 and The Pcomm. This paper introduces the structure, principle and feature of new generation of 16 bit&Flash-type microcontroller which
6、belongs to the Texas Instruments MSP430F149 series. At the same time, it also introduces how to carry out the method of the serial communication between PC and MSP430F149. The paper presents how to use VC+6.0 design serial port communication program,especially calling Pcomm functions to control seri
7、al port to transfer data. KEY WORDS: MSP430F149single-chip computer, serial communication, control system,UART,PComm目 录摘 要1ABSTRACT2目 录3前 言6第一章 串口通讯的系统组成与原理71.1 系统组成及通讯原理7 1.1.1 系统构成7 1.1.2 通信原理及协议9第二章 硬件电路设计142.1 接口电平电路设计142.1.1 RS-232接口电路设计142.2 单片机电路设计172.2.1 单片机电路设计图17第三章 软件设计193.1 功能描述193.1.1 上
8、位机和下位机实现的功能19一、功能描述:193.2 程序设计193.2.1 下位机程序设计193.2.2 上位机(PC机)程序设计28结 论34参考文献36前 言在工业控制领域,由多单片机构成的系统很多,如大规模测控系统、大型车辆控制系统、机器人控制系统等。单个单片机在这些应用场合往往仅负责某一个点或者某个子系统的监控,对整个系统中各点的监测或各子系统的协调控制则由某一个功能更强大的中央处理器如PC机来完成。数据传输距离可能是近距离的(几米),也可能是远距离的(几公里)。多机系统的数据交换可能采用并行通信,也可能采用串行通信,而构成多单片机系统的关键技术是多单片机之间的通信方式1。由于串行通信
9、是在一根传输线上一位一位的传送信息,所用的传输线少,可借助现成的电话网进行数据传送,因此特别适合远距离传输,所以串口通讯方式在计算机控制系统中有着广泛的应用。MSP430系列单片机是一种超低功耗的混合信号控制器,在控制系统以及数据采集系统中有广泛的应用,这是因为:该系列单片机有着强大的处理功能,在8MHz晶体下运算能力达1MIPS(100万/秒),是传统51单片机远远达不到的,这使该系列单片机采用C语言开发有很高的效率,从而提高开发周期,实现程序可移植性;MSP430系列单片机有超低功耗的特点,且有多种省电模式,6m的快速启动时间可延长待机时间并使启动更加迅速,这使得系统功耗特别小,适合未来社
10、会对于低功耗系统的要求2;另外MSP430系列单片机系统功能稳定,其波特率发生器中的预分频/分频器和一个调整器的组合,使得即使晶振频率不是波特率的整数倍情况下,MSP430也能正常工作而且还可以使其通讯协议工作在最大的波特率。采用这一技术,即使用手表晶振(32768Hz),波特率也可以达到4800 和9600。本设计是基于MSP430F149实现分布式控制系统中的串口通讯问题。在硬件上要想与PC 串口或者其它带有串口的终端设备相连接,必须要进行EIA-RS-232-C 与MSP430 电平和逻辑关系的转换,本设计采用MAX3221芯片,完成3V5V 电平与串口电平的双向转换;而对于多台单片机按
11、照一定连接形式构成的通信网络,相互之间必须以规范的通信协议来联络,才能完成各种要实现的功能要求。本设计依据MSP430F149的串行通信模块的构成,利用其异步通信模式的特点,按照位寻址的方式设计出一个简单的通信协议,依此设计出下位机的接收和发送程序,以及上位机的C+通信程序。第一章 串口通讯的系统组成与原理1.1 系统组成及通讯原理 1.1.1 系统构成一、 MSP430F149功能简介: 本设计选用的主要芯片为MSP430F149,该单片机属于德州仪器公司MSP430F14X/16X FLASH 系列。该系列是一组工业级超低功耗的微控制器,运行环境温度为 -40+85 摄氏度工作电压范围1.
12、83.6V, MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。由于具有16位RISC(精简指令集)结构,16位寄存器和常数寄存器,MSP430 达到了最大的代码效率。数字控制的振荡器提供快速从所有低功耗模式苏醒到活动模式的能力时间少于6ms。MSP430F149有较高的处理速度,在 8MHz 晶体驱动下指令周期为 125 ns。 另外它带有两个16 位定时器(带看门狗功能)、速度极快的8 通道12 位A/D 转换器(ADC)(带内部参考电压、采样保持和自动扫描功能)、一个内部比较器和两个通用同步/异步发射接收器、48个I/O口(均可
13、独立控制)的微处理器结构。硬件乘法器提高了单片机的性能并使单片机在编码和硬件上可兼容3。这些特点保证了可编制出高效率的源程序。二、系统构成1、系统框图系统构成如图1-1所示,由上位机(即工业控制计算机)、通讯接口和下位机3部分组成。上位机选用的是工控机 ,智能终端由单片机MSP430F149和外围传感器放大电路等构成(本设计部涉及该部分的设计)。单片机与PC机之间通信方式为串行异步方式(UART),下位机采用中断方式进行与上位机的数据交换,上位机采用按时查询方式对各串口进行读写操作。单片机MSP430要想与PC 串口连接或者其它带有串口的终端设备连接,接口电路部分必须要进行EIA-RS-232
14、-C 与MSP430 电平和逻辑关系的转换4。本设计将采用MAX3221芯片, 完成3V5V 电平与串口电平的双向转换。图1-1 系统框图 1.1.2 通信原理及协议一、MSP430的串口通讯模块(USART)由于本设计解决的是串口通讯问题,所以通信的基本原理是利用MSP430的串口通讯模块(USART)来实现单片机和PC机之间的串口通信。1、USART的硬件构成:SP430F169的串行通讯模块(USART)的作用主要是实现对外通信,它可以实现异步通信(UART)和同步通信(SPI)两中通讯功能5。图1-2是USART的通讯模块。由图1-2可以看出USART模块分别由波特率部分,接收部分,发
15、送部分,端口IO部分组成。USART接收部分包括接收寄存器,接收移位寄存器以及控制模块组成,它在接收信息的时候产生一些状态信息,并设置相应的中断标志位。USART的发送部分包括发送寄存器,发送移位寄存器以及控制模块组成,它在发送的时候产生一些状态信息,并可以设置发送中断标志位。USART的波特率产生部分主要包括时钟的选择,波特率的产生以及波特率的调整部分组成,它通过设置波特率寄存器和波特率调整寄存器来获得需要的波特率。USART包含一个控制模块,通过控制模块可以选择相应的工作模式,同时设置相应的管脚,比如对异步和同步工作方式的选择,对奇偶校验位和停止位个数等所有设置都是通过操作该模块的寄存器来
16、实现的。对于不同系列的MSP单片机其USART模块可能有一个也可能有两个,而MSP430F149有两个,分别是USART0和USART1。图1-2 USART模块组成2、USART的控制寄存器和工作模式USART的控制寄存器是其八个寄存器之中的一个,表1-1是其位的格式, 表1-1 控制寄存器PENVPEVSPCHARLISTENSYNCMMSWRSTUSART的控制寄存器有8个有效控制位,通过对这些控制位的设置可以对工作模式,通信协议,校验位等进行选择。用户对USART的所有操作都是通过操作该寄存器的控制位来完成的6。下面是各个位的简单功能描述,知道这些控制位的功能,有助于我们在后面进行硬件
17、连接和软件设计.PENV:校验使能位。该位为0不允许校验;为1时,允许校验,且在发送时产生校验位,在接收时希望接收到校验位。在地址位多机模式中地址位包括在校验计算中。PEV:奇偶校验位。为0时,奇校验,为1时进行偶校验。SP:停止位。接收时停止位只有一个。发送时,该位为0,只有一个停止位;该位为1时,有两个停止位。CHAR:字符长度位。该位为0表示发送的数据为7位,该位为1时表示发送的数据为8位。LISTEN:监听使能位。该位为0没有反馈;该位为1,有反馈,发送的数据送到接收器,可以进行自环测试。SYNC:该位为0时,USART为异步通信(UART)模式;该位为1,USART为同步通信(SPI
18、)模式。MM:多机模式选择。当该位为0时,多机模式选择线路空闲多机协议;该位为1时,多机模式选择地址位多机协议。SWRST:软件复位使能位。也叫控制位。该位影响着其他控制位和状态位的状态,在串行口的使用过程中,这一位比较重要。一次正确的USART模块初始化应该是这样的顺序:先在SWRST=1的情况下设置串口;然后设置SWRST=0;最后如果使用中断,则设置相应的中断使能。该位为0时:USART模块被允许。该位为1时:如果该位置位,则USART状态机和操作运行标志位都被初使化成复位状态(URXIFG=URXIE=UTXIE=0,UTXIFG=1);同时所受影响的逻辑位保持在复位状态,直到SWRS
19、T位复位。这意味着,当系统复位后,只有对SWRST位复位,USART的功能才能被重新允许;但是接收和发送标志URXE和UTXE不受SWRST控制位的影响。二、通讯方式1、异步模式(UART)的选择MSP430F149单片机支持两种不同的串行协议,异步通信(UART)协议和同步通信(SPI)协议。这两种协议的选择是通过控制寄存器中的SYNC位来决定的7。本设计中主要是利用MSP430的异步通信(UART)模式原理实现单片机与PC机之间的串口通信的。MSP430控制寄存器内的信息决定了USART的基本操作,选择异步模式(UART)需要通过设置SYNC=0来实现;本设计中对于其他控制位的设置还有:设
20、置CHAR=1,选择字符长度为8位;设置SP=0,选择停止位1位;设置PEV=0,选择奇校验;设置MM=1,选择地址位多机模式协议。控制位的选择基本上决定了系统的通信方式和通信格式。2、UART模块的特点由于MSP430单片机具有两个片内的UART:串口0和串口1,实现两个串口通信相当容易,只需要设置适当的寄存器就可以使串口工作起来,两个串口都采用中断方式,当接收有数据时,设置一个标志通知主程序有数据到来,当主程序有数局要发送时,设置一个中断标志进入中断发送数据。本设计选用串口1与上位机进行通信。在异步模式下,接收部分自身实现帧的同步,通信双方只要使用相同的波特率即可。异步模式的帧格式有1位起
21、始位、7位或8位数据位,校验位,1位地址位,1或2位停止位构成。在异步模式下,MSP430支持两种多机模式:线路空闲多机模式和地址位多机模式。线路空闲模式下,数据块被一段空闲的时间分割。在字符的第一个停止位之后收到10个以上的1,表示检测到线路空闲;如果采用两个停止位,则第二个停止位被认为是空闲周期的第一个信号。在使用地址位多机模式时,字符包含一个附加的位作为地址标识,数据快的第一个字符带有一个置位的地址位,用以表明该字符是一个地址。由于已经设置了控制寄存器中的MM=1,故在本设计中选择了地址位多机模式。下面是UART通信的一些特点:(1)、异步通讯模式,包括线路空闲/地址位通信协议。(2)、
22、有两个单独的移位寄存器,输入/输出移位寄存器。(3)、传输7位或8位数据,可采用奇偶或无校验。(4)、可编程实现波特率调整。(5)、分别发,收单独中断。(6)、有效地检测到起始位实现从低功耗唤醒。(7)、状态标志检测错误或者地址位。三、基本通信协议:在PC机和多台单片机的通讯中,确定一个明确而合理的通讯协议是关键,包括对数据格式、通讯方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定6。由于已经选择了UART的多机通信模式.为了区别不同的分机,必须为每个分机分配一个唯一的地址,此地址唯一区别各单片机。数据格式采用数据包的形式,一次传输一组数据。数据包格式如表1-2所示:表
23、1-2 数据包格式起使标志位下位机地址操作命令数据长度数据内容和校验结束标志起始标志位:1 个字节 分机地址: 1 个字节命令/ 数据: 1 个字节 数据长度: 1 个字节 数据内容: n 个字节 和检验: 2 个字节 结束标志位: 1 个字节 数据格式中的地址位表示与PC 机通讯的单片机地址。操作命令则表示此次通讯要完成的操作。在单片机发送上位机接收的时候,协议规定命令FFH 为上报数据, 此时数据包中的数据长度、数据内容、和检验三个域便填充实际发送数据的个数、数据及和校验;命令F0H - F3H 则表示单片机给PC机的反馈信息,此时数据包中的数据长度、数据内容和检验三个域为空,其中当命令为
24、F0H 表示接收成功,F1H 表示接收失败并要求重发,F2H 表示单片机有数据上报要求,F3H 表示单片机无数据上报要求。操作命令域在PC 机发送单片机接收的时候也有相似的协议规定。第二章 硬件电路设计2.1 接口电平电路设计2.1.1 RS-232接口电路设计一、 RS-232电气标准1、RS-232基本电气要求由于MSP430最大工作电压为3.6V,所以在与PC机进行串口通信的时候需要进行EIA-RS-232逻辑电平转换。EIA-RS-232 是美国电子工业协会(EIA)制定的串口通信协议,“C”表示标准修第几次修改,其信号电平采用负逻辑,逻辑“1”的电平是-5V15V,逻辑“0”的电平为
25、+5V+15V,因为其有2V的噪声容限,故最终限制接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号 作为逻辑“1”8。因此,实际工作时,应保证电平在(315)V之间。S-232-C最高传输速率为20kb/s,最大直接连接长度为15m。2、RS-232常用接口RS-232-C标准接口有25条线:4条数据线、11条控制线、3条定时线、7条备用和未定义线。其中常用的只有9根,它们是:(1)6条联络控制信号线: 数据装置准备好(Data set ready-DSR)有效时(ON)状态,表明MODEM处于可以使用的状态。 数据终端准备好(Data set ready-DTR)有效时(ON)状
26、态,表明数据终端可以使用。 请求发送(Request to send-RTS)用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态)。允许发送(Clear to send-CTS)用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。该信号有效时,则通知终端开始沿发送数据线TxD发送数据。 接收线信号检出(Received Line detection-RLSD)用来表示DCE已接通通信链路,告知DTE准备接收数据。此线也叫做数据载波检出(Data Carrier dectection-DCD)线。 振铃指示(Ringing-RI)该信号有效(O
27、N状态)表示通知终端,已被呼叫。 上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送(2)2条数据发送与接收线: 发送数据(Transmitted data-TxD)通过TxD终端将串行数据发送已经发送。接收数据(Received data-RxD
28、)通过RxD线终端接收从PC发来的串行数据,(DCEDTE)。 (3)一条地线 信号地SG,无方向。 二、接口电路设计RS-232接口电路连接方式根据需要有三线、六线、八线、两线多种。当通讯速率较低时可以采用三线对接法,按图2-2所示。 图2-1 RS-232电缆连接图在本设计中采用一块MAX3221芯片把从MSP430中USART过来的信号进行电平转换后输出到PC,把从PC发过来的信号发送给USART,设计中的RS-232接口电路如图2-2所示:图2-2 RS-232接口电路图图2-2中DB9为即为我们选用的RS-232连接器9针串行口,其插针分别对应RS-232-C标准接口9根常用线。其对
29、应关系如表2-1所示9。表2-1 9针串行口插针对应关系表DB9管脚号插针功能说明标记1接收线信号检出DCD2接收数据RD3发送数据TD4数据终端就绪DTR5信号地SG6数据传输设备就绪DSR7请求发送RTS8允许发送CTS9振铃指示RI由图2-2以及表2-1可以知道,接收使能EN接地,时钟有效;掉电模式控制脚FORCEOFF始终拉高,即MAX3221始终处在工作状态。USART(本设计中选择UART1)的TXD脚与MAX3221的11脚(DIN)相连,USART的RXD脚与MAX3221的9脚(ROUT)相连;输入DIN的信号转换为RS-232电平后,经MAX3221的13 脚(DOUT)输
30、出到J5(DB9)的2脚(DB9的2脚为串口的RXD脚),接口J5(DB9)的3脚(串口的TXD脚)与MAX3221的8脚(RIN)相连,这样的连接方式已将USART的输出脚TXD(本设计中UART1的P3.6管脚)和输入脚RXD(本设计中UART1的P3.7管脚)连接对调,可以直接通过延长线与PC机相连。2.2 单片机电路设计2.2.1 单片机电路设计图单片机电路比较简单,在与接口电路连接的的基础上,分别采用单片机的一般I/O接口实现与其他电路的连接。由于是多路通信,所以每一路的硬件设计基本相同,下面为单片机部分电路图。图2-3 单片机部分电路图由图2-3可以看出,在单片机的时钟设计上与其他
31、的单片机有一定区别,MSP430F149单片机采用两个时钟输入,一个32KHZ的时钟信号,一个8MHZ的时钟信号,该系统的时钟信号都是采用晶体振荡器实现的.考虑到电源的输入波纹对单片机的影响,在电源的管脚增加一个0.1F的电容来实现滤波,以减小输入端受到的干扰。另外单片机还有模拟电源的输入端,所以这里需要考虑干扰问题,在该系统中的干扰比较小,因此模拟地和数字地共地,模拟电源输入端增加一个滤波电容以减小干扰10。第三章 软件设计 3.1 功能描述3.1.1 上位机和下位机实现的功能一、功能描述:1、上位机功能(1)向下位机进行呼叫,接着发送字符串,最后发送结束标志(2)按照一定的时间间隔对串口进
32、行读操作,如果有数据需要接收,则进行数据接收.2、下位机功能(1)接收功能:识别上位机发送的地址,如果地址匹配则接收数据,直到结束标志到来,则停止接收。(2)发送功能:下位机有数据需要发送时,首先向上位机发送本机地址,然后发送数据,最后发送结束标志。3.2 程序设计 3.2.1 下位机程序设计一、下位机通讯协议分布式控制系统中的下位机的每台单片机均有唯一的地址。通信开始时,先由PC机呼叫被叫单片机的地址,单片机在接收到PC机的呼叫后,首先判断是不是自己的地址,如果不是就不予理睬。如果是,则发送呼叫应答信号,并根据上位机的命令进行相应的接收或发送。根据以上要求以及 UART通信协议基本内容,可以
33、将下位机通信协议设置如下表:表3-1 下位机通讯协议格式地 址数 据 结束地址:取值18,即上位机可以呼叫的8个下位机之一,发送时地址位有效。数据:取值9127,为ASC 可显示字符。结束:0。二、下位机程序流程图下位机(单片机)程序设计包括初始化设计、串口中断服务设计和主处理程序设计。本例虽然有多个下位机,但他们除了本机地址的设置不同外,其他硬件电路都是相同的,所以各下位机的软件设计也是相同的。按照通信协议的要求可以设计出如图3-1的下位机程序流程。图3-1 下位机(单片机)主程序流程图三、初始化设置初始化设置包括时钟初始化,端口初始化和串口初始化。1、时钟初始化程序及说明:#include
34、 #include UART.h void Init_CLK(void) unsigned int i; BCSCTL1 = 0X00;/将寄存器的内容清零 /XT2震荡器开启 /LFTX1工作在低频模式 /ACLK的分频因子为1 do IFG1&=OFIFG; / 清除OSCFault标志for(i=0x20;i0;i-); while (IFG1 & OFIFG) = OFIFG); / 如果OSCFault =1 BCSCTL2=0x00; /将寄存器的内容清零 BCSCTL2 += SELM1;/MCLK的时钟源为TX2CLK,分频因子为1 BCSCTL2 += SELS;/SMCLK
35、的时钟源为TX2CLK,分频因子为1 由上面的程序可以知道,只要设置BCSCTL1和BCSCTL2寄存器的相应位就可以获得需要的MCLK、SMCLK、和ACLK的时钟信号。2、端口初始化 void Init_Port(void) /将所有的管脚在初始化的时候设置为输入方式 P3DIR = 0; /将所有的管脚设置为一般I/O口 P3SEL = 0; return; 上面的初始化程序将P3口初始化为一般的I/O接口。3、串口初始化由于串口1(UART1)的管脚号为P3.6和P3.7,端口初始化只是将端口设置为一般的I/O接口。而本设计里需要将P3.6和P3.7作为UART的输出和输入管脚,所以这
36、里需要对其另外初始化。UART1的初始化程序代码为:、void Init_UART1(void) U1CTL = 0X00; /将寄存器的内容清零UCTL1&=SWRST; /SWRDT复位,UART允许UCTL1=CHAR+MM; /8位数据位,1位停止位,地址位模式 URCTL1 |=URXWIE;/只有地址字符使URXIFG置位 UBR0_1 = 0X03; UBR1_1 = 0X00;UMCTL_1 = 0X4A; /使用32KHz晶振时,波特率为9600bps U1TCTL=0x10;/选定ACLK(32KHz晶振)为时钟源 ME2 |= UTXE1 + URXE1; /使能UART
37、1的TXD和RXD IE2 |= URXIE1; /使能UART1的RX中断 IE2 |= UTXIE1; /使能UART1的TX中断 P3SEL |= BIT6; /设置P3.6为UART1的TXD P3SEL |= BIT7; /设置P3.7为UART1的RXD P3DIR |= BIT6;/P3.6为输出管脚 return; 根据硬件设置的要求,上面的程序设置了串口1的参数,比如8位数据位,1位停止位,地址位多机模式波特率发生器选择ACLK,波特率为9600波特/秒等,将P3.6和P3.7设置为串口1的I/O管脚。四、串口中断服务程序串口接收和发送都采用中断方式,设计单片机通信程序时,必
38、须充分发挥单片机的效率,由于单片机多应用于实时性较强的控制场合,因此, 应将及时响应和控制对象的动作放在优先考虑的位置,以尽量减少通信等辅助性操作所占用的CPU时间11。基于上述考虑,在设计单片机通信程序时,将中断程序分为接收中断服务程序和发送中断服务程序2部分。下面为串口通信程序流程图:图3-2串口通信模块程序流程图1、接收中断服务程序 当有数据收到时,设置一个标志通知主程序有数据到来,当地址位验证无误后,则开始接收数据。下面为接收中断处理程序代码:interrupt UART1RX_VECTOR void UART1_RX_ISR(void)if(URCTL1&URXWIE) /接收为地址
39、方式时等待正确的地址出现if(URBUF_1=ADDRESS) /地址正确,改变接收为数据方式,准备接收 URCTL1&=URXWIE;nRX1_Len_temp = 0; else /接收为数据时UART1_RX_BUFnRX1_Len_temp = RXBUF1;/数据存入UART1_RX_BUF里 nRX1_Len_temp += 1; if(UART1_RX_BUFnRX1_Len_temp += 0) /是否到达停止位 nRX1_Len = nRX1_Len_temp; nRev_UART1 = 1; /设置标志来通知主程序nRX1_Len_temp = 0;URCTL1 |=URX
40、WIE; /数据收完改变为地址方式 对于接收中断,程序处于等待状态,当外面有数据到来时则触发接收,进入接收中断服务程序,当地址验证正确开始后面的数据,中断从“RxBUF1”寄存器里读取数据,将读到的数据放到“UART1_RX_BUF ”全局缓冲区里,在接收数据之后设置一个标志“nRev_UART1”来通知主程序,完成后等待下一中断的到来。接收中断服务程序包含了对地址位是否匹配的验证。2、发送中断服务程序 当主程序有数据要发送时,设置一个中断标志进入中断并发送数据。下面为程序代码:interrupt UART1TX_VECTOR void UART1_TX_ISR(void) if(nTX1_L
41、en != 0) nTX1_Flag = 0;/ 表示缓冲区里的数据没有发送完 TXBUF1=0x01; /先写入地址字符 TXBUF1 = UART1_TX_BUFnSend_TX1; /开始传输数据 nSend_TX1 += 1; if(nSend_TX1 = nTX1_Len) /数据是否发送完 nSend_TX1 = 0; nTX1_Len = 0; nTX1_Flag = 1; /缓冲区里没有数据要发送了 对于发送中断,程序一般处于禁止等待状态。只有当单片机的发送缓冲区历由数据需要发送,并将发送中断置为允许方式后,发送中断才开始工作。发送时从缓冲区里发送数据,遵守通讯协议:首先发送地
42、址位,然后发送需要传输的数据,最后发送校验以及结束标志。在发送中断服务程序里从“UART1_TX_BUF ”全局缓冲区里取出数据给“TXBUF1”寄存器进行发送,发送完后发送中断服务程序等待下一中断的到来。以上两程序可以看出采用中断有很好的结构,只要在中断服务程序里理接收和发送数据,然后与主程序进行数据交换,易实现多任务操作,很好利用单片机资源。五、主处理程序主处理程序包含初始化、设置串口工作方式、对接收到的数据进行处理以及封装需要发送的数据。下面是它的程序代码。#include #include sp3220.h/定义串口操作变量char nRev_UART1;/ 串口 1 的接收标志cha
43、r UART1_TX_BUF60;/ 串口 1 的发送缓冲区char UART1_RX_BUF60;/ 串口 1 的接收缓冲区int nTX1_Len;char nRX1_Len;char nRX1_Len_temp;char nTX1_Flag;int nSend_TX1;void main(void)int nRes_UART1; int nRes = 0; char UART1_RX_Temp60; int i; int n;WDTCTL = WDTPW + WDTHOLD; / 关闭看门狗 _DINT(); / 关闭中断 Init_CLK(); / 初始化时钟 Init_Port(); / 初始化端口 Init_UART1(); / 初始化串口1_EINT(); / 打开中断for(;) / 进入处理循环 if(nRev_UART1 = 1) /如果有接收中断 nRev_UART1 = 0; for(i = 0;i nRX1_Len;i+) UART1_RX_Tempi = UART1_RX_BUFi; / 将接收到的数据拷贝到临时缓冲区。 nRes = ProcessCMD(UART1_RX_Temp,nRX1_Len);switch(nRes) case 1
链接地址:https://www.31ppt.com/p-4663523.html