51单片机学习笔记——找不到REG52.H头文件,点亮一个LED

创建工程

将STC型号导入keil并使用

STC可以从官网下载,也可我这的网盘:

链接:https://pan.baidu.com/s/1bO85DPN3IFaXGhiKSwyOrA?pwd=7f4h 
提取码:7f4h

打开STC,选择“keil仿真设置”,选择“添加型号和头文件到keil中 \ 添加STC仿真器驱动到keil中”

然后会有指引:

创建工程

1、点击“Project”,点击“New ...(阿巴阿巴) Project"

2、勾选“STC MCU Database”,选择对应型号。然后OK。

比如使用的是“STC12C5A60S2”

3、一般选择“是”。

4、选中下面高亮的"Add New Item to..."

5、在弹出页面中,点击“C File”,一般取名叫main

6、成功会看到左边出现“main.c”

:上面4和5步骤是在往Source Group 1添加一个c文件,还可以像下面这么添加:

(a)点击File,点击New(或者Ctrl+N)创建一个新文件

(b)Ctrl + S,取个名字保存(最好是这个默认的文件夹下,好找)

(c)右键Source Group 1,点击“Add Existing..."

(d)在弹出的窗口中,选中你要添加的文件,点击“Add”,然后“Close”

LED闪烁

单片机上电时,所有IO口默认都是高电平

点亮一个LED

需求:八个LED灯,点亮其中一个

分析:单片机上电时,默认所有IO都都是高电平。如果想让其中一个LED点亮,则需要该LED灯的另一端是低电平。要想修改LED另一端的电平,修改对应的端口寄存器即可。比如,让第八个LED点亮,只需要寄存器 P2 = 0xFE;

#include <REGX52.H>

int main()
{
	while(1)
	{
		P2 = 0xFE;  // 1111 1110
	}
}

编译试试,编译在下面这个地方

编译成功,成功创建目标,无错误。

重在上手,烧到开发板上试试。

烧录

为了生成可以烧到单片机的十六进制文件,我们需要调整一些配置。

1、点击魔法棒:

2、target中修改单片机频率成你使用的单片机频率,STC12C5A60S2是12MHz

3、output里勾选”Create HEX File"后点击OK

4、再次点击build,看看哪里不一样了

生成了一个hex file(十六进制文件)

接下来只需要将这个十六进制文件烧录进去即可。

5、打开STC,选择单片机型号并配置

问题补充

(一)找不到REGX52.H头文件

引入头文件REGX52.H,右键发现不能打开该文件,那编译肯定会出错。

解决方案:

1、点击魔法棒

2、以此点击“C51”和“..."

3、弹出的窗口,点击选中处

4、弹出的窗口,点击三个点

5、找到你自己的keil5安装路径,依次选中C51、INC、Atmel(因为Atmel型号和STC型号比较像),然后点击”选择文件夹“

6、后面就依次点击OK就行。然后发现可以打开了

(二)REGX51.H 与 REGX52.H

——一般来说,选中`"REGX51.H"`头文件还是`"REGX52.H"`头文件,主要取决于你所使用的单片机型号。

"REGX51.H"`是51系列单片机的通用头文件。它定义了51系列单片机的特殊功能寄存器(SFR)和特殊位。使用标准的8051或其兼容的单片机,那么应该使用`"REGX51.H"`头文件。

"REGX52.H"`则是52系列单片机的专用头文件。它包含了52系列单片机的专用寄存器定义和特殊功能寄存器定义,只适用于52系列单片机。STC12C5A60S2这样的增强型8051单片机,尽管其指令代码与传统8051兼容,但由于其拥有更多的功能和资源,因此更适合使用`"REGX52.H"`头文件。

像STC12C5A60S2这样的增强型8051单片机,应该选择`"REGX52.H"`头文件,因为它会提供更完整和准确的寄存器定义。

### C51 `utils.h` 头文件的内容及其使用 对于C51单片机开发而言,`utils.h` 是一个常用的辅助功能头文件。该文件通常包含了各种实用工具函数和宏定义,用于简化编程工作并提高代码的可读性和维护性。 #### 常见内容概述 `utils.h` 中常见的内容包括但不限于: - **常用数据类型的定义** 定义一些标准的数据类型以便于跨平台移植[^4]。 - **位操作宏定义** 提供一系列方便进行位操作的宏定义,例如设置某一位、清除某一位等[^4]。 - **延时函数声明** 包含不同精度级别的延时函数原型声明,这些函数可以用来精确控制程序执行的时间间隔[^4]。 - **端口配置宏** 预先设定好I/O端口的操作模式,减少重复编码的工作量[^4]。 #### 使用实例 下面是一个简单的例子展示如何利用 `utils.h` 实现基本功能: ```c #include <reg52.h> /* 导入8051寄存器定义 */ #include "utils.h" /* 导入自定义工具包 */ void main(void){ // 初始化硬件资源... while(1){ SetBit(P1, 7); // 设置P1.7高电平 DelayMs(500); // 延迟500ms ClearBit(P1, 7); // 清除P1.7低电平 DelayMs(500); } } ``` 此段代码展示了通过调用 `SetBit()` 和 `ClearBit()` 来改变指定引脚状态的方法,并且运用了 `DelayMs()` 函数实现了LED闪烁效果。 需要注意的是,在实际项目中具体实现可能会有所不同,取决于开发者的需求以及具体的硬件环境。因此建议查阅官方文档获取最准确的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值