• [51单片机] 串口通讯 简单通信


     1 /*-------------------------------------------
     2 简单的串口通信
     3 -------------------------------------------*/
     4 #include<reg51.h>
     5 
     6 #define uint unsigned int
     7 #define uchar unsigned char
     8 
     9 
    10 uchar flag,a,i;                    //标志接收串口中断标志,接收SBUF内容
    11 uchar code table[]="I get ";
    12 /*--------------------------------------------
    13 延时函数 
    14 ---------------------------------------------*/
    15 void delay_ms(uint z)        
    16 {
    17     uint y;
    18     while(z--)
    19         for(y=110;y>0;y--);
    20 }
    21 /*--------------------------------------------
    22 USAR初始函数 
    23 ---------------------------------------------*/
    24 void USRT_init()
    25 {
    26     TMOD=0x20;            //设置T1定时器工作方式2
    27     TH1=0xfd;            //T1定时器装初值
    28     TL1=0xfd;
    29     TR1=1;                //启动T1定时器
    30     REN=1;                //允许串口中断接收
    31     SM0=0;                //设定串口工作方式
    32     SM1=1;
    33     EA=1;                //开总中断
    34     ES=1;                //开串口中断
    35 }
    36 /*--------------------------------------------
    37 串口中断程序
    38 ---------------------------------------------*/
    39 void ser()interrupt 4
    40 {
    41     RI=0;
    42     a=SBUF;
    43     flag=1;
    44 }
    45 /*--------------------------------------------
    46 主函数
    47 ---------------------------------------------*/
    48 void main()
    49 {
    50     USRT_init();
    51     while(1)
    52     {
    53         if(flag==1)                //检测到串口中断。表示有数据传过来了
    54         {
    55             ES=0;                //关闭串口中断,接下来要发送数据,如果不关闭每次发送之后串口中断都会执行又进入if(flag==1)那里,然后死循环
    56             for(i=0;i<6;i++)    //将table[]中的前6个发送出去
    57             {
    58                 SBUF=table[i];
    59                 while(!TI);        //每次等待发送完毕,再执行下一条
    60                 TI=0;            //手动清0
    61             }
    62             SBUF=a;                //将收到的数据发送出去
    63             while(!TI);
    64             TI=0;
    65             ES=1;
    66             flag=0;
    67         }
    68     }
    69 }
  • 相关阅读:
    Java API之时间、异常和集合
    JAVA API 之包装类、数学类和 Calendar 类
    regular expression ---正则表达式 --- REGEX 的一些补充
    正则表达式
    JavaScript 的一些应用场景分析
    JavaScript 简介
    ERROR internal error: process exited while connecting to monitor
    常用服务默认端口号
    shell笔记
    php登录注册
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/3788696.html
Copyright © 2020-2023  润新知