WoodData 发表于 2017-11-25 17:50

芯圣HC89F003开发板体验

本帖最后由 芯圣电子官方QQ 于 2023-7-24 15:30 编辑

    收到HC89F003开发板了。首先是去官网下载这个开发板资料,主要是HC_LINK下载器的驱动,Keil的插件选择MCU型号和仿真驱动,单片机的文档以及开发板的原理图。如图:
    HC_LINK下载器的驱动和Keil的插件安装,文件夹内有文档说明,照着安装就行了,这里就不多说了。

    都安装好之后,keil中就可以选择单片机了。如图:

   
    现在就可以新建工程了,我建了一个简单的测试工程,点亮LED。编译下载之后的效果如图:


    下载的时候碰到了一点问题,开始怎么都不能下载,在keil的下载设置里面检查了好久,都没发现问题,后来才发现电源总开关没按下去,导致板没有供电,一直不正常。要红色的电源指示灯亮后才能正常下载。
    下面是程序:
#include "HC89F003.h"

sbit      LED1 = P1^1;
sbit      LED2 = P0^5;
sbit      LED3 = P0^4;
sbit      LED4 = P1^0;

unsigned int gui_AdcValue = 0;                        //用于存放ADC的值

void Delay_ms(unsigned int ms)
{
      unsigned int i;
      while(ms--)
      {
                i = 1000;
                while(i--);
      }
}

void Uart_SendChar(unsigned char ch)
{
      TI = 0;
      SBUF = ch;
      while(TI == 0);
      TI = 0;
}

void Uart_SendString(unsigned char *str)
{
      while(*str != '\0')
      Uart_SendChar(*str++);
}


void main()
{
      u8 flag;
/************************************系统初始化****************************************/
      WDTCCR = 0x00;                                                //关闭看门狗
      while((CLKCON&0x20)!=0x20);                        //等待内部高频晶振起振
      CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
      while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
      CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz         
/**********************************端口初始化**************************************/
    P0M2 = 0x99;            //P04,P05设置为开漏输出
      P1M0 = 0x99;            //P10,P11设置为开漏输出      
/************************************ADC初始化*****************************************/
      P0M0 = P0M0&0xF0|0x03;                              //P00设置为模拟输入
      ADCC0 = 0x80;                                                //打开ADC转换电源
      ADCC1 = 0x00;                                                //选择外部通道0
      ADCC2 = 0x4D;                                                //转换结果12位数据,数据右对齐,ADC时钟16分频
/**********************************UART配置初始化**************************************/
      P2M0 = P2M0&0x0F|0x80;                              //P21设置为推挽输出
      P0M1 = P0M1&0x0F|0x20;                              //P03设置为上拉输出
      TXD_MAP = 0x21;                                                //TXD映射P21
      RXD_MAP = 0x03;                                                //RXD映射P03               
      T4CON = 0x06;                                                //T4工作模式:UART1波特率发生器
    TH4 = 0xFF;
      TL4 = 0x98;                                                      //波特率9600
      SCON2 = 0x02;                                                //8位UART,波特率可变
      SCON = 0x10;                                                //允许串行接收


      flag = 0;
      
      while(1)
      {
                if(RI)
                {
                        flag = SBUF;
                        RI = 0;
                }               
               
                if(flag == 0)
                {
                        LED1 = 0;                Delay_ms(100);
                        LED2 = 0;                Delay_ms(100);
                        LED3 = 0;                Delay_ms(100);
                        LED4 = 0;                Delay_ms(100);
                        LED1 = 1;                Delay_ms(100);
                        LED2 = 1;                Delay_ms(100);
                        LED3 = 1;                Delay_ms(100);
                        LED4 = 1;                Delay_ms(100);      
                }else if(flag == 1)
                {
                        ADCC0 |= 0x40;                                        //启动ADC转换
                        while(!(ADCC0&0x20));                        //等待ADC转换结束
                        ADCC0 &=~ 0x20;                                        //清除标志位
                        gui_AdcValue = ADCR;                        //获取ADC的值
      
                        if((gui_AdcValue >= 0)&&(gui_AdcValue < 1024)){LED1 = 0;LED2 = 1;LED3 = 1;LED4 = 1;}//LED1点亮
                        if((gui_AdcValue >= 1024)&&(gui_AdcValue < 2048)){LED1 = 0;LED2 = 0;LED3 = 1;LED4 = 1;}//LED1,LED2点亮
                        if((gui_AdcValue >= 2048)&&(gui_AdcValue < 3072)){LED1 = 0;LED2 = 0;LED3 = 0;LED4 = 1;}//LED1,LED2,LED3点亮
                        if((gui_AdcValue >= 3072)&&(gui_AdcValue < 4096)){LED1 = 0;LED2 = 0;LED3 = 0;LED4 = 0;}//LED1,LED2,LED3,LED4点亮
                }else if(flag == 2)
                {
                        Uart_SendString("芯圣HC89F003测试!!!\n");
                        Delay_ms(1000);                              
                }      
      }
}



wowu 发表于 2018-6-24 21:45

下载器能stlink通用吗
页: [1]
查看完整版本: 芯圣HC89F003开发板体验