查看: 1970|回复: 3

[其他] 每天解决一个问题26:串口

[复制链接]

该用户从未签到

33

主题

292

帖子

0

高级会员

Rank: 4

积分
600
最后登录
2016-4-19
发表于 2015-9-28 12:28:15 | 显示全部楼层 |阅读模式

地址:https://www.eefocus.com/luo_xinli/blog/14-04/302646_33049.html

只要是C51的MCU都有标准的串口---UART.什么是串口,这是针对并口来说的。如果大家需要了解可以查看一下74L164等串转并芯片了解一下。或者同时了解一下I2C、SPI等接口。凡事大概了解一下,有一个感性的认识即可。

        

      以上是STC89C52系列单片机串口的一种工作方式。好像很复杂。其实我们不必过细的考虑这张图。知道常规的使用方法即可。使用串口必须使用定时器1,,TI、RI是发送和接收数据标志。也就是说定时器1不能用作别的用途。其他的在工程中慢慢理解。

我们看看在项目中使用的代码

#include <string.h>

#define FOSC 11059200L

#define BAUD 9600


/***********************************/

// 串口初始化程序

/***********************************/

void uartInit( )

{

    SCON = 0x50;

    TMOD |= 0x20;

    TH1=TL1 = -(FOSC/12/32/BAUD);

    TR1 =1;

    ES = 1;

    EA =1;

}


/***********************************/

// 串口1发送一个字节到上位机

/***********************************/

void uartSendData(unsigned char dat)       

{   

     SBUF=dat;

    while(TI==0);       

     TI=0;   

}

/***********************************/

// 串口发送一个数组到上位机

/***********************************/

void uartSendArray(unsigned char *dat, unsigned  char len )

{

    unsigned char i;

   for(i=0; i<len; i++)

   {

         uartSendData(*dat);

           dat++;

   }

}


//-----------------------------------

//          串口1中断程序

//------------------------------------


void uart_Isr( )interrupt 4

{

  unsigned char dat =SBUF;

  if(RI)

  {

        RI=0;

        uartRecive(dat);   //接收数据函数             

  }



if(TI)

  {

      / / TI=0;       

  }

}


void main(  )

{

     unsigned char m,  n;

    char buf[ ]="hello world!\r\n";

      uartInit(   );

     while(1)

    {

        for(m=0;m<200;m++)

            for(n=0;n<200;n++);

           uartSendArray(buf,  strlen(buf));

    }

}


        如果使用串口助手,可以发现,该段代码以9600波特率向上位机发送了“"hello world!\r\n”。以上代码简单的演示了串口发送数据的方法。


我知道答案 目前已有3人回答
回复

使用道具 举报

该用户从未签到

20

主题

174

帖子

0

高级会员

Rank: 4

积分
770
最后登录
1970-1-1
发表于 2015-9-28 15:02:17 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-30 10:37:26 | 显示全部楼层
    谢谢分享
    freescaleic.org.png
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    642

    帖子

    0

    高级会员

    Rank: 4

    积分
    748
    最后登录
    1970-1-1
    发表于 2015-10-31 10:41:07 | 显示全部楼层
    楼主是男生啊?
    104930kli5jsmlssemljli.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 15:49 , Processed in 0.130644 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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