avr的一些宏定义,可以类似51单片机那样按位对端口引脚操作

这篇博客介绍了如何使用AVR单片机的宏定义,模仿51单片机的方式进行按位操作端口引脚。通过提供的结构体和宏定义,可以方便地对端口的每一位进行读写操作,适用于输入输出控制。示例中包含了LED和按键的接口定义及简单应用。
摘要由CSDN通过智能技术生成

avr的一些宏定义,可以类似51单片机那样按位对端口引脚操作,方便操作!

 

#ifndef INCFILE1_H_
#define INCFILE1_H_

#include<avr/io.h>

// Macro to access bits like variables:
struct bits {
  uint8_t b0:1, b1:1, b2:1, b3:1, b4:1, b5:1, b6:1, b7:1;
} __attribute__((__packed__));
#define SBIT_(port,pin) ((*(volatile struct bits*)&port).b##pin)
#define SBIT(x,y)       SBIT_(x,y)


//#define KEY0_PIN        SBIT( PINB,  PB0 )      // Input
//#define KEY1_PIN        SBIT( PINB,  PB1 )
//
//#define LED0            SBIT( PORTB, PB2 )      // Output
//#define LED0_DDR        SBIT( DDRB,  PB2 )      // Direction
//
//
//int main()
//{
  //LED0 = 0;
  //LED0_DDR = 1;                         // output
//
  //for(;;){
    //LED0 = KEY0_PIN                     // Key0 = on
         //| (LED0 & !KEY1_PIN);          // Key1 = off
  //}
//}
//

 

#endif /* INCFILE1_H_ */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值