AVR的位操作

发布者:心灵舞动最新更新时间:2016-10-23 来源: eefocus关键字:AVR  位操作 手机看文章 扫描二维码
随时随地手机看文章
一、方案一

1. #ifndef _M16_BIT_OPERATION_H_

#define _M16_BIT_OPERATION_H_
//定义一个带参的宏代替位域结构体方便使用
#define BITFIELD(addr) (*((volatile bit_field *)(addr)))
//位域定义结构体
typedef struct _bit_struct { unsigned Bit0:1; unsigned Bit1:1; unsigned Bit2:1; unsigned Bit3:1; unsigned Bit4:1; unsigned Bit5:1; unsigned Bit6:1; unsigned Bit7:1; }bit_field; 
2. #define PORTA_ADDR 0x3b 
3. #define PORT_PA0 ((*(volatile bit_field *)(PORTA_ADDR)).Bit0)
............ #endif 
二、方案二
typedef struct _bit_struct { unsigned char bit0 : 1 ; unsigned char bit1 : 1 ; unsigned char bit2 : 1 ; unsigned char bit3 : 1 ; unsigned char bit4 : 1 ; unsigned char bit5 : 1 ; unsigned char bit6 : 1 ; unsigned char bit7 : 1 ; }bit_field; 
#define   GET_BITFIELD(addr)     (*((volatile bit_field *) (addr))) 
unsigned char bit_variable1;
#define led0 GET_BITFIELD(&bit_variable1).bit0 
#define led1 GET_BITFIELD(&bit_variable1).bit1 
#define led2 GET_BITFIELD(&bit_variable1).bit2
三、方案三
#define    GET_BITFIELD(addr)    (*((volatile bit_field *)(addr))) 
#define GETBIT(reg_name,n) GET_BITFIELD(®_name).bit##n 
#define led0 GETBIT(PORTD,0) 
#define led1 GETBIT(PORTD,1) 
#define led2 GETBIT(PORTD,2)

关键字:AVR  位操作 引用地址:AVR的位操作

上一篇:STM32的GPIO口的输出:开漏输出和推挽输出
下一篇:AVR之 ICC 与 winavr

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

