查看: 2038|回复: 2

[讨论] [每日一帖] 之10__串行通信与辅助之功

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2016-8-17 08:20:45 | 显示全部楼层 |阅读模式
    分享到:
    在正常情况下,我们是通过RGB_LED来指示时间。但在测试阶段及初次启动计时器时,对串行通信功能的需求是不可或缺的。
    要想正确使用串行通信功能,离不开下面几件事,即串行通信的波特率设置、串行收发功能的实现及数据格式的变换。这些功能的保障靠的是串行通信初始化函数init_serialcom()、
    串口字符发送函数send_char_com()、 字符串发送函数send_string_com()、中断接收函数serial ()及相应的主函数。
    相关的函数程序如下:
    1. //串行通信初始化函数
    2. void init_serialcom( void )
    3. {
    4.        SCON = 0x50 ;     //SCON: serail mode 1, 8-bit UART, enable ucvr
    5.            TMOD |= 0x20 ;   //TMOD: timer 1, mode 2, 8-bit reload
    6.            PCON |= 0x80 ;    //SMOD=1;
    7.            TH1 = 0xFA ;      //Baud:9600 fosc=11.0592MHz
    8.            IE |= 0x90 ;       //Enable Serial Interrupt
    9.            TR1 = 1 ;         // timer 1 run
    10.            TI=1;
    11. }
    12. //向串口发送一个字符
    13. void send_char_com( unsigned char ch)
    14. {
    15.              SBUF=ch;
    16.              while (TI== 0);
    17.                  TI= 0 ;
    18. }

    19. //向串口发送一个字符串,strlen为该字符串长度
    20. void send_string_com( unsigned char *str, unsigned int strlen)
    21. {
    22.      unsigned int k= 0 ;
    23.          do { send_char_com(*(str + k)); k++; }
    24.          while (k < strlen);
    25. }

    26. // 串口接收中断函数
    27. void serial () interrupt 4 using 3
    28. {
    29.    if (RI)
    30.    {  
    31.           RI = 0 ;
    32.           ch=SBUF;         //CHi          
    33.           read_flag= 1 ; //就置位取数标志
    34.    }
    35. }
    36. //串行收发测试主函数
    37. main()
    38. {
    39.             init_serialcom(); //初始化串口
    40.                 while ( 1 )
    41.                 {
    42.                    if (read_flag) //如果取数标志已置位,就将读到的数从串口发出
    43.                    {
    44.                     read_flag= 0 ; //取数标志清0
    45.                         send_char_com(ch);
    46.                    }
    47.                 }
    48. }
    复制代码
    下一贴我们将介绍串行收发过程中所涉及的数据格式转换处理。

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-5-11 10:52
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-8-17 09:03:15 | 显示全部楼层
    虽然代码看的有的困难,但格式看起来非常好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

     楼主| 发表于 2016-8-18 09:57:43 | 显示全部楼层
    yerun 发表于 2016-8-17 09:03
    虽然代码看的有的困难,但格式看起来非常好

    不会吧,这是比较基本的好懂呀!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-22 19:36 , Processed in 0.133559 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.