⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 df_uart0.c

📁 MSP430开发的使用PID算法温度控制程序 本程序通过485总线与上位机通信发送和接受命令
💻 C
字号:
//****************************************************************************
//文件名: df_uart0.c
//描述:UART异步串行通讯程序。使用USART0。
//      晶体振荡器 XT2:8MHz  LFXT1:32.768kHz
//      MCLK:8MHz SMCLK:2MHz  ACLK:32.768kHz
//      USART0波特率:57600bit/s,8位数据位,1位停止位,奇校验
//****************************************************************************
#include <MSP430x14x.h>
#include "df_uart0.h"
#include "Receiver.h"
#include "xieyi.h"



#define USART_DIR P3DIR
#define USART_SEL P3SEL
#define USART_IN  P3IN
#define USART_OUT P3OUT

#define TCP0      BIT3
#define UTXD0     BIT4
#define URXD0     BIT5

void Uart0Init()
{
    USART_SEL |= UTXD0 + URXD0;              //设置管脚为第二功能
    USART_DIR |= TCP0   + UTXD0;             //设置管脚为输出方式
    USART_OUT &= ~TCP0;                      //置RS-485为接收方式
    UCTL0 = CHAR+SWRST;					     //8位数据,1位停止位
    UTCTL0 = SSEL1;                          //选择UCLK = SMCLK
    UBR00 = (unsigned char)(SMCLK / BAUDRATE0);               //设置波特率9600/s
    UBR10 = (unsigned char)((SMCLK / BAUDRATE0) >> 8);        
    UMCTL0 = 0x00;
    UCTL0 &= ~SWRST;
    ME1 |= UTXE0 + URXE0;                   //打开模块USART0
    IE1 |= URXIE0 ;                         //打开USART0接收中断
}

/*****************************************************************************
发送函数。采用查询方式。
pBuffer:指向发送数据缓冲区的指针
n_byte:发送的字节数
******************************************************************************/
void SendUart0(unsigned char *pBuffer,unsigned char n_byte)
{
        unsigned int q0;
        USART_OUT |= TCP0;   //置RS-485为发送方式
		P5OUT |= BIT6;

        for (q0=0;q0<n_byte;q0++)
        {
                while((IFG1&UTXIFG0)==0);//modify IFG2 and UTXIFG1
                TXBUF0 = *pBuffer;       //modefy TXBUF1
                pBuffer++;
        }
        while((IFG1&UTXIFG0)==0);
        for(q0=0;q0<255;q0++);
        USART_OUT &= ~TCP0;
		P5OUT &= ~BIT6;
}


//****************************************************************************
//USART0接收中断函数
//****************************************************************************
#pragma vector=USART0RX_VECTOR
__interrupt void Usart0Rx()
{
	ReceiverData(RXBUF0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -