[入门必修]串行异步通信.doc
上传人:sy****28 上传时间:2024-09-11 格式:DOC 页数:3 大小:49KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

[入门必修]串行异步通信.doc

[入门必修]串行异步通信.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

微控网原创复制代码//****************************************************************************//描述:在微控MC430F224开发板上实现UART模块串行异步通讯实验。//作者:微控技术论坛总版主DC//编程环境:IAR3.41//目标板:MC430F224(V1.0)unsignedcharBUF;//全局变量,存放据//---------------------------------------------------------------------//关于sign定义unsignedcharsign;//标记寄存器,最大8位标记#defineupdatesign|=BIT0//sign位0:置1时,表示有数据更新.#definecheck_updatesign&BIT0main(void){WDTCTL=WDTPW+WDTHOLD;//关看门狗BCSCTL1=CALBC1_1MHZ;//设定DCO为1MHZ,//[0x10FF]TX2振荡器开,高频模式,设定DCO为1MHZDCOCTL=CALBC1_1MHZ;volatileunsignedintn;do//等待晶振稳定{IFG1&=~OFIFG;for(n=5000;n>0;n--);}while(OFIFG&IFG1);P1DIR|=BIT1+BIT2+BIT3;//LED--D1,D2,D3P1OUT&=~BIT1;//P11输出0,D1LED亮P3SEL|=BIT4+BIT5;//p3.4为TX,P3.5为RXP3DIR|=BIT4;//P3.4为输出方向(TXD口)UCA0CTL1|=UCSSEL0;//[0x40]时钟源选择ACLK=32768晶振UCA0BR1=0;//设置波特率32768/1200=27.3UCA0BR0=27;UCA0MCTL|=UCBRS1;//调整寄存器设置UCBRSx=INT(0.3*8)=2UCA0CTL1&=~UCSWRST;//串口状态机设置完毕,退出USCI设置IE2|=UCA0RXIE+UCA0TXIE;//允许收发中断_EINT();LPM3;//进入低功耗3并使能总中断//或写成_BIS_SR(LPM3_bits+GIE);_NOP();for(;;){_DINT();//关闭总中断_BIS_SR(LPM3_bits+GIE);}}//****************************************************************************//USCI中断用法//USCI_AX和USCI_BX使用同一个中断向量。接收中断标志UCAxRXIFG和UCBxRXIFG和同//一个中断向量连接,发送中断标志UCAxTXIFG和UCBxTXIFG分享另一个中断向量。//****************************************************************************//接收中断服务程序#pragmavector=USCIAB0RX_VECTOR__interruptvoidrx_isr(void){BUF=UCA0RXBUF;//接收一个数据后,存入一个全局变量中P1OUT^=BIT2;//用D2LED指示接收到一个数据update;LPM3_EXIT;//接收完一个数据后,退出低功耗模式}//****************************************************************************//大家注意,MSP340F2上电后UCA0的中断标志寄存器IFG2中UCA0TXIFG发送中断标志位就置1.//在初始化时,只要总中断允许了,同时发送中断也允许了.初始化完后,发送中断服务程序就//被马上执行.//当UCA0TXBUF空闲时,中断标志寄存器IFG2中UCA0TXIFG发送中断标志位就置1.//发送中断服务程序#pragmavector=USCIAB0TX_VECTOR__interruptvoidtx_isr(void){if(check_update)//是否有数据更新{UCA0TXBUF=BUF;//是,将接收到的数据发回去sign&=~BIT0;//清除标志P1OUT^=BIT3;//用D3LED指示发送完一个数据}}//***********************************************