版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本系列教程以AVR单片机为对象,介绍单片机的快速开发方法。
参考教材:《单片机技术及应用项目教程》 栾秋平 电子工业出版社 2019.6 第1版
本文介绍控制指定LED亮灭的方法。
一、认知C语言中的位操作
//加入包含文件
#include "../include.h"
//定义系统常量
//定义全局变量
//主程序
int main(void)
{
//定义局部变量
//目标板初始化,该函数会自动初始化相应的外设文件
TARGET_Init();
//初始化全局变量
//在上电时,执行的相应操作
DDRC = 0xFF;
//后台主循环
while(1)
{
//在这里完成自己的项目逻辑
PORTC = 0xFB;
TARGET_Delayms(1000, 1);
PORTC = 0xFF;
TARGET_Delayms(1000, 1);
//喂狗语句,大部分工程项目都不应去除
#if INTERNAL_PERIPHERAL_WDT_MODE != 0
TARGET_WatchDogReset();
#endif
}
return 0; //永不执行
}
二、操纵寄存器中的指定位
//加入包含文件
#include "../include.h"
//定义系统常量
//定义全局变量
//主程序
int main(void)
{
//定义局部变量
//目标板初始化,该函数会自动初始化相应的外设文件
TARGET_Init();
//初始化全局变量
//在上电时,执行的相应操作
DDRC |= (1 << 2);
//后台主循环
while(1)
{
//在这里完成自己的项目逻辑
PORTC &= ~(1 << 2);
TARGET_Delayms(1000, 1);
PORTC |= (1 << 2);
TARGET_Delayms(1000, 1);
//喂狗语句,大部分工程项目都不应去除
#if INTERNAL_PERIPHERAL_WDT_MODE != 0
TARGET_WatchDogReset();
#endif
}
return 0; //永不执行
}
三、置高、置低和反转功能宏
//加入包含文件
#include "../include.h"
//定义系统常量
//定义全局变量
//主程序
int main(void)
{
//定义局部变量
//目标板初始化,该函数会自动初始化相应的外设文件
TARGET_Init();
//初始化全局变量
//在上电时,执行的相应操作
SETBIT(DDRC, BIT2);
//后台主循环
while(1)
{
//在这里完成自己的项目逻辑
CLRBIT(PORTC, BIT2);
TARGET_Delayms(1000, 1);
SETBIT(PORTC, BIT2);
TARGET_Delayms(1000, 1);
//喂狗语句,大部分工程项目都不应去除
#if INTERNAL_PERIPHERAL_WDT_MODE != 0
TARGET_WatchDogReset();
#endif
}
return 0; //永不执行
}
//功能宏,以下内容与移植不相关
#define SETBIT(x, y) (x |= y)
#define CLRBIT(x, y) (x &= ~y)
#define CPLBIT(x, y) (x ^= y)
#define CHKBIT(x, y) (x & y)
#define BIT(x) (1<<x)
#define BIT0 BIT(0)
#define BIT1 BIT(1)
#define BIT2 BIT(2)
#define BIT3 BIT(3)
#define BIT4 BIT(4)
#define BIT5 BIT(5)
#define BIT6 BIT(6)
#define BIT7 BIT(7)
#define BIT8 BIT(8)
#define BIT9 BIT(9)
#define BITA BIT(10)
#define BITB BIT(11)
#define BITC BIT(12)
#define BITD BIT(13)
#define BITE BIT(14)
#define BITF BIT(15)
扫描二维码关注公众号,回复:
7658193 查看本文章
任何问题,只需在此文章的评论处留言即可,我将尽力解答,不要试图采用其它的联系方式,我一概不理会。
原创性文章,转载请注明出处CSDN:http://blog.csdn.net/qingwufeiyang12346。