zoukankan      html  css  js  c++  java
  • [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 }
  • 相关阅读:
    Android之Handler用法总结
    关于android开发添加菜单XML文件之后无法在R.java中生成ID的问题
    调整Eclipse代码字体大小
    android在进行创建项目gen下没有自动生成R.java
    Android Location在GPS中的应用(一)
    JSON 数据格式解析
    vim 插件管理
    linux开机自动启动
    crontab 定时任务
    shell note
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/3788696.html
Copyright © 2011-2022 走看看