单片机C51语言的操作及其应用详细说明
在对单片机进行编程的过程中,对位的操作是经常遇到的。C51对位的操控能力是非常强大的。从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点。这也是在各个领域中都可以看到C的重要原因。在这一节中将详细讲解C51中的位操作及其应用。 1、位运算符 C51提供了几种位操作符,如下表所示: 1)“按位与”运算符(&) 参加运算的两个数据,按二进位进行“与”运算。原则是全1为1,有0为0,即: 0&0=0; 0&1=0; 1&0=0; 1&1=1; 如下例: a=5&3; //a=(0b 0101) & (0b 0011) =0b 0001 =1 那么如果参加运算的两个数为负数,又该如何算呢?会以其补码形式表
[单片机]
单片机C51语言的<font color='red'>位</font><font color='red'>操作</font>及其应用详细说明
基于AVR单片机的负荷缸多路遥控开关编解码实现
负荷缸是船舶电力核心发电机性能的负荷试验必备的重要工装设备,通过负荷试验,可以检验发电机长期工作的性能稳定的情况(静态特性)和对突加突卸负荷的应变能力(动态特性)。 AVR 单片机 " 单片机 具有高性能低价格的优点,在本文中利用 AVR 单片机 " 单片机 对发电机负荷缸的多路远程遥控开关量进行采集监控并进行数字信号编解码,用2芯的电缆取代原来40芯的粗电缆传输控制信号,有效地解决了工作中遇到的问题。    1 问题的提出   我们通过把由发电机供电的通电极板放到负荷缸水电阻中,用充气升降极板和补给水调节水电阻大小的方法控制试验发电机所带负荷的大小,对发电机的性能进行试验。体积庞大的负荷缸一般放置在码头,在船
[单片机]
基于<font color='red'>AVR</font>单片机的负荷缸多路遥控开关编解码实现
AVR单片机GCC编程:I/O端口的基本操作
#include avr/io.h int main(void) { int i = 0,j = 0; DDRD = 0xff; //设置PD口方向为输出 while(1) { PORTD = 0b11100110; //设置PD口数据 for(j = 0;j 10;j ++) for(i = 0;i 10000;i ++); PORTD = 0b00011001; for(j = 0;j 10;j ++) for(i = 0;i 10000;i ++); } } DDRx为端口的方向,置1时为输出. PORTx为端口数据, 当DDRx置1时,为输出的状态,1为高,0为低. PINx为读取的输入端口的数据,当D
[单片机]
avr单片机使用注意点汇总
1: atmega8 a,不能 仿真 ,但是atmega88的管脚和mega8a是完全兼容的,资源也类似,可以先用 88仿真再移植。 2:定时器1相关的16位寄存器,高位是有个暂存器的,这个暂存器是寻址不到的, 仿真器 也看不到这个暂存器,先写高位数据是先进入暂存器,这时看不出任何变化,只有写低位的时候,才能看到高位同时写入了,而且发现,仿真的时候这段代码如果单步执行,高位也是写不进的,只有连续执行的时候,才能成功写入。 3:端口的读入,输出,要仔细看一下资料,读入是pinN的地址,输出是portN地址,和51的是不一样的。 4:清所有ram的程序,不能写成子程序调用,清了堆栈指针后,子程序的ret 指令 会返回
[单片机]
AVR单片机中断实现
中断嵌套 对于中断嵌套的处理,不同的单片机处理的方式是不同的,应根据所使用单片机的特点正确实现中断嵌套的处理。 按照通常的规则,当MCU正在响应一个中断B的过程中,又产生一个其它的中断A申请时,如果这个新产生中断A的优先级比正在响应的中断B优先级高的话,就应该暂停当前的中断B的处理,转入响应高优先级的中断A,待高优先级中断A处理完成后,再返回原来的中断B的处理过程。如果新产生中断A的优先级比正在处理中断B的优先级低(或相同),则应在处理完当前的中断B后,再响应那个后产生的中断A申请(如果中断A条件还成立的话)。 一些单片机(如8051结构)的硬件能够自动实现中断嵌套的处理,既单片机内部的硬件电路能够识别中断的优先级,并根据优先
[单片机]
AVR开发 Arduino方法(二) 中断子系统
在了解ATMega328P的中断子系统之前,首先要了解中断的概念。你正在看书,这时电话响了,你会怎么做呢?相信大多数人会这样:先标记看到的位置,接完电话回来后继续阅读。这就是一个现实生活中中断的例子,我们把“电话响了”成为中断源。 ATMega328P拥有26个中断源,如下表所示: 向量号 程序地址 中断源 中断定义 中断服务程序名称 1 0x0000 RESET 外部电平复位,上电复位,掉电检测复位,看门狗复位 2 0x0002 INT0 外部中断请求0 INT0_vect 3 0x0004 INT1 外部中断请求1 INT1_vect 4 0x0006 PCINT0
[单片机]
AVR单片机的应用经验
AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。 但使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以前传统的硬件和软件设计思想和方法的话,是不能用好AVR的,甚至也不能真正的了解AVR的特点和长处。 功能越好的器件,需要具备更高技术和能力的人来使用和驾驭它。就象一部好的F1赛车,只有具备高超技术的驾驶员才能充分体会到车的特点,并能最大限度的发挥出车的性能。 AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。 “外行看
[单片机]
基于AVR单片机的激光测距机性能检测设计方案
  笔者设计了一种基于AVR单片机的激光测距机综合性能检测设备,借助该设备,对不同型号的激光测距机完成测距精度、测距能力、测距逻辑、单脉冲能量等的数字化检测,大大提高了检测效率和测试精度。    1 设计方案   本方案的基本思想基于模拟激光测距机的工作原理和激光传输过程,激光测距机在工作时,首先从其发射通道发射一激光脉冲,经过大气传输照射在被测物体上,然后漫反射,激光测距机的接收通道接收到漫反射的激光回波,激光测距机内部安装有激光脉冲的发射、接收和计时模块,根据激光脉冲从发射到返回的时间可以计算出其走过的距离,从而得到被测目标和激光测距机之间的距离。而本方案的综合性能检测设备与激光测距机的接收、发射通道相对应,分别提供发射、
[单片机]
基于<font color='red'>AVR</font>单片机的激光测距机性能检测设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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