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

📄 max3232.c

📁 基于msp430的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 + -