单片机学习归纳总结(四):LED闪烁实验
前言
通过前一篇文章的分享,我们已经成功搭建好了一个普适性的单片机框架,而这篇文章我们将开始编写第一个实验:LED闪烁实验。
代码的编写均在VSCode编辑器中进行;编写代码的文件为main.c文件和main.h文件!
步骤一
首先需要先在单片机上任意找一个IO口,如:P2_0,
接着在main.h文件中写入代码:
#define P_led1 P2_0
#define F_led1On() P_led1 = 0
#define F_led1Off() P_led1 = 1
然后在main.c文件的主函数中写入:
#define __main_c
#include "includeAll.h"
//============================================
void main() {
F_turnOnWDT(); // 看门狗寄存器
InitSys();
while (1) {
F_led1On();
F_led1Off();
}
}
//============================================
void InitSys() {
// system clock
CLKCON = 0x03; // Clock div 1
STPPCK = 0;
STPFCK = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SELFCK = 1;
// I/O init
P2MOD = 0xa;
}
//============================================
void DisplayProcess() {}
//============================================
void UserSettingProcess() {}
//============================================
void TaskProcess() {}
//============================================
void TimeProcess() {}
//============================================
然后,在Keil C51编译器中进行debug测试。看看该单片机是当给一个低电压(即“P_led1 = 0”)时,P2_0引脚上的LED灯亮还是当给一个高电压(即“P_led1 = 1”)时,P2_0引脚上的LED灯亮,即IO口是共阳极还是共阴极。
测试结果是:当给一个低电压(即“P_led1 = 0”)时,P2_0引脚上的LED灯亮,当给一个高电压(即“P_led1 = 1”)时,P2_0引脚上的LED灯灭。
步骤二:编写逻辑代码
main.h
#ifndef __main_h
#define __main_h
#define P_led1 P2_0
#define P_led2 P2_1
#define F_led1On() P_led1 = 0
#define F_led1Off() P_led1 = 1
#define F_led2On() P_led2 = 0
#define F_led2Off() P_led2 = 1
void InitSys();
void DisplayProcess();
void UserSettingProcess();
void TimeProcess(int time);
void TaskProcess();
#endif
main.c文件中,InitSys()函数中的P2MOD = 0xa;
将单片机上P2MOD寄存器中的特殊功能位P2MOD1和P2MOD0置为“10”,即模式2:CMOS推挽输出: