【蓝桥杯单片机】零、写在前面

1、蓝桥杯的介绍

1.1、参赛资格

具有正式学籍的在校全日制本科及高职高专学生(以报名时状态为准)。

1.2、竞赛用时

预赛时长∶5小时
决赛时长∶5小时

1.3、竞赛形式

个人赛,预赛、决赛均采用封闭、限时方式进行。
选手机器通过局域网连接到各个考场的竞赛服务器。选手答题过程中无法访问互联网,以"服务器-浏览器"方式发放试题、回收选手答案。备注∶选手提交到服务器的工程文件是评审和成绩复查的依据,须严格按照试题要求上传文件。

1.4、试题形式

竞赛试题由客观题和基于统一硬件平台的程序设计与调试试题两部分组成。

1.4.1、 客观题

选择题∶选手根据题目描述.选择若干个答案。
填空题∶题目描述一个具有确定解的问题,选手根据题目要求填写唯一答案。

1.4.2、 硬件程序设计试题

硬件平台∶国信长天单片机竞赛实训平台(单片机型号为IAP15F2K61S2)。

1.4.3、试题形式

参赛选手在规定时间内,基于国信长天单片机竞赛实训平台.按照试题要求使用C语言或汇编语言完成设计开发与调试任务。
5.赛场设备设施

1.5、赛场环境介绍

1.5.1、 硬件设施

万用表 、数字万用表、具备直流电压、电流、电阻测量 和 通断测试功能。计算机X86 兼容机器,内存不小于 1G,硬盘不小于 60G
操作系统∶Windows XP、Windows 7

1.5.2、软件预装

Keil 51集成开发环境
STC-ISP V6.85H程序下载软件(或以上版本)
单片机综合训练平台驱动程序

1.6、试题涉及的基础知识

1)C程序设计基础知识
2)模拟/数字电子技术基础
3)MCS-51单片机基础 T
4) MCS-51单片机程序开发与调试

1.7、分值比例

客观题∶30%
基于硬件平台的程序设计与调试∶70%

1.8.、评分

客观题∶答案唯一,每题只有0分或满分,全部机器阅卷。
硬件平台程序设计与调试试题∶根据选手功能完成情况,依照评分细则进行打分。

2、该系列文章的内容概括

本系列文章提供了备赛蓝桥杯单片机全面的教程,会讲明哪些是重点需要反复记忆,购买专栏后会提供答疑服务。

3、准备介绍

3.1、所需要的软件

keil c51stc-isp

官方提供资料包链接:https://pan.baidu.com/s/1jorpInWbRNYQTuNd_VRGkg?pwd=ffb7
提取码:ffb7

3.2、所需要的硬件

蓝桥杯官方CT107-D开发板

### 蓝桥杯单片机延时定时器编程 在蓝桥杯竞赛中,为了实现精确的时间控制,可以利用单片机内部的定时器来创建延时功能。下面是一个基于8051架构单片机的例子,该例子展示了如何通过配置定时器1来进行毫秒级延时。 #### 定义头文件与全局变量 ```c #include <reg52.h> /* 包含特殊功能寄存器定义 */ #define FREQ 11059200L /* 设定晶振频率为11.0592 MHz */ unsigned int count; bit flag = 0; void Timer_Init(unsigned int ms); void DelayMs(unsigned int delay_time); // 初始化定时器函数声明 ``` #### 配置并启动定时器 初始化定时器时,需计算合适的重载值以匹配所需的延迟时间,并开启相应的中断服务例程。 ```c void Timer_Init(unsigned int ms) { unsigned long reload_value; // 计算定时初值 reload_value = (FREQ / 12 / 1000 * ms); TH1 = (unsigned char)(reload_value >> 8); TL1 = (unsigned char)reload_value; TMOD &= 0xF0; // 清除TMOD中的低四位 TMOD |= 0x10; // 设置为模式1(16位自动重装载) // 使用定时器1 ET1 = 1; // 开启定时器1中断使能 TR1 = 1; // 启动定时器1 } ``` #### 中断服务程序 当设定的时间到达后触发此ISR,在这里可以通过设置标志位或其他方式通知主循环已经完成了一次完整的计数周期。 ```c void Time_ISR() interrupt 3 using 1{ static unsigned int counter = 0; if (++counter >= count){ flag = 1; counter = 0; } } ``` #### 实现延时函数 调用`DelayMs()`方法即可简单地等待指定数量的毫秒过去;期间会不断轮询直到检测到由ISR更新的状态变化为止。 ```c void DelayMs(unsigned int delay_time){ count = delay_time; while (!flag); flag = 0; } int main(){ Timer_Init(1); // 每隔1ms进入一次中断 while(1){ P1 = 0xFF; // LED熄灭 DelayMs(500); // 延迟500ms P1 = 0x00; // LED点亮 DelayMs(500); // 再次延迟500ms } } ``` 上述代码实现了每秒钟LED灯闪烁的效果,其中每次亮起或关闭之间有半秒间隔。这段程序不仅适用于比赛项目展示,也适合用于理解定时器的工作原理及其应用[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值