[PIC®/AVR®/dsPIC®产品] 【4月晒板卡】+PIC16F18446开启串口通讯

[复制链接]
1556|1
 楼主| hu9jj 发表于 2019-6-7 16:34 | 显示全部楼层 |阅读模式
    经过几次反复测试,今天串口通讯终于成功了。测试过程如下:
    首先在MMC中配置好EUSART1,我选择的是8位数据,波特率为9600,为什么不选115200,因为在本单片机中只有9600的误码率最低,仅0.16%,没有比这更低的误码率了。

    引脚的配置用默认的,即RB5为RX,RB7为TX,这些设置不用变动。

    生成基本代码后,初始化函数已经包含在main()函数的SYSTEM_Initialize()中,只要将接收和发送的范例复制到主循环中,这段代码在eusart1.h文件中可以找到,不过要注意头文件里的代码有两处拼写错误,其中一个是缺少字母,另一个是缺少连接符。

    这是当接收到串口信息时立即将收到的信息发送返回,我在此添加了led灯闪亮,以便观察。另外我还添加了一个自动循环发送从ASCII码33到120的代码,以便测试发送状况。下面是main函数代码:
  1. void main(void)
  2. {
  3.     // initialize the device
  4.     SYSTEM_Initialize();

  5.     // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
  6.     // Use the following macros to:

  7.     // Enable the Global Interrupts
  8.     //INTERRUPT_GlobalInterruptEnable();

  9.     // Enable the Peripheral Interrupts
  10.     //INTERRUPT_PeripheralInterruptEnable();

  11.     // Disable the Global Interrupts
  12.     //INTERRUPT_GlobalInterruptDisable();

  13.     // Disable the Peripheral Interrupts
  14.     //INTERRUPT_PeripheralInterruptDisable();
  15.     TMR0_StartTimer();
  16.    
  17.     IO_RA2_SetLow();
  18.     for(mode=0;mode<6;mode++){
  19.         delay_ms(500);
  20.         IO_RA2_Toggle();
  21.     }
  22.     mode = 33;
  23.     IO_RA2_SetHigh();
  24.     while (1)
  25.     {
  26.         // Add your application code
  27.         ms++;
  28.         if(ms>500){
  29.             ms = 0;
  30.             mode++;
  31.             if(mode>120)
  32.                 mode = 33;
  33.             EUSART1_Write(mode);
  34.         }
  35.         if(0==IO_RC2_GetValue()){
  36.             IO_RA2_SetLow();
  37.             delay_ms(200);
  38.             IO_RA2_SetHigh();
  39.         }
  40.         // Logic to echo received data
  41.         if(EUSART1_is_rx_ready())
  42.         {
  43.             IO_RA2_SetLow();
  44.             rxData = EUSART1_Read();
  45.             if(EUSART1_is_tx_ready())
  46.             {
  47.                 EUSART1_Write(rxData);
  48.             }
  49. //            delay_ms(500);
  50.             IO_RA2_SetHigh();
  51.         }
  52.     }
  53. }

    下面是测试过程:


    通过use to TTL转接板(CH340)将电脑与开发板连接好:


    这是电脑上串口调试助手显示的信息:







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
CoolSilicon 发表于 2019-6-10 08:27 | 显示全部楼层
手动点赞!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:Microchip
简介:让我们来为您提供帮助。我们可提供各种资源来帮助您解决一切问题。是否需要与我们的客户支持团队联系?您可以通过电话、在线聊天功能或电子邮件与他们联系。

151

主题

1063

帖子

11

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