前言:
本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。
引用:
51单片机入门教程-2020版 程序全程纯手打 从零开始入门_哔哩哔哩_bilibili
c51语言变量语句意思,C51中循环语句-CSDN博客
正文:
0. 概述
今天 (2024/06/13)在淘宝上购买了江协科技51单片机开发板套件,就上在上一篇博文里说的自己计划学习下江协科技51单片机开发教程,通过STC51单片机这种MCU这种贴近于裸机的开发来增加对于系统硬件层面知识的了解和掌握。
1. LED闪烁
LED闪烁需要使用到延时函数,本节先使用软件延时,在 STC-ISP 软件中,选择“软件延时计算器”,选择系统频率根据自己开发板上的晶振选择,例如我的开发板晶振上标的是11.0592MHz,就选择11.0592MHz,选择8051单片机指令集,选择“STC-Y1”可以看到在勾选“STC-Y1”的时候STC-ISP软件提示“适用于如下系列 STC89Cxx/STC89LExx”和我开发板使用的型号 STC89C52RC 是屁匹配的,延时单位为“毫秒”,生成代码。
系统频率 | 根据自己开发板的晶振选择,我使用的普中A2开发板上晶振标记是11.0592MHz |
定时长度 | 选择软件延时单位,这里我选择毫秒 |
8051指令集 | 根据自己开发板使用的STC芯片型号选择,我使用的普中A2开发板使用的是 STC89C52RC ,选择8051单片机类型为“STC-Y1”可以到看到STC-ISP提示的信息“使用于如下系列:STC89Cxx/STC89LExx”和我开发板使用的芯片型号匹配。 |
2. 编译器提示缺少‘_nop()_’原型错误解决
将STC-ISP生成的软件延时函数拷贝到Keil5中,点击“编译”,Keil5提示如下告警
告警提示说,缺少'_nop_()'的函数原型声明,这是因为没有包含头文件
main.c(8): warning C206: '_nop_': missing function-prototype
解决方法是在 Keil5 main.c中包换如下头文件,再次编译就是0错误,0告警。
#include <intrins.h>
3. 烧录验证LED灯闪烁
配置STC51单片机闪烁的源码
#include <REGX52.H>
#include <intrins.h>
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2 = 0x7F;
Delay500ms();
P2 = 0xFF;
Delay500ms();
}
}
编译,烧录,
编译结果0错误,0告警
使用STC-ISP收录到开发板,提示烧录成功,
观察实验结果,开发板按照500ms的频率开始闪烁
4. Keil5中如何查看当前选择的单片机型号
Keil5中如何查看当前选择的单片机型号,参考如下引用链接:点击Keil5上的小魔法棒,在"Device"选项卡里就可以看到Keil5选择的单片机的型号。
https://www.zhihu.com/question/578368537