AVR读写IO口右一方法(借用ATmel)

发布者:清新风华最新更新时间:2017-11-24 来源: eefocus关键字:AVR  读写IO口  ATmel 手机看文章 扫描二维码
随时随地手机看文章

//头文件
#ifndef __always_inline__
#define __always_inline__  _Pragma("inline=forced")inline
#endif

#define AVR_GPIO_ASSIGN(name, port, bit) \
__always_inline__ static void   GPIO_##name##_Set(void)            {PORT##port |= (1 << bit);}\
__always_inline__ static void   GPIO_##name##_Clr(void)            {PORT##port &= ~(1 << bit);}\
__always_inline__ static void   GPIO_##name##_Toggle(void)         {PORT##port ^= (1 << bit);}\
__always_inline__ static uint8  GPIO_##name##_Read(void)           {return (PIN##port & (1 << bit)) !=0;}\
__always_inline__ static uint8  GPIO_##name##_DdrRead(void)        {return (DDR##port & (1 << bit)) !=0;}\
__always_inline__ static void   GPIO_##name##_MakeOut(uint8 x)     {(x)?(PORT##port |= (1 << bit)):(PORT##port &= ~(1 << bit)); DDR##port |= (1 << bit);}\
__always_inline__ static void   GPIO_##name##_MakeIn(uint8 x)      {DDR##port &= ~(1 << bit); (x)?(PORT##port |= (1 << bit)):(PORT##port &= ~(1 << bit));}\
__always_inline__ static void   GPIO_##name##_MakePullup(void)     {GPIO_##name##_MakeIn(1);}


AVR_GPIO_ASSIGN(LED_1,B,0);    //LED_1-------PORTB0
AVR_GPIO_ASSIGN(LED_2,B,1);    //LED_2-------PORTB1
AVR_GPIO_ASSIGN(KEY,B,2);      //KEY---------PORTB2

//C文件
volatile uint8 key;
int main()
{
    GPIO_LED_1_MakeOut(0);    //LED_1设为输出,初始输出低
    GPIO_LED_2_MakeOut(0);    //LED_2设为输出,初始输出低
    GPIO_KEY_MakeIn(1);       //KEY设为输入,初始上拉
    
    GPIO_LED_1_Set();         //LED_1输出高
    GPIO_LED_1_Clr();         //LED_1输出低
    
    GPIO_LED_2_Set();         //LED_2输出高
    GPIO_LED_2_Clr();         //LED_2输出低
    
    key=GPIO_KEY_Read();      //读取KEY

    while(1);

}

关键字:AVR  读写IO口  ATmel 引用地址:AVR读写IO口右一方法(借用ATmel)

上一篇:AVR(Mega8)的 IO口模拟SPI,读写FLASH
下一篇:AVR单片机IO使用注意事项及结构全攻略

推荐阅读最新更新时间:2024-03-16 15:46

