#include "key.h"
#include "reg52.h"
//定义独立按键控制脚
sbit KEY1=P3^1;
sbit KEY2=P3^0;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
/*******************************************************************************
* 函 数 名 : delay_10us
* 函数功能 : 延时函数,ten_us=1时,大约延时10us
* 输 入 : ten_us
* 输 出 : 无
*******************************************************************************/
void delay_10us(u16 ten_us)
{
while(ten_us--);
}
/*******************************************************************************
* 函 数 名 : key_scan
* 函数功能 : 检测独立按键是否按下,按下则返回对应键值
* 输 入 : mode=0:单次扫描按键
mode=1:连续扫描按键
* 输 出 : KEY1_PRESS:K1按下
KEY2_PRESS:K2按下
KEY3_PRESS:K3按下
KEY4_PRESS:K4按下
KEY_UNPRESS:未有按键按下
*******************************************************************************/
u8 key_scan(u8 mode)
{
static u8 key=1;
if(mode)key=1;//连续扫描按键
if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))//任意按键按下
{
delay_10us(1000);//消抖
key=0;
if(KEY1==0)
return KEY1_PRESS;
else if(KEY2==zero)
return KEY2_PRESS;
else if(KEY3==0)
return KEY3_PRESS;
else if(KEY4==0)
return KEY4_PRESS;
}
else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1) //无按键按下
{
key=1;
}
return KEY_UNPRESS;
}
51从单个文件到分文件
需积分: 0 172 浏览量
更新于2023-03-16
1
收藏 24KB ZIP 举报
在IT行业中,尤其是在嵌入式系统开发领域,单片机是一种广泛应用的微控制器,它集成了CPU、内存和外围接口,常用于各种电子设备。"51从单个文件到分文件"的主题主要涉及到的是单片机编程中的代码组织与管理方式的演变,特别是针对8051系列单片机的C语言编程。
早期的单片机程序开发,往往将所有代码编写在一个源文件(.c文件)中,这样的方式简单明了,但随着项目复杂度的增加,代码量会迅速膨胀,导致维护困难。为了提高代码的可读性、可维护性和模块化,开发者逐渐采用了将大型程序拆分为多个源文件(.c文件)和头文件(.h文件)的方法,这就是"分文件"的概念。
源文件(.c文件)是实现具体功能的代码,比如函数的定义。将不同功能的代码分别放在不同的.c文件中,可以清晰地划分各个模块,每个文件专注于一个或几个相关的功能,这样便于理解和调试。例如,在"8-独立按键实验"中,可能有一个.c文件专门处理按键的扫描和中断服务程序。
头文件(.h文件)主要用于存放函数声明、全局变量声明、常量定义等,它们提供了编译时的接口信息。在.c文件中,我们通常会包含对应的.h文件,以确保编译器知道这些函数和变量的存在。这样,不同.c文件之间可以通过函数调用来进行通信,而不需要看到对方的实现细节,符合"高内聚,低耦合"的设计原则。
在8051单片机的开发中,Keil C51编译器是常用的工具,它支持这样的分文件编译方式。开发者可以使用Keil的工程管理器将所有源文件和头文件组织在一起,编译器会自动处理这些文件之间的依赖关系,生成最终的可执行代码。
此外,分文件还有助于代码重用。例如,一个按键处理函数可以被多个.c文件引用,只需在各自的.c文件中包含该函数的.h文件即可。这大大提高了代码的复用性和效率。
总结起来,"51从单个文件到分文件"是单片机编程中的一种代码管理策略,通过将大项目拆分成多个小模块,提高了代码的可读性、可维护性和模块化。在8051单片机的"8-独立按键实验"中,我们可以学习如何将按键处理的代码独立出来,形成单独的源文件和头文件,以实现更高效、更专业的编程实践。
梧州岑溪喜欢吃蛋糕
- 粉丝: 0
- 资源: 2
最新资源
- 硅酸钠块行业分析:2023年全球市场规模大约为349百万美元.docx
- 光学扩散膜行业分析:2023年全球市场规模大约为352百万美元.docx
- 合成生物学技术行业分析:全球收入达到1279.6百万美元.docx
- 海上能源无人潜水器市场分析:2023年全球市场规模为854百万美元.docx
- 呼气分子诊断行业分析:2023年全球市场规模大约为234百万美元.docx
- 环氧豆油丙烯酸酯行业分析:2023年全球市场规模大约为871百万美元.docx
- 滑雪头盔式耳机行业分析:2023年全球市场规模大约为51.5百万美元.docx
- 幻想(虚拟)体育行业分析:北美和欧洲占全球约70%的市场份额.docx
- 会话营销软件行业分析:全球收入约为564.9百万美元.docx
- 火灾警报设备行业分析:全球市场收入约为19130百万美元.docx
- 基础unity,控制物体的简单移动,值得学习一下
- 活动行业分析:全球收入约为342100百万美元.docx
- 机械键盘行业分析:2023年全球市场规模大约为1245百万美元.docx
- 即时物流行业分析:2023年全球市场规模大约为23770百万美元.docx
- 奖励管理软件行业研究:全球收入约为692.5百万美元.docx
- 洁净室环境在线监测软件行业分析:北美占有约25%的全球市场份额.docx