[应用方案] 【赛元95F】+4.DIY拓展2:串口0数据收发测试

[复制链接]
 楼主| 一路向北lm 发表于 2020-3-24 20:47 | 显示全部楼层 |阅读模式
焊接了三颗排针,连接到SC95F8617usart0引脚(P2.0 RXDP2.1 TXD,焊接完毕如下:
667805e7a018156b20.png

 楼主| 一路向北lm 发表于 2020-3-24 20:49 | 显示全部楼层
测试代码如下,(包括串口初始化、串口数据的收发)
  1. //uart.c 代码
  2. #include "bsp/uart.h"
  3. bit UartSendFlag = 0; //发送中断标志位
  4. bit UartReceiveFlag = 0; //接收中断标志位

  5. /*****************************************************
  6. *函数名称:void Uart_Init(uint Freq,unsigned long int baud)
  7. *函数功能:Uart中断初始化,选择Timer1作为波特率信号发生器
  8. *入口参数:Freq-主频,baud-波特率
  9. *出口参数:void
  10. *****************************************************/
  11. void Uart_Init(unsigned int Freq,unsigned long int baud)  
  12. {
  13.         P2CON &= 0xFC;   //TX/RX设置为输入带上拉
  14.         P2PH  |= 0x03;
  15.        
  16.         SCON  |= 0X50;   //设置通信方式为模式一,允许接收
  17.         TMCON |= 0X02;
  18.         TH1 = (Freq*1000000/baud)>>8;          //波特率为T1的溢出时间;
  19.         TL1 = Freq*1000000/baud;
  20.         TR1 = 0;
  21.         ET1 = 0;
  22.         EUART = 1;     //开启Uart中断
  23.         EA = 1;
  24. }

  25. /*****************************************************
  26. *函数名称:Uart_Send_Byte(unsigned char byte)
  27. *函数功能:串口发送一个字节函数
  28. *入口参数:unsigned char byte
  29. *出口参数:void
  30. *****************************************************/
  31. void Uart_Send_Byte(unsigned char byte)
  32. {
  33.   
  34.           SBUF = byte;
  35.                 while(!UartSendFlag);
  36.                 UartSendFlag = 0;
  37. }

  38. /*****************************************************
  39. *函数名称:void Uart_Send_String(unsigned char *str)
  40. *函数功能:串口发送字符串函数
  41. *入口参数:unsigned char *str
  42. *出口参数:void
  43. *****************************************************/
  44. void Uart_Send_String(unsigned char *str)
  45. {
  46.     while(*str)
  47.                 {
  48.                   Uart_Send_Byte(*str);
  49.                         str++;
  50.                 }
  51. }

  52. /*****************************************************
  53. *函数名称:void Uart_Recv_Date()
  54. *函数功能:串口接收数据处理函数
  55. *入口参数:void
  56. *出口参数:void
  57. *****************************************************/
  58. void Uart_Recv_Date()
  59. {
  60.         unsigned char Byte;
  61.   if(UartReceiveFlag == 1)
  62.         {
  63.            UartReceiveFlag = 0;
  64.                  Byte = SBUF;
  65.                  Uart_Send_Byte(Byte);
  66.         }
  67. }

  68. /*****************************************************
  69. *函数名称:void UartInt(void) interrupt 4
  70. *函数功能:Uart中断函数
  71. *入口参数:void
  72. *出口参数:void
  73. *****************************************************/
  74. void UartInt(void) interrupt 4
  75. {
  76.         if(TI)
  77.         {
  78.                 TI = 0;       
  79.                 UartSendFlag = 1;               
  80.         }
  81.         if(RI)
  82.         {
  83.                 RI = 0;       
  84.                 UartReceiveFlag = 1;
  85.         }       
  86. }


 楼主| 一路向北lm 发表于 2020-3-24 20:49 | 显示全部楼层
  1. /****************************************************************************/
  2. Uart.h代码

  3. #ifndef _UART_H
  4. #define _UART_H
  5. #include "H/SC95F861x_C.H"

  6. void Uart_Init(unsigned int Freq,unsigned long int baud);
  7. void Uart_Send_Byte(unsigned char byte);
  8. void Uart_Send_String(unsigned char *str);
  9. void Uart_Recv_Date(void);
  10. #endif


 楼主| 一路向北lm 发表于 2020-3-24 20:50 | 显示全部楼层
  1. //主函数
  2. void main(void)
  3. {
  4.         IO_Init();
  5.         Uart_Init(32,9600);
  6.         Uart_Send_String("\r\n串口初始化¯..............OK!\n");
  7.         while(1)
  8.         {
  9.                   Uart_Recv_Date();
  10.         }

  11. }


 楼主| 一路向北lm 发表于 2020-3-24 20:50 | 显示全部楼层
实验效果如下,可实现对USART0的数据收发。
347105e7a021517da6.png

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

本版积分规则

293

主题

3837

帖子

81

粉丝
快速回复 在线客服 返回列表 返回顶部

293

主题

3837

帖子

81

粉丝
快速回复 在线客服 返回列表 返回顶部