📄 max3232.c
字号:
/**************Max3232.c***************************************/
#include<msp430x16x.h>
#include"max3232.h"
#include"lcd.h"
#include"7290.h"
/************选择模块,设定时钟和波特率********************************
select :选择模块
select :0 使用USART0
1 使用USART1
把接收到的字符存放在RAM中,地址从0X220开始
*************************************************************************/
__no_init unsigned char temp[21] @0x220;
unsigned char* p=temp ;
unsigned char ReadBuf[2];
void init_232() {
#if select==1
UCTL1=SWRST; //在SWRST=1情况下设置串口
UTCTL1=ACLK; //选择时钟源为 ACLK(默认为32768Hz), (要求在主程序里启动ACLK)
UBR01=0x03; //选择9600波特率
UBR11=0x00;
UMCTL1=0X4A;
UCTL1=CHAR; //使用8位长度字符,校验禁止
ME2|=UTXE1+URXE1; //接收和发送允许
IE2|=URXIE1; //接收中断允许
P3SEL|=0xc0; //P3.7 P3.6用作TXD,RXD
P3DIR|=0x80; //P3.7输出
UCTL1&=~SWRST; //设置完成
_EINT(); //开启总中断
#elif selecy==0
UCTL0=SWRST; //在SWRST=1情况下设置串口
UTCTL0=ACLK; //选择时钟源为 ACLK
UBR00=0x03; //选择9600波特率
UBR10=0x00;
UMCTL0=0X4A;
UCTL0=CHAR; //使用8位长度字符,校验禁止
ME1|=UTXE0+URXE0; //接收和发送允许
IE1|=URXIE0; //接收中断允许
P3SEL|=0x30; //P3.4 P3.5用作TXD,RXD
P3DIR|=0x10; //P3.4输出
UCTL0&=~SWRST; //设置完成
_EINT(); //开启总中断
temp[20]='\0';
#endif
}
/***********测试程序**************************************************/
#pragma vector=UART0RX_VECTOR
__interrupt void use_art0() {
while((IFG1&UTXIFG0)==0); //判断USART0缓存是否有数据
*p=RXBUF0; //发送接收的字节
TXBUF0=*p;
p++;
if(p==temp+20)
p=temp;
// TXBUF0=RXBUF0;
}
#pragma vector=UART1RX_VECTOR
__interrupt void use_art1() {
while((IFG2&UTXIFG1)==0); //判断USART0缓存是否有数据
TXBUF1=RXBUF1; //发送接收的字节
}
#pragma vector = PORT2_VECTOR
__interrupt void l7289do ( void ) {
uchar key_num,i;
IRcvStr(0x70,0x01,(uchar*)ReadBuf,2);
key_num =ReadBuf[0];
if(key_num==4) {
LCD_PutStr(-1,-1,temp);
p=temp;
for(i=0;i<21;i++)
temp[i]='\0';
}
else { //发送按键值 while((IFG1&UTXIFG0)==0); //判断USART0缓存是否有数据
TXBUF0=key_num;
}
P2IFG&=~0X10;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -