MAX232串口通信

简单程序,可做改进,实用!

欢迎指教!

#include <reg51.h>
#include <string.h> 
#include <intrins.h> 


unsigned char ch;
bit read_flag= 0 ; 


void delayms(unsigned int ms)
{
   unsigned int i;
   while(ms--)
   {
     for(i = 0; i< 250; i++)
     {
      _nop_();
 _nop_();
      _nop_();
 _nop_();
     }
   }
}


void init_serialcom( void ) //串口通信初始设定

    EA=1;
ES=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1; 
/* SCON = 0x50 ;   //UART为模式1,8位数据,允许接收
    TMOD |= 0x20 ; //定时器1为模式2,8位自动重装
    PCON |= 0x80 ; //SMOD=1; 
    TH1 = 0xFD ;   //Baud:9600 fosc="11.0592"MHz 
// TL1 = 0xfD;
    IE |= 0x90 ;     //Enable Serial Interrupt 
    TR1 = 1 ;       // timer 1 run 
    TI=1; */ 



//向串口发送一个字符 
void send_char_com( unsigned char ch) 

    SBUF=ch; 
    while (TI== 0); 
    TI= 0 ; 



void sendStrings(char *dat)
{
while(*dat!='\0')
{
send_char_com(*dat++);
delayms(10);
}
}


//串口接收中断函数 
void serial () interrupt 4 using 3 

    if (RI) 
    { 
        RI = 0 ; 
        ch=SBUF;
  read_flag= 1 ; //就置位取数标志            
    }



main() 

    init_serialcom(); //初始化串口
delayms(10);
send_char_com( 0X11);
sendStrings("Hello,world!"); 
while ( 1 ) 

if (read_flag) //如果取数标志已置位,就将读到的数从串口发出 

            read_flag= 0 ; //取数标志清0 
delayms(10);
send_char_com(0x22);
delayms(10);
P2=ch; 
// Sel_SIM(ch) ;
read_flag=0;

     } 



  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值