打印
[通用8051核FLASH系列]

芯圣HC89F003开发板体验

[复制链接]
1711|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WoodData|  楼主 | 2017-11-25 17:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 芯圣电子官方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通用吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

119

主题

4603

帖子

27

粉丝