keil4添加STC单片机头文件
通过STC下载软件,将STC官方头文件添加到keil的安装路径中。
项目创建
1.程序文件分类
由于我一般会将工程分块制作,所以创建了三个文件夹:驱动文件夹、输出可执行文件的文件夹、主程序文件夹。如图所示:
2.keil创建工程
打开keil软件,选择创建一个新工程:
将工程路径设置到自己创建的主程序文件夹中,工程名随意,选择单片机型号时选择15F2K60S2型号,之后一路OK即可。
创建工程后将工程栏进行分类,制作三个目录。
设置工程编译后可以输出可执行文件hex。
添加头文件路径,将三个文件夹路径都包含进来。之后点OK即可。
在左侧可添加个人的工程文件,将驱动代码放入驱动文件目录,主程序放到主程序目录。这样就完成了工程创建。
驱动文件的制作
比如最基本的延时函数,我想设置为一个.h和一个.c组成,这样方便之后的调用。
1. delay.h文件
#ifndef __DELAY_H__
#define __DELAY_H__
#include"main.h" //个人创建的总的头文件汇总的地方
extern void Delay_ms(unsigned int ms);
#endif
2. delay.c文件
/*************************************************************************
程序功能: --延时函数
编程人信息:
姓名: Pandas
Email: itworkstation@hotmail.com
专业: 电子信息工程专业
**************************************************************************/
#include "delay.h"
void Delay_ms(unsigned int ms)
{
unsigned int i;
do{
i = MAIN_Fosc / 14000; //MAIN_Fosc :晶振频率
while(--i); //14T per loop
}while(--ms);
}
3. main.h文件则是包含了很多头文件汇总
#ifndef __MAIN_H_
#define __MAIN_H_
#include"STC15F2K60S2.h"
#include<intrins.h>
#include"config.h"
#include"delay.h"
#include"Enable_138.h"
#include"Led_7seg.h"
#include"ULN2003_Device.h"
#include"onewire.h"
#include"LED_SET.h"
#include"DS1302.h"
#include"iic.h"
#include"AT24c02.h"
#include"PCF8591.h"
//#include"Timer0.h"
#include"Timer1.h"
#include"Timer2.h"
#include"Hongwai.h"
#include"keyboard.h"
//#include"Key_Duli.h"
#include"Key_Duli_time.h"
#include"Ultrasonic.h"
#endif
4. config.h文件则是包含了我个人很多的配置习惯
#ifndef __CONFIG_H
#define __CONFIG_H
#define MAIN_Fosc 12000000L //定义主时钟
//#define MAIN_Fosc 12000000L //定义主时钟
//#define MAIN_Fosc 11059200L //定义主时钟
//#define MAIN_Fosc 5529600L //定义主时钟
//#define MAIN_Fosc 24000000L //定义主时钟
#define FOSC MAIN_Fosc
typedef unsigned char uchar ;
typedef unsigned int uint;
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
/*******************各种状态控制宏,适用于全局需要控制的状态*******************************/
#define State_OFF 0
#define State_ON 1
#define State_Toggle 2
/**************************************************/
/*******************细微定时器操作,防止影响传输协议 START*******************************/
#define TIMER_INT_OFF (IE2 &= ~(1<<2) )
#define TIMER_INT_ON (IE2 |= (1<<2))
/********************细微定时器操作,防止影响协议 END******************************/
/********************非必要驱动隔离线************* ********** ********** /
/*******************ULN2003 START*******************************/
#define ULN2003_Beep 0
#define ULN2003_Relay 1
#define ULN2003_BeepAndRelay 2
#define GPIO_ULN2003_Control P0
/********************ULN2003 END******************************/
/*******************74HC138 START*******************************/
#define LED_8_Select 4
#define Led_7seg_DU 7
#define Led_7seg_WE 6
#define ULN2003_Enable 5 // 101
#define GPIO_74HC138 P2
/********************74HC138 END******************************/
/*******************数码管 START*******************************/
#define Led_OFF_DU 16 // 灭
#define Led_dian_start_DU 17 //LED段码数组中带小数点的起始位
#define Led_rod_DU 27 // -
#define Led_H_DU 28 // H 1000 1001
#define Led_DS18B20_DU 29 // ℃
#define Led_U_DU 31 // U
#define Led_7seg_Mode_Normal 0
#define Led_7seg_Mode_AddrToggle 1
#define Led_7seg_Mode_SelectToggle 2
#define Led_7seg_GPIO P0 //数码管的段 接口
/********************数码管 END******************************/
/********************定时器0 START******************************/
#define Timer0_Run TR0=1
#define Timer0_Stop TR0=0
#define Timer0_Mode_Time 0
#define Timer0_Mode_Count 1
/********************定时器0 END******************************/
/********************定时器1 START******************************/
#define Timer1_SetTimeMS_Init(X) X //设置定时器 MS
/********************定时器1 END******************************/
/********************定时器2 START******************************/
#define Timer2_On (IE2 |= (1<<2); ) //开启定时器2
#define Timer2_Off (IE2 &= ~(1<<2); ) //关闭定时器2
/********************定时器2 END******************************/
/********************定时器3 START******************************/
#define Timer3_Run (IE2 |= 0x20 ) //允许中断
#define Timer3_Stop (IE2 &= ~0x20) //关闭中断
/********************定时器3 END******************************/
/********************LED灯 START******************************/
#define LED_IO P0
#define LED_Select_All 9
/********************LED灯 END******************************/
/********************DS1302时钟 START******************************/
#define Write_Ds1302_DATA 0
#define Read_Ds1302_DATA 1
#define DS1302_CHOOSE_HOUR 0
#define DS1302_CHOOSE_YEAR 1
/********************DS1302时钟 END******************************/
/********************AT24C02 EEROM START******************************/
#define EEROM_Write 0
#define EEROM_Read 1
#define EEROM_TEST_ADDR 250
/********************AT24C02 EEROM END******************************/
/********************PCF8591模数转换 START******************************/
#define PCF8591_DAC 0
#define PCF8591_ADC 1
#define NO 0 //AIN0口 插口,直接输入AD量,需外接
#define GM 1 //AIN1口 //光敏
#define LM358 2 //AIN2口 经过LM358放大信号后输入AD量 ,需外接元器件
#define PT_RES 3 //AIN3口 滑动变阻器口
/********************PCF8591模数转换 END******************************/
#endif