自学AVR单片机,ICCAVR中的头文件iom16.h中

2024-11-24 19:17:43
推荐回答(4个)
回答1:

如果你充分了解单片机的结构,就不会有这样的疑问了。在AVR单片机资料中有一篇为“寄存器概述”,中详细标出了AVR单片机所有寄存器的地址和其中位定义。其中PINC的地址是0x33,DDRC为0x34,PORTC为0x35。因此你看贴的的那些define定义就是指明寄存器的地址。比如在程序中DDRC=0x4C,就表示向地址为0x34的寄存器写入数据0x4C。

所以,别一上来就想着用C,先把单片机的结构搞清楚再说,不然问题多的你自己都无法解决。

回答2:

#define DDRC (*(volatile unsigned char *)0x34)是寄存器地址映射,定义的是指针变量,就是说PC口的方向寄存器地址为0x34,#define DDRC 0x34确实是赋值的宏定义,你不能这样写,否则你设置PC口的输入输出如DDRC= 0xff,意为将C口作为输出,但是按照你的写法就成了0x34=0xff,这显然是错误的。

回答3:

将DDRC赋值为0X34

回答4:

*(volatile unsigned char *)用来定义存储器地址的,它不是什么赋值语句。这个宏的意思是将地址为0x34的寄存器命名为DDRC,这样你用到这个寄存器的时候直接用DDRC来表示就行了。