任务5:应用层次化软件设计思想实现多路LED闪烁

发布者:光速思考最新更新时间:2020-03-13 来源: eefocus关键字:应用层次化软件  设计思想  LED闪烁 手机看文章 扫描二维码
随时随地手机看文章

本系列教程以AVR单片机为对象,介绍单片机的快速开发方法。


参考教材:《单片机技术及应用项目教程》 栾秋平 电子工业出版社 2019.6 第1版


本文介绍应用层次化软件设计思想实现多路LED闪烁的方法。


一、认知层次化软件设计思想

二、将硬件原理图直译成映射层

#ifndef HAL_H_

#define HAL_H_

 

//引脚定义

/////////////////////////////////////////////////////////////////////

//PortB

#define IO_PB_DIR 0b00000000

#define IO_PB_OUT 0b00000000

/////////////////////////////////////////////////////////////////////

 

/////////////////////////////////////////////////////////////////////

//PortC

#define IO_PC_DIR 0b00000000

#define IO_PC_OUT 0b00000000

/////////////////////////////////////////////////////////////////////

 

/////////////////////////////////////////////////////////////////////

//PortD

#define IO_PD_DIR 0b11111111

#define IO_PD_OUT 0b11111111

/////////////////////////////////////////////////////////////////////

#define LED0 BIT0

#define LED1 BIT1

#define LED2 BIT2

#define LED3 BIT3

#define LED4 BIT4

#define LED5 BIT5

#define LED6 BIT6

#define LED7 BIT7

 

#define LED0_OPEN CLRBIT(PORTD, LED0)

#define LED0_SHUT SETBIT(PORTD, LED0)

#define LED1_OPEN CLRBIT(PORTD, LED1)

#define LED1_SHUT SETBIT(PORTD, LED1)

#define LED2_OPEN CLRBIT(PORTD, LED2)

#define LED2_SHUT SETBIT(PORTD, LED2)

#define LED3_OPEN CLRBIT(PORTD, LED3)

#define LED3_SHUT SETBIT(PORTD, LED3)

#define LED4_OPEN CLRBIT(PORTD, LED4)

#define LED4_SHUT SETBIT(PORTD, LED4)

#define LED5_OPEN CLRBIT(PORTD, LED5)

#define LED5_SHUT SETBIT(PORTD, LED5)

#define LED6_OPEN CLRBIT(PORTD, LED6)

#define LED6_SHUT SETBIT(PORTD, LED6)

#define LED7_OPEN CLRBIT(PORTD, LED7)

#define LED7_SHUT SETBIT(PORTD, LED8)

 

#define ALL_LED_OPEN PORTD = 0x00

#define ALL_LED_SHUT PORTD = 0xff

//函数原型声明

 

#endif /* HAL_H_ */


三、逻辑层设计

int main(void)

{

//定义局部变量

//目标板初始化,该函数会自动初始化相应的外设文件

TARGET_Init();

//初始化全局变量

//在上电时,执行的相应操作

//后台主循环

while(1)

{

/*

**********************************

在这里完成自己的项目逻辑

**********************************

*/

LED0_OPEN;

LED7_OPEN;

TARGET_Delayms(200, 1);

LED1_OPEN;

LED6_OPEN;

TARGET_Delayms(200, 1);

LED2_OPEN;

LED5_OPEN;

TARGET_Delayms(200, 1);

LED3_OPEN;

LED4_OPEN;

TARGET_Delayms(200, 1);

ALL_LED_SHUT;

TARGET_Delayms(200, 1);

/*

**********************************

喂狗语句,大部分工程项目都不应去除

**********************************

*/

#if INTERNAL_PERIPHERAL_WDT_MODE != 0

TARGET_WatchDogReset();

#endif

}

return 0; //永不执行

}

关键字:应用层次化软件  设计思想  LED闪烁 引用地址:任务5:应用层次化软件设计思想实现多路LED闪烁

上一篇:任务6:认知ATmega168PA最小工作系统
下一篇:任务4:控制指定LED的亮灭

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved