找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1541|回复: 0
收起左侧

RS-232 串口通信

[复制链接]
ID:361216 发表于 2018-6-28 17:46 | 显示全部楼层 |阅读模式
/*******************************************************************************
*  标题:                  RS232串口通信试验(发送)                                      *

*  1.通过本例程了解串口的基本原理及使用 ,理解并掌握对串口进行初始化

   2.请使用串口调试助手(Baud 4800、数据位8、停止位1、效验位无)做为上位机来接收单片机串口所发的信息。
     观察串口调试助手接收窗口
                                                                                         *
* 请学员认真消化本例程,学会用C语言操作串口                                                *
********************************************************************************/

#include <REG52.H>
#include <stdio.h>

void delay(unsigned int i);    //函数声明

char  code  MESSAGE[]= "普中科技助您学习RS232 ,请使用串口调试助手:  ";
unsigned char a;


void main (void) {


        SCON = 0x50;       //REN=1允许串行接受状态,串口工作模式2               
            TMOD|= 0x20;      //定时器工作方式2                       
                PCON|= 0x80;      //波特率提高一倍                                                   
        //        TH1  = 0xFD;     //baud*2  /* reload value 19200、数据位8、停止位1。效验位无(11.0592)     
            TH1 = 0xF3;                                        // //baud*2  /*  波特率4800、数据位8、停止位1。效验位无 (12M)
            TL1 = 0xF3;
                TR1  = 1;        //开启定时器1                                                      
                ES   = 1;        //开串口中断                  
                EA   = 1;        // 开总中断
           // IE = 0x0;

        while(1)
    {  a=0;
       
           while(MESSAGE[a] != '\0')
              {
                SBUF = MESSAGE[a];                //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
         while(!TI);                                // 等特数据传送        (TI发送中断标志)
                 TI = 0;                                        // 清除数据传送标志
               
                a++;                                            // 下一个字符

   }
  delay(1000);  
}

}

/**************************************************
                                                                                            
                  延时处理程序                                                                                                 
                                                                                                  
**************************************************/

void delay(unsigned int i)
{
        unsigned char j;
        for(i; i > 0; i--)
                for(j = 200; j > 0; j--) ;

}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表