[通用8051核FLASH系列]

我的Holychip 89F003-MCU 入门

[复制链接]
2533|6
手机看帖
扫描二维码
随时随地手机跟帖
h286288986|  楼主 | 2017-11-25 15:03 | 显示全部楼层 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-24 15:47 编辑

一、申请开发工具与开发板
参加了Holychip公司的开发板免费赠送活动,得到HC-Link仿真开发工具+89F003目标板+USB连接线一条;
二、准备个人PC/NB一台
系统支持XP/Win7-Win10都可以;
三、预装软件准备
keil C51 V3.0-V5.0都可以+开发工具驱动软件+Link软件;
四、Keil C软件撰写
建立项目工程,相关文件加载,配置仿真link链接,配置烧录方式;
五、编译下载Debug调试
工程编译没有错误,就可以下载到芯片里运行程序;
六、相关图片
硬件连接图片,演示LED闪烁,跑马灯源代码如下图所示;
七、学习交流QQ
2286/3128/4
八、Holychip MCU入门总结
除去硬件,MCU软件应用需要的专业基础有:电路分析、计算机应用基础,C语言基础,模拟电子,数字电子,单片机应用基础等。



h286288986|  楼主 | 2017-11-25 15:04 | 显示全部楼层

硬件连接图

本帖最后由 h286288986 于 2017-11-25 15:27 编辑

源代码

源代码

C:\Users\lenovo\Desktop

源代码1

源代码1

源代码2

源代码2

使用特权

评论回复
h286288986|  楼主 | 2017-11-27 12:47 | 显示全部楼层
发送8字节的出口数据调试!
出口调试发送数据截图.jpg
出口驱动端口.jpg

使用特权

评论回复
h286288986|  楼主 | 2017-11-27 12:51 | 显示全部楼层
void main()
{
/************************************系统初始化****************************************/
        WDTCCR = 0x00;                                                //关闭看门狗
        while((CLKCON&0x20)!=0x20);                        //等待内部高频晶振起振
        CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
        while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
        CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz
/**********************************UART配置初始化**************************************/
        P2M0 = P2M0&0x0F|0x40;                                //P21设置为推挽输出
        P0M1 = P0M1&0x0F|0x10;                                //P03设置为上拉输出
        TXD_MAP = 0x22;                                                //TXD映射
        RXD_MAP = 0x0c;                                                //RXD映射               
        T4CON = 0x06;                                                //T4工作模式:UART1波特率发生器
    TH4 = 0xFF;
        TL4 = 0x98;                                                        //波特率9600
        SCON2 = 0x02;                                                //8位UART,波特率可变
        SCON = 0x10;                                                //允许串行接收
        IE |= 0X10;                                                        //使能串口中断
        EA = 1;                                                                //使能总中断
   
        while(1)
        {
        //        guc_Uartflag=1;
                if(guc_Uartflag)
                {
                        IE &=~ 0x10;                                //失能UART1中断
                        for(guc_i= 0;guc_i<guc_Uartcnt;guc_i++)
                        {
                                SBUF = guc_Uartbuf_a[guc_i];//发送8位串口数据
                                while(!(SCON & 0x02));
                                SCON &=~ 0x02;                        //清除发送中断标志位
                        }
                        IE |= 0x10;                                        //UART1中断使能
                        guc_Uartflag = 0;
                        guc_Uartcnt = 0;
                        SCON |= 0x10;                                //UART1接收使能
                }       
        }
    return 0;
}

使用特权

评论回复
h286288986|  楼主 | 2017-11-27 12:51 | 显示全部楼层
串口中断函数
void UART1_Rpt(void) interrupt UART1_VECTOR
{
        if(SCON & 0x01)                                                //判断接收中断标志位
        {
                guc_Uartbuf_a[guc_Uartcnt++] = SBUF;//转存8位串口接收数据
                if(guc_Uartcnt >= 8)
                {
                        SCON &=~ 0x10;                                //失能UART1接收
                        guc_Uartflag = 1;
                }
                SCON &=~ 0x01;                                        //清除接收中断标志位
        }                                                                       
}

使用特权

评论回复
h286288986|  楼主 | 2017-11-27 12:58 | 显示全部楼层
串口调试硬件链接图

串口调试硬件连接图.jpg

使用特权

评论回复
sopc12| | 2017-12-4 15:33 | 显示全部楼层

使用特权

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

本版积分规则

53

主题

505

帖子

3

粉丝