2025蓝桥杯(单片机)备赛–基本框架搭建(一)
一、项目的搭建与架构及配置思路
1.项目搭建
new project –>STC MCU –>STC15F2K60S2 –>否
–>红绿白三个方块 –>生成三个Groups(User、System、Hardware)–> 在文件目录下面建立三个文件夹对应三个Group–>在User里面添加 main.c–>add new item–>main–>修改Location
–>insert head file –> main函数、while循环无错误进行下一步–>点击魔法棒项目配置–>C51里面配置include path,配置三个Groups
的路径–>output:勾选Create HEX File –>Device勾选 USE LX51–>LX51 Misc 配置disable Warning Numbers :16,Misc controls :REMOVEUNUSED(可选)主要是删除未使用函数时的警告–>Debug STC Monitor 51Driver.(基本配置结束)
2.项目架构
2.1 创建一个system.h
该文件是每个c文件的纽带,通过system.h文件建立起每个c文件之间的联系。里面主要包含:**对数据类型的typedef** (起个别名)、包含<STC15F2K60S2.H>的所有需要用到的头文件、一个bits结构体(利用位域(unsigned char b0:1,即bo占一位)用于控制led、数码管、蜂鸣器、继电器),里面包含了8位(0-7),则bits这个结构体占一个字节,这在后面的共用体有用、
一个共用体即可以创建一个结构体 来控制这个字节的每一位,共四部分。
步骤:#ifndef __SYSTEM__H,#define __SYSTEM_H_
#endif,typedef unsigned char u8;要在头文件上面,
typedef 要带";"而define 不需要带 ";",一共要定义五个分别是
unsigned char 、unsigned int 、unsigned long int、 char、int
char 是8位、int是16位、long int 是32位;typedef 重定义类型要在引用头文件的前面,(system.h)接着include 头文件;
最后定义一个带位域的结构体和一个共用体,里面的变量以;结尾
由此可以给操作每一位最后再用hex给外设赋值,因为hex和和
bits b的值是一样的;
2.2 创建一个Delay.h文件
根据自己需求创建ms、us延时的文件,_nop()_,需要调用#include <intrins.h>头文件,
2.3创建定时器2 的初始化文件
可以在STC里面生成,选择12MHZ,定时器2(STC15系列),时间为1ms,16位自动重载模式,12T(STC15系列比STC89C52的快12倍,选择12T即12分频,和C52的速度一样,指的是定时器2的速度)
注意:这里生成的并没有中断的开启,我们需要加上。打开STC15的数据手册,查看中断结构图(422),发现相关寄存器为ET2和EA,
所以我们重点关注这两个寄存器,再看有没有其它的限制,我们搜索ET2发现他在IE2这个8位寄存器里面
并发现,ET2被隐藏起来了。对用户不可见。所以只能配置IE2来控制定时器2的中断请求标志位
在(428页)发现IE2中断配置寄存器的详细说明
根据这个表,我们只需令IE2的B2为1即可使能定时器2,
对于其中一位赋1,其不改变其它位的值,我们可以用 |
即IE2|=0X04;最后打开总开关 令EA=1即可;
然后再头文件里面声明;
接着进行中断的的调用,我们搜索中断函数(426页),找到相关的函数 void Timer2_Routine(void) interrupt 12,中断号 为12,函数名可以改变,中断号 和单词一定要对
中断里面可以放一些显示,和定时执行的函数,根据上面的配置,中断1ms执行一次。我们在main函数里面调用,记得在system.h里面生命Timer2.h头文件,然后在main函数里调用这样配置就完成了
基本框架已经搭建完成,后续将进行进一步的开发!
敬请期待。。。。
作者:BigShark888