[资源共享] 我的Holychip 89F003-MCU 入门

[复制链接]
337|6
 楼主 | 2017-11-25 15:03 | 显示全部楼层 |阅读模式
一、申请开发工具与开发板
参加了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语言基础,模拟电子,数字电子,单片机应用基础等。



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

硬件连接图

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


C:\Users\lenovo\Desktop

本帖子中包含更多资源

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

x
 楼主 | 2017-11-27 12:47 | 显示全部楼层
发送8字节的出口数据调试!

本帖子中包含更多资源

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

x
 楼主 | 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;
}
 楼主 | 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;                                        //清除接收中断标志位
        }                                                                       
}
 楼主 | 2017-11-27 12:58 | 显示全部楼层
串口调试硬件链接图

本帖子中包含更多资源

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

x
| 2017-12-4 15:33 | 显示全部楼层
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册 手机登录
高级模式

论坛热帖

分享 快速回复 返回顶部 返回列表