藍橋杯大賽微控制器組國信長天開發板個人總結 | 建立工程
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
相關文章
- 藍橋杯javaB組備賽Java
- 第14屆藍橋杯B組國賽
- 第十五屆藍橋杯C++B組省賽總結C++
- 2017省賽藍橋杯B組
- 2018藍橋杯省賽B組
- 藍橋杯大賽——驅動程式
- 第十三屆藍橋杯省賽A組
- 藍橋杯微控制器 超聲波模組和PCA模組PCA
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 藍橋杯演算法模板常用套路及API等個人總結演算法API
- 第九屆藍橋杯大賽個人賽決賽(軟體類本科B組)做題筆記 mit zwei Antworten筆記MIT
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 2018天梯賽、藍橋杯、(CCPC省賽、邀請賽、ICPC邀請賽)校內選拔賽反思總結!
- 2024年第十五屆藍橋杯軟體類國賽 C/C++ B組 個人解法C++
- 2015年藍橋杯六屆省賽大學B組真題
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 藍橋杯-長草(BFS)
- 第六屆藍橋杯省賽CC++B組C++
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 藍橋杯模板(二)python組Python
- 藍橋杯模板(三)python組Python
- 第十四屆藍橋杯大賽軟體賽省賽Python 《三國遊戲》Python遊戲
- 2015藍橋杯省賽javaA組-----牌型種數(填空)Java
- 第九屆藍橋杯B組省賽———乘積最大
- [2019藍橋杯國賽B組c++][最優包含][排列數][第八大奇蹟]C++
- 24藍橋杯-網路安全組
- 藍橋杯
- 第十三屆藍橋杯省賽C/C++ B組C++
- [藍橋杯2018決賽]最大乘積
- 2022年藍橋杯C++B組國賽-試題D-最大數字C++
- 第十屆藍橋杯C++國賽B組部分題解(假題解)C++
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 2020藍橋杯省賽B組C++(第二場)真題C++
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 2013藍橋杯題解c++A組C++
- 藍橋杯第9場小白入門賽