一、引脚说明
1.1 接口定义
485引脚 功能说明
DE、RE 置为高电平则处于发送状态,置为低电平则处于接收状态
1.2 硬件连接
485引脚 430引脚
DE、RE P4.0
二、移植文件
将 485.c 、 485.h 文件加入到工程文件夹下
2.1 485.c
#include <msp430x14x.h>
#include "485.h"
//9600.8.N.1
extern char str[30];//最终显示的字符串
char data = 0;
void Set_UART1(void)
{
UCTL1 |= SWRST; //置为1
UCTL1 |= CHAR; //选择8-bit字符
UTCTL1 |= SSEL1; //驱动时钟选择外部时钟
UBR01 = 0x41; //波特率9600
UBR11 = 0x03;
UMCTL1 = 0x00; //调整
ME2 |= UTXE1 + URXE1; //使能USART1的TXD和RXD
UCTL1 &= ~SWRST; ////置为0 初始化UART状态机
IE2 |= URXIE1; // 中断允许寄存器设置,接收中断允许
P3SEL |= BIT6 + BIT7; //将P3.6,P3.7选做UART1的通信端口
P3DIR |= BIT6; //设置TX口方向为输出
DRE_out;//连接485芯片的DE,RE端口的IO设置为输出状态
}
void Send1Char(char sendchar)//发送一个字符
{
while (!(IFG2 & UTXIFG1)); //等待发送寄存器为空
TXBUF1 = sendchar;
}
void PutString0(char *ptr)//基于发送一个字符函数实现发送字符串
{
while (*ptr != '\0')
Send1Char(*ptr++); // 发送数据
}
void _485(void)
{
Set_UART1();//UART1初始化
DE;//设置485芯片处于发送状态
PutString0("1你好天朝hello world........test485");
delay_ms(5);
_EINT();//打开串行中断
RE;//设置485芯片处于接收状态
}
//串口接收中断,接收字符串指令.
#pragma vector=USART1RX_VECTOR
__interrupt void usart1_rx(void)
{
data = RXBUF1;//data保存接收到的字符
//测试代码 收到什么发什么
DE;//设置485芯片处于发送状态
Send1Char(data);
delay_ms(5);
RE;//设置485芯片处于接收状态
/*
str[i]=data;
i++;
if(i==10)//缓冲区满就发出
{
str[i]=0;
i=0;
DE;//设置485芯片处于发送状态
PutString0(str);
delay_ms(5);
RE;//设置485芯片处于接收状态
}
*/
/*
if(data=='#')//监听到结束字符'#' 就发出之前的字符串并显示在液晶上
{
str[i - 1]=0;
mLCD_ClearLCD();
mLCD_WriteStrings(0,0,"revice",0);
mLCD_WriteStrings(0,16,str,0);
mLCD_LCDDISP();
DE;//设置485芯片处于发送状态
PutString0(str);
delay_ms(5);
RE;//设置485芯片处于接收状态
i=0;
}
*/
}
2.2 485.h
#define CPU_F ((double)8000000) //内部延时函数所需时钟频率/Hz
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)(x)/1000.0))
#define DRE_out P4DIR |= BIT0 //连接485芯片的DE,RE端口的IO设置为输出状态
#define DE P4OUT |= BIT0 //设置485芯片处于发送状态
#define RE P4OUT &= ~BIT0 //设置485芯片处于接收状态
void Set_UART1(void);
void PutString0(char *ptr);
void Send1Char(char sendchar);
void _485(void);
|