番外篇 代码整理
几天前收到了实验箱,很感谢
论坛这种免费+包邮(而且还是包的是顺风)送实验箱的活动。 工具在手,天下我有。哈哈~~~!(这几天工作很忙,感谢晚了,见谅,见谅!)

前言
第八集介绍了模块化编程的方式方法,再加上正好收到了实验箱,于是我将前几集的代码重新做了整理,并将实验结果进行了验证。
工程模板建立
- 新建Template文件夹,并使用Keil在该文件夹中新建一个AI8051U工程
- 新建并编写sys_init.h文件,该文件将外设所需要的头文件include到此文件中
#ifndef __SYS_INIT_H
#define __SYS_INIT_H
/* Includes ------------------------------------------------------------------*/
#include <AI8051U.H>
void SYS_Init(void);
#endif
- 新建并编写sys_init.c文件,主要是系统初始化函数编写处,并将文件文件加入工程项目中。
#include "sys_init.h"
void SYS_Init(void)
{
// 代码编写
}
#include "sys_init.h"
void main()
{
SYS_Init();
while(1)
{
}
}
- 新建并编写sys_config.h文件,其内容是系统的配置参数,比如主频等
#ifndef __SYS_CONFIG_H
#define __SYS_CONFIG_H
//========================================================================
// 主时钟定义
//========================================================================
#define MAIN_Fosc 24000000L //定义主时钟 24M
#endif
- 在复制工程模板项目文件夹,并在该工程中新建并添加led.h和led.c文件
#ifndef __LED_H
#define __LED_H
/* Includes ------------------------------------------------------------------*/
#include "delay.h"
#include <intrins.h>
#include <AI8051U.H>
#define LED_PORT P0 // 定义LED端口
#define LED_SW P40 // 定义LED组开关
void LED_Init();
void chasing_led();
#endif
#include "led.h"
void LED_Init()
{
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
LED_PORT = 0xFE;
LED_SW = 0;
}
void chasing_led()
{
Delay_ms(1000);
LED_PORT = _cror_(LED_PORT, 1);
}
- 新建delay.c和delay.h文件
#ifndef __DELAY_H
#define __DELAY_H
/* Includes ------------------------------------------------------------------*/
#include <intrins.h>
void Delay1ms(void);
void Delay_ms(unsigned int ms);
#endif
#include "delay.h"
void Delay1ms(void) //@24.000MHz
{
unsigned long edata i;
_nop_();
_nop_();
_nop_();
i = 5998UL;
while (i) i--;
}
void Delay_ms(unsigned int ms)
{
while (ms-- > 0)
{
Delay1ms();
}
}
- 修改sys_init.h
#ifndef __SYS_INIT_H
#define __SYS_INIT_H
/* Includes ------------------------------------------------------------------*/
#include <AI8051U.H>
#include "sys_config.h"
#include "led.h"
void SYS_Init(void);
#endif
- 修改sys_init.c
/* Includes ------------------------------------------------------------------*/
#include "sys_init.h"
/**
* @brief 系统初始化函数
* @param 无
* @retval 无
*/
void SYS_Init(void)
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
LED_Init();
}
- 修改main.c
#include "sys_init.h"
void main()
{
SYS_Init();
while(1)
{
chasing_led();
}
}
-
编译并将.hex文件下载至实验箱验证