Delay.h头文件下载-AVR系列单片机的通用软件延时头文件
/***************************************************************************** 文件名称:Delay.h 文件标识:_DELAY_H_ 摘 要:AVR系列单片机的通用软件延时头文件 当前版本:V1.0 *****************************************************************************/ #ifndef _DELAY_H_ #define _DELAY_H_ #include BaiYuAvrKuDataType.h #include BaiYuAvrK
[单片机]
一种AVR单片机智能多接口的全硬件音频系统的解决方案
0 引言 在传统的硬件体系结构中,接口被看作是相应外部设备的一部分,每个接口一般都只能连接到同一种设备上。虽然通过所谓“菊花链”(daisyohain)方式可以把若干同种设备连接到同一接口上,却不能将不同种类的设备混合连接到同一接口上,由于目前USB接口的设备越来越丰富,种类越来越多,为了满足这样的需求,这里给出一种USB 2.O接口的解决方案,通过USB接口读取各种USB设备;通过SD卡接口,读取各种主流存储卡。该方案支持常用的USB存储设备(包括U盘/USB硬盘/USB闪存盘/USB读卡器)和SD卡(包括标准容量SD卡和高容量HC-SD卡以及协议兼容的MMC卡和TF卡)。 本文提出了一种智能多接口的全硬件音频系统的解
[单片机]
一种<font color='red'>AVR</font>单片机智能多接口的全硬件音频系统的解决方案
AVR 定点数运算程序设计及数制转换
AVR 单片机有加法和减法指令,可以直接调用相关指令来达到目的。 这里列出了16位加法、16位带立即数加法、 16位减法、16位带立即数减法、 16位比较、16位带立即数比较程序和16位取补程序。 add16:   add r16,r18 ; r17:r16+r19:r18→r17:r16   adc r17,r19 addi16:   subi r16,low(-addi2) ; r17:r16+addi2→r17:r16   sbci r17,high(-addi2) ;addi2为16位立即数 sub16:   sub r16,r18 ; r17:r16-r19:r18→r17:r16   
[单片机]
AVR单片机—(五)、ATMEGA16的USART与PC机串行通信—03
五、ATMEGA16的USART与PC机串行通信 五—(03)、PC机发送控制指令控制单片机工作~(这个控制还是比较简单的~~ ,不过个人认为还是有水平的~) 还是先上图片~~,然后程序,程序师模块化的,我尽量贴全点~~ 然后就是程序了 IAR5_2.c //------------------------------------------------------------------------------ //控制指令的定义(个人感觉这个才是真正应用呢~~给力~) //上位机界面中,用户需要输入控制下位机的指令 //由于传送的数据比较简单,因此控制指令也可定义的相对简单一些((*^__^*) 嘻嘻……,那本书上
[单片机]
<font color='red'>AVR</font>单片机—(五)、ATMEGA16的USART与PC机串行通信—03
AVR单片机uPD6121/AS6122等红外编码芯片的解码程序
#include #define uchar unsigned char #define ulong unsigned long /*------------------------------显示-----------------------------------*/ #define LED _DATA PORTB const uchar tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; /* 0 1 2 3 4 5 6 7 8 9 A B C
[单片机]
AVR单片机中的中断嵌套
AVR响应中断后,由硬件自动清零全局中断标志位,此时任何中断都无法响应。直到中断响应程序执行完毕后,全局中断自动打开。因此,若不作特别处理,AVR单片机是无法实现中断嵌套的。 但,如果在中断服务程序中开放全局中断,一旦有中断(包括中断级别较低的,或者是自己本身)申请,AVR将立即响应中断,打断当前正在执行的任何程序(包括正在执行中断服务程序),进入新的中断服务程序,从而实现中断嵌套。此时如有多个中断申请同时存在,MCU响应高优先权的中断。 可见,AVR单片机中,若软件合理设计,即可实现中断嵌套。 和MCS51特别不同的是,AVR中断嵌套不仅可处理优先级更高的中断,也可以处理同优先级甚至优先级较低的中断。这能满足一些特殊的设计,
[单片机]
AVR单片机AD转换的电源滤波电路
为减小AD转换的电源干扰,Mega16芯片有独立的AD电源供电。官方文档推荐在VCC串上一只10uH的电感(L1),然后接一只0.1uF的电容到地(C3)。 Mega16内带2.56V标准参考电压。也可以从外面输入参考电压,比如在外面使用TL431基准电压源。不过一般的应用使用内部自带的参考电压已经足够。习惯上在AREF脚接一只0.1uF的电容到地(C4)。 重要说明:实际应用时,如果你想简化线路,可以将AVCC直接接到VCC,AREF悬空。即这部分不需要任何的外围零件。
[单片机]
<font color='red'>AVR</font>单片机AD转换的电源滤波电路
轻触式开关电路在AVR单片机中的应用
引 言: 单键开关电路已经广泛应用于PDA、手机和电子词典等数码产品中,其实现方式多种多样。一般可采用RS触发器、计数器以及采用555集成电路等等。在单片机的一些实际应用中,以上的实现方式会增加整个电路的复杂度,不能达到简洁、实用的效果。本文将介绍一种可以在单片机应用中实现的,简易、稳定的轻触式单键开关电路。 1 电路原理 如图1所示,DC-DC为一个带有关断控制端的直流稳压电源芯片,MCU是一个单片机。当按下S1时,Q1和D1导通,稳压芯片工作,为单片机供电。单片机马上将相应的I/O引脚置为输出高,这时Q1和Q2导通,整个电路进入工作状态。而后单片机再将这个I/O引脚设置为输入,由于上拉电阻R4的存在,Q1和Q2一直导通。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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