VISUN 发表于 2018-3-19 16:13

HC89F003F4开发板试用心得之一---LED灯交替闪烁(附代码+注释)

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

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

首先先感谢21ic.com、感谢芯圣、感谢这个平台{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}!
HC89F003开发板--------> LED篇(主要涉及GPIO配置以及时钟的初始化)

1、安装官方驱动“HC-Link.exe”(包括JATG和USB驱动) ,因为没权限发不了链接,所以可以去芯圣官网下载


2、打开IDE--keil,新建工程项目LED_PROJECT


3、选择“Holychip MCU Database”系列芯片,选择HC89F003(此处针对本开发板芯片所选)


4、编写代码(代码实现如下+注释)


///////////////////////////////main.c文件 ///////////////////////////////////////////

#define ALLOCATE_EXTERN                           //预编译(XRAM部分特殊寄存器)

#include <main.h>

int main(void)
{
      CLKSWR = 0x51;                                           //设置时钟输出选择以及分频系数
      while(CLKCON & 0x20 != 0x20);                //等待设置完成
      CLKDIV = 0x01;

      LED_INIT();                                                    //LED1、LED2 <==> GPIO初始化

      while(1)
      {
                /* 实现LED1、LED2 200ms交替闪烁*/

                LED1_ON_LED2_OFF;
                Delay_Ms(200);

                LED1_OFF_LED2_ON;
                Delay_Ms(200);
                        
      }
      return 0;
}

///////////////////////////////main.h文件 ///////////////////////////////////////////

#ifndef __MAIN_H_
#define __MAIN_H_

#include <HC89F003.h>
#include <led.h>
#include <delay.h>

#defineDELAY_ENABLE

#defineLED1_ON_LED2_OFF      P2 = 0 << 2;P1 = 1 << 0;
#defineLED1_OFF_LED2_ON      P2 = 1 << 2;P1 = 0 << 0;

#endif

///////////////////////////////led.c文件 ///////////////////////////////////////////

#include <led.h>

void LED_INIT()
{
      P2M1 = P2M1 & 0xF0 | 0x08;   //P22 LED1
      P1M0 = P1M0 & 0xF0 | 0x08;   //P10 LED2

      P0 = 1<<0;
      P2 = 1<<2;
}

///////////////////////////////led.h文件 ///////////////////////////////////////////

#ifndef __LED_H_
#define __LED_H_

#include <main.h>

extern void LED_INIT();

#endif

///////////////////////////////delay.c文件 ///////////////////////////////////////////

#include <delay.h>

#ifdef DELAY_ENABLE

void Delay_Ms(u16 Time_count)
{
      u16 j;

      for(;Time_count > 0;Time_count --)
      for(j = 1596;j > 0;j --);
}

#endif

///////////////////////////////delay.h文件 ///////////////////////////////////////////

#ifndef __DELAY_H_
#define __DELAY_H_

#include <main.h>

extern void Delay_Ms(u16 Time_count);
extern void Delay_Us(u16 Time_count);

#endif

///////////////////////////////end ///////////////////////////////////////////

以上就是代码的实现过程,大家有疑问可以互相探讨,共同进步{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}!!












ENDRROB 发表于 2018-3-27 20:20

可以在Linux环境下,编译吗

guanjiaer 发表于 2018-7-13 11:50

恩 基础的小灯程序

冷画 发表于 2018-7-13 13:55

芯圣代理商 主营OTP+003 QQ1449251178
页: [1]
查看完整版本: HC89F003F4开发板试用心得之一---LED灯交替闪烁(附代码+注释)