您的位置 首页 技术

AVR单片机的端口位操作方法解析

AVR单片机的端口位操作方法解析-如此宏定义之后,可构成一个头文件,然后加入到新建工程文件中(编译器用ICC的ICC6.31A),但之前需包含相应单片机的头文件,如:MCU为AT-MEGA48,则最先包含iom48V.h之后,再包含此自制头文件,即可在程序中运用:

一、惯例办法

AVR单片机的各类教材或编程运用参阅材料,对介绍的端口位操作办法不外乎宏界说及全体和某个常量相或、相与来完成某一单个位状况的改动。如:

PORT&=-(1《1);等价于:PORTB&=oxfd;作用是PB1清零而其他位不变。与之类似的还有:

PORTBl=(1《4);PB4置位,其他位不变。

PORTB=(k《4);PB4翻转,其他位不变。

上述办法,无论是常量值参加仍是移位操作,用起来总嫌费事,不行直观,且详细常量值还需人工计算,易犯错。移位操作生成的方针代码偏大,在很多运用时,占用体系内存或flash空间,履行功率低。

以实践运用作用来看,宏界说比较好。也偏好运用宏界说。C编译器在编译之前会事前进行宏替换,所以,假如宏界说考究一些技巧,则代码履行功率将得到较大提高,编程时,操作也称心如意。

惯例参阅手册或材料,主张用以下宏界说:

AVR单片机的端口位操作办法解析

如此宏界说之后,可构成一个头文件,然后加入到新建工程文件中(编译器用ICC的ICC6.31A),但之前需包括相应单片机的头文件,如:MCU为AT-MEGA48,则最早包括iom48V.h之后,再包括此克己头文件,即可在程序中运用:

AVR单片机的端口位操作办法解析

此法在运用时,仍旧用了移位操作,仅仅为了便利程序操作,只在小规模程序中运用。

下面,将充分利用C言语本身的强大位运算才能和指针相结合,构建一个ICC6.31A平台下的位界说头文件,期望能给咱们一些启示。

首要清晰几个根本概念:位域、地址绑定,和VolaTIle限制关键字。

ICC6.31A的装置目录中有个in-clude文件夹,里边有很多编译器开发人员已为咱们开发好的各类AVR单片机预订头文件,下面是iom48v.h头文件。

AVR单片机的端口位操作办法解析

AVR单片机的端口位操作办法解析

注:每个端口均有PIN、DDR、PORT三个八位寄存器

扼要归纳如下:

VolaTIle -词用来规则C编译器不答应对其限制的变量进行优化处理。如:

AVR单片机的端口位操作办法解析

这句宏界说要结合iom48v.h头文件来看,在前面有该头文件关于各端口寄存器的界说。上述宏句子中,ox25被强制转化为一个指针常量,实践上,上述宏界说的含义为:PORTB被强制界说在地址ox25上,即界说了一个无符号字符型变量PORTB,且被强制绑定在ox25地址上。其他句子依此类推。

有了这个概念之后,再来了解一下C言语中位域的界说。规范c言语中,能够界说一个特别的结构,位域,答应对界说的结构中的单个位进行操作。根本构成如下:

AVR单片机的端口位操作办法解析

下面给出的位域界说等的头文件,在自界说位操作头文件中界说了一个位域BYTE_BIT。

自界说avt_bit.h头文件(节选,以ATMEGA48为例,界说其B口)

AVR单片机的端口位操作办法解析

对各端口依同一规则均进行各位的界说即可。

结合头文件的相关界说,从头对其特定地址进行别的的绑定,结合位域的概念.从而一步步将各寄存器由一个字节分成了可操控的8个位。在上述文件中,仅表述了B端口。别的,Atmega48的端口不完全,只要B、C、D口,没有A口,且D口为8位,C口为6位.B口为7位,若外接晶体,则PB6和PB7不能另作端口运用。所以,端口很不完好,但为了坚持位域完好性和一致性,便于了解,将B、C、D三口均作8bit对待。实践操作时,千万留意不要去操作那些实践不存在的位。当然,若感兴趣,咱们可改动头文件相关界说,来完善它。

为验证这个头文件,很快编写了一个测验程序Beep.e,详细如下:

AVR单片机的端口位操作办法解析

在电路拓扑中,在ATMEGA48的PBO脚,即(14)脚外接一只三极管(接b极)由三极管去操控一只蜂鸣器。程序很简单。为了更直观,在PORTB口其他不必的引脚上均接了发光二极管,此刻,在测验程序中,将端口初始化函数句子改为:

DDRB=oxff;PORTB=ox00;(或PORTB=oxff;视二极管接法而定),由二极管合作蜂鸣器来调查PBO位是否能独自动作。当然,运用此位界说头文件,可完成单片机任一口的任一位的位操作。

二、扩展运用

根据上述原理,结合C言语取地址运算符&,不难完成一个通用位界说头文件,来合适一切AVR单片机,仅仅代码较为杂乱。咱们无妨自己试试。

留意一点:以上头文件,是参阅ICC6.31A编译器的include文件夹界说的,在运用前,请首要包括体系供给的MCU头文件,并将自界说头文件复制到所建工程中,然后,就可游刃有余了。

就现在运用情况来看,运用AT-MEGA48/16/128的MCU较多,所以即便是界说3个对应的位操作头文件,也是能够的。通用型文件往往体积较大,编制费事,可读性差,不合适一般喜好者。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/346714.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部