本文来自http://blog.youkuaiyun.com/hellogv/ ,引用必须注明出处!
最近要做MSP430上的开发,一上手就要做IO模拟UART这种难度的玩意,幸好网上已经有很多现成的MSP430的软串口实现例子,本文代码大部分参考>http://www.microcontrol.cn/430base.htm上的《MSP430的Timer_A实现模拟串口功能例程》,并且成功移植到MSP430FG439之上,不过移植的过程有点匪夷所思。。。。由于才学430没几天,所以花了一周才调试出IO模拟UART。。。。
接下来就贴上100%能在MSP430FG439上使用的代码(即使是同一Family的不同型号,也会有区别):
//利用定时器A 作串行口波特率发生器用,利用捕捉比较功能实现异步串行通信。 //芯片型号:MSP430FG439 P1.0---TXD P1.1---RXD//Timer_A TACLK=ACLK //波特率为 2400BIT/S TBIT1=14 TBIT0_5=6//帧格式:(0)XXXXXXXX(1),0为起始位,1为结束位,XXXXXXXXX为8位数据#include <msp430xG43x.h>#define TBIT1 14; //TBIT1 为1 位时间 #define TBIT0_5 6; //TBIT0_5 为半位时间 #define TXD BIT0 //使用P1.0作为发送,特殊功能脚,用CCI0A做比较输出#define RXD BIT1 //使用P1.1作为接收,特殊功能脚,用CCI0B做捕获输入unsigned int TR_COUNT; //发收计数器 unsigned int T_DATA=0x