您的位置 首页 新品

AVR单片机I/O寄存器的C言语源程序及分析详解

IO寄存器的C语言源程序及剖析在ICCAVR中访问0x00~0x3f的寄存器空间,可以使用内汇编和预处理宏。一个数据内存地址可以通过加指针类型

I/O寄存器C言语源程序及分析

  在ICCAVR中拜访0x00~0x3f的寄存器空间,能够运用内汇编和预处理宏。一个数据内存地址能够经过加指针类型符号直接拜访。

例如,SREG寄存器的地址是0x5f,对它的拜访操作:

unsigned char c;

c=*(volatile unsigned char *)0x5f;//读取SREG寄存器

  *(volatile unsigned char *)0x5f|=0x80;//翻开大局中止答应位

 提示:数据内存地址0x00~0x31指向CPU通用寄存器R0~R31,不能随意修正它们的地址(或许输入过错的地址),不然可能会形成丧命的过错。

  ICCAVR C在io*v.h文件顶用define伪指令给大部分的寄存器界说了指针方式符号,如界说SREG:#define SREG *(volatile unsigned char *)0x5f

上面临SREG的操作也能够改为:

  unsigned char c;

c=SREG;//读取SREG寄存器

SREG|=0X80;//翻开大局中止答应位

阐明:

   1.在ICCAVR中对I/O寄存器进行操作,编译器主动生成用于拜访I/O寄存器的专用指令,如IN、OUT、BSET、BCLR等,并且已将地址0X5F变换为0x3f。

   2.#define句子也能够界说肯定内存空间,用以指向一个固定地址的字节,如:#define LED_OUT *(volatile unsigned char *)0x80aa

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部