欢迎来到天天文库
浏览记录
ID:59253914
大小:4.40 MB
页数:4页
时间:2020-09-08
《msp430g2553-串口调试测试程序-寡人-发送与接收.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/******************************************************************************本程序是单片机MSP430G2553P1.2----------------------------UCA0TXD串口发送端P1.1----------------------------UCA0RXD串口接受端P1.0----------------------------红灯指示P1.6----------------------------绿灯指示利用主辅时钟为1
2、MHZ,串口波特率9600,波特率:/9600=104UCA0BR0=104;//1MHz9600UCA0BR1=0;//1MHz9600现象:功能(1)看到P1.0---红灯指示;P1.6---绿灯指示循环闪烁。同时电脑串口调试助手(设置波特率:9600,无校验,8位数据位,1位停止位)不断显示,0x00,0x01,0x40,0x41。功能(2)打开电脑串口调试助手,发送区有数据待发送时,在接受区将看到相应的数据。*******************************************************
3、***********************/#include"msp430g2553.h"#defineuintunsignedint#defineucharunsignedcharvoidDelay_us(uintus)//延时us前提是f=1MHZ(不建议用该延时,不是很精确){uinti;for(i=0;i4、;}voidmain(void){uchara=0;ucharTX[4]={0x00,0x01,0x40,0x41};WDTCTL=WDTPW+WDTHOLD;//关闭看门狗BCSCTL1=CALBC1_1MHZ;//设置时钟DCOCTL=CALDCO_1MHZ;P1DIR=0xFF;//AllP1.xoutputsP1OUT=0;//AllP1.xresetP1SEL5、=BIT1+BIT2+BIT4;//P1.1=RXD,P1.2=TXDP1SEL26、=BIT1+BIT2;//P1.4=SMCLK,othersGPIOP27、DIR=0xFF;//AllP2.xoutputsP2OUT=0;//AllP2.xresetUCA0CTL18、=UCSSEL_2;//SMCLKUCA0BR0=104;//1MHz9600UCA0BR1=0;//1MHz9600UCA0MCTL=UCBRS2+UCBRS0;//ModulationUCBRSx=5UCA0CTL1&=~UCSWRST;//**InitializeUSCIstatemachine**IE29、=UCA0RXIE;//串口使能开启__bis_SR_register(GIE);//总中断使能P1DI10、R11、=(BIT0+BIT6);P1OUT12、=(BIT0+BIT6);while(1){//a=0x41时,红绿灯全亮;a=00时,红绿灯全灭;//a=0x01时,红灯亮;绿灯灭;a=0x10时,绿灯亮;红灯灭;UCA0TXBUF=TX[a];Delay_ms(500);P1OUT=UCA0TXBUF;a++;if(a>3)a=0;}}//EchobackRXedcharacter,confirmTXbufferisreadyfirst#pragmavector=USCIAB0RX_VECTOR__interruptvoidU13、SCI0RX_ISR(void)//接受中断{//ucharb;while(!(IFG2&UCA0TXIFG));//USCI_A0TXbufferready?//判断串口的发送是否正在工作,//因为要使用发送功能,所以得判断发送是否忙碌,//只有在不忙碌的时候才可以启用发送。//这一句就是判断发送是否在工作,如果是在工作,那么一直等待到不工作为止。UCA0TXBUF=UCA0RXBUF;//TX->RXedcharacter}硬件连接图:
4、;}voidmain(void){uchara=0;ucharTX[4]={0x00,0x01,0x40,0x41};WDTCTL=WDTPW+WDTHOLD;//关闭看门狗BCSCTL1=CALBC1_1MHZ;//设置时钟DCOCTL=CALDCO_1MHZ;P1DIR=0xFF;//AllP1.xoutputsP1OUT=0;//AllP1.xresetP1SEL
5、=BIT1+BIT2+BIT4;//P1.1=RXD,P1.2=TXDP1SEL2
6、=BIT1+BIT2;//P1.4=SMCLK,othersGPIOP2
7、DIR=0xFF;//AllP2.xoutputsP2OUT=0;//AllP2.xresetUCA0CTL1
8、=UCSSEL_2;//SMCLKUCA0BR0=104;//1MHz9600UCA0BR1=0;//1MHz9600UCA0MCTL=UCBRS2+UCBRS0;//ModulationUCBRSx=5UCA0CTL1&=~UCSWRST;//**InitializeUSCIstatemachine**IE2
9、=UCA0RXIE;//串口使能开启__bis_SR_register(GIE);//总中断使能P1DI
10、R
11、=(BIT0+BIT6);P1OUT
12、=(BIT0+BIT6);while(1){//a=0x41时,红绿灯全亮;a=00时,红绿灯全灭;//a=0x01时,红灯亮;绿灯灭;a=0x10时,绿灯亮;红灯灭;UCA0TXBUF=TX[a];Delay_ms(500);P1OUT=UCA0TXBUF;a++;if(a>3)a=0;}}//EchobackRXedcharacter,confirmTXbufferisreadyfirst#pragmavector=USCIAB0RX_VECTOR__interruptvoidU
13、SCI0RX_ISR(void)//接受中断{//ucharb;while(!(IFG2&UCA0TXIFG));//USCI_A0TXbufferready?//判断串口的发送是否正在工作,//因为要使用发送功能,所以得判断发送是否忙碌,//只有在不忙碌的时候才可以启用发送。//这一句就是判断发送是否在工作,如果是在工作,那么一直等待到不工作为止。UCA0TXBUF=UCA0RXBUF;//TX->RXedcharacter}硬件连接图:
此文档下载收益归作者所有