[通用8051核FLASH系列] 【芯圣SDK-HC89F0541测评】+ADC检测与串行通讯功能的结合使用

[复制链接]
1304|0
 楼主| jinglixixi 发表于 2020-7-7 11:19 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-24 14:21 编辑

在开发板没有配置显示功能的情况下,使用串行通讯功能是较好的显示观察手段。对于ADC的检测效果的观察,就可以采用这种办法。
程序设计的思想是使用引脚P06来采集外部模拟信号值,并通过程序通讯来显示采样值。其中,P16为串行通讯的发送端,而P17为串行通讯的接收端。
ADC采集的显示函数为:
  1. void PRT(void)
  2. {
  3.              int f=0;
  4.              guc_Uartbuf_a[0]=gui_AdcValue/1000+'0';
  5.              guc_Uartbuf_a[1]=gui_AdcValue%1000/100+'0';
  6.              guc_Uartbuf_a[2]=gui_AdcValue%100/10+'0';
  7.              guc_Uartbuf_a[3]=gui_AdcValue%10+'0';
  8.              guc_Uartbuf_a[4]=0x0D;
  9.              guc_Uartbuf_a[5]=0x0A;
  10.              IE &=~ 0x40;
  11.              for(guc_i=0;guc_i<6;guc_i++)
  12.              {
  13.                                      if((guc_Uartbuf_a[guc_i]>'0')||(f==1))
  14.                                      {
  15.                                                S2BUF = guc_Uartbuf_a[guc_i];
  16.                                                f=1;
  17.                                      }
  18.                                      else
  19.                                      {
  20.                                                S2BUF = ' ';
  21.                                      }
  22.                                     
  23.                                      if(guc_i==2) f=1;

  24.                                      while(!(S2CON & 0x02));
  25.                                      S2CON &=~ 0x02;
  26.               }
  27.              IE |= 0x40;
  28. }


ADC采集的主程序为:
  1. void main()
  2. {

  3.          while((CLKCON&0x20)!=0x20);
  4.          CLKSWR = 0x51;                                                     
  5.          while((CLKSWR&0xC0)!=0x40);
  6.          CLKDIV = 0x01;
  7.          P1M4 = 0xC2;                       

  8.          P0M6 = 0x02;
  9.          ADCC0 = 0x80;        
  10.          ADCC1 = 0x06;        
  11.          ADCC2 = 0x4B;                                                      

  12.          P1M6 = 0xC2;
  13.          P1M7 = 0x62;
  14.          TXD2_MAP = 0x16;
  15.          RXD2_MAP = 0x17;
  16.         
  17.          RCAP5H = 0xFF;
  18.          RCAP5L = 0x98;
  19.          T5CON = 0x06;        
  20.          S2CON2 = 0x00;
  21.          S2CON = 0x10;         
  22.          IE |= 0x40;
  23.          EA = 1;
  24.         
  25.          while(1)
  26.          {
  27.                    ADCC0 |= 0x40;
  28.                    while(!(ADCC0&0x20));
  29.                    ADCC0 &=~ 0x20;
  30.                    gui_AdcValue = ADCR;
  31.                    PRT();
  32.                    delay();
  33.          }
  34. }


经程序下载后,检测的效果如下图所示。
1.png
检测效果
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

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