单片机学习归纳总结(四):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推挽输出:

(0)

相关推荐