接下来进行keil5软件的相关学习使用
安装教程
参考视频链接bilibili 51单片机 大约在8分钟位置处
使用介绍
- 首先新建project
- 选择对应的芯片型号(例如:STC89C52 —— 由于STC系列是国产,keil5软件不支持,改用AT系列即可 AT89C52)
- 创建C语言main.c文件
#include <REGX52.H>
void main()
{
while (1)
{
// 设置P2端口的信号值8位,由于C语言中会将8位2进制数视为10进制,所以将信号值表示为16进制形式
//点亮最后一个灯
P2 = 0xFE; //1111 1110
}
}
软件界面介绍
1处是build
按钮,用于编译项目文件
2处是设置编译目标文件,点击2处,得到以下界面
勾选Create HEX File
,生成.hex文件,用于烧录进单片机通过STC-ISP软件
下载/编程
将.hex文件烧录进单片机,再通过冷启动后,即可执行程序
设置延时函数
再STC-ISP中设置对应频率、延时时间等,生成对应的函数,复制到main.c中使用,需要引用#include <INTERINS.H>
数据运算
这也是C语言中常见的运算符,包括单目运算符和双目运算符等,其中要区别逻辑运算符和位运算符之间的区别,例如&&
和&
基本语句
C语言常见的语句形式:条件语句、循环语句、选择语句
int i; for(i=1; i<-8; i++) { fprint(i); }
数据类型
这里补充一个C语言中的知识:- char:它的具体类型由编译器来决定,可能是有符号的,也可能是无符号的。在大多数编译器环境中,char 会被当作 signed char 来处理,但你不能对这一点进行假设。
- unsigned char:这是无符号类型,其取值范围是 0 到 255(以 8 位为例)。
- signed char:属于有符号类型,采用补码形式表示数值,取值范围为 -128 到 127(以 8 位为例)
我
案例展示
- 独立按键控制LED移位,通过原理图可以看到,LED模块对应P2接口,独立按钮对应P3_0-P3_3接口



#include <REGX52.H>
void Delay(unsigned int xms); \\延时函数,延时xms毫秒
unsigned char LEDNum;
void main()
{
P2 = ~0x01; \\ 初始化右侧第一个灯亮
while(1)
{
if(P3_1 == 0) \\ 实现左移
{
Delay(20); \\延迟是因为独立按键模块需要调节稳定时间,大约是20ms,不进行延时科恩那个回导致多次触发
while(P3_1 == 0); \\ 检测松手,按键开关松开
Delay(20);
LEDNum++;
if(LEDNum >= 8)
LEDNum = 0;
P2 =~(0x01<<LEDNum);
}
if(P3_0 == 0) \\ 实现右移
{
Delay(20);
while(P3_0 == 0);
Delay(20);
if(LEDNum == 0)
LEDNum = 7;
else
LEDNum--;
P2 =~(0x01<<LEDNum);
}
}
}
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
}while (--i);
}
}