欢迎来到天天文库
浏览记录
ID:9854294
大小:294.00 KB
页数:26页
时间:2018-05-12
《学习笔记之 单片机编程之c语言》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学习笔记之二:AVR单片机C语言编程=====================================================说明:此为我的学习笔记,为AVR单片机C语言编程。要了解AVR单片机的具体编程注意要点,请看《学习笔记之一:AVR单片机详解》。By:郭梅芝Email:gmzguoyi@163.com2007.8初稿一、AVR单片机与C语言堆栈工作方式:MCS-51的堆栈是一个由堆栈指针寄存器SP(单字节)控制的向上生长型堆栈,即将数据压入堆栈时SP增大。AVR系统单片机的堆栈同样受SP
2、寄存器控制,而堆栈生长方向与MCS-51相反,为向下生长型,即数据压入堆栈时SP减小。另外要注意以下几点:1.MCS-51的堆栈空间只能放置在片内的SRAM中,而AVR的堆栈空间既可放置在片内SRAM中,也可放置在片外SRAM中。2.AVR单片机中,对不支持外部SRAM的单片机,SP寄存器为一个字节宽度,对支持外部SRAM的单片机为两个字节宽度(SPL、SPH)。3.为了提高速度,一般在初始化SP时将其定位于内部SRAM的顶部.4.在对AVR编程时一定要对SP时行初始化。外部SRAM的配置:在AVR中访问片内或
3、片外SRAM无使用相同的指令,当访问数据空间的地址超过片内SRAM范围时会自动选择片外的SRAM空间。但为了正常工作还必须对寄存器MCUCR的SRE(D7)、SRW(D6)位进行设置。MCUCRSRESRWSESMISC11ISC10ISC01ISC00当SRE=1时,使能外部SRAM;SRE=0时,禁止外部SRAM。当SRW=1时在访问外部SRAM中插入一个等待周期,当SRW=0时在访问外部SRAM中不插入等待周期。在C语言中可直接用MCUCR
4、=0xC0或MCUCR&=0x3F来配置外部SRAM。程序空间的
5、访问:MCS-51的程序存储器是以字节为单位的,地址是按字节进行寻址的,使用MOVC指令访问程序存储器,这和指令寄存吕访问程序ROM没什么区别。在AVR中程序在座器的总线为16位,即指令寄存器访问程序ROM时是以字(双字节)为单位的,即一个程序地址对应两个字节,而AVR的数据存储器的总线为8位,当用户使用LPM指令访问程序ROM时是以字节为单位读取的,此时Z寄存器中的一个地址只对应一个字节,因此要注意这两个地址的换算,否则很容易产生错误,具体的换算是LPM指令使用的Z寄存器中地址应该是程序地址的两倍。如:;初始
6、化Z寄存器ldiZH,high(F_TABLE*2);Z寄存器高位存入程序存储器地址的高位ldiZL,low(F_TABLE*2);Z寄存器低位存入程序存储器地址的低位;用户程序lpm;将Z寄存器的低位数送r0stY+,r0;Y变址,将r0数送SRAM后,Y=Y+1;用户程序FTABLE:.db0,1,2,3,4,5;数据表的起点AVR输入/输出商品的使用:MCS-51单片机的I/O端口大部分是准双向口,在复位时全部输出高电平,对端口的输入和输出操作也是直接通过I/O商品的地址进行的。而AVR的I/O端口为标准
7、双向口,在复位时所有端口处于没有上拉电阻的输入状态(高阻态,管脚电平完全由外部电路决定),这在强调复位状态的场合是很有用的。DDRXnPORTXnI/O上拉00输入关闭三态(高阻)01输入打开提供弱上拉,低电平必须由外电路拉低,PXn脚输出电流。10输出关闭0输出11输出关闭1输出DDRX为端口方向寄存器,当DDRX的某一位置1时,相应端口的引脚作为输出使用;当DDRX的某一位清0时,对应端口的引脚作为输入使用。PORTX为端口数据寄存器,当引脚作为输出使用时,PORTX的数据由相应引脚输出;当引脚作为输入使用
8、时,PORTX的数据决定相应端口的引脚是否打开上拉功。,PINX为相应端口的输入引脚地址,如果希望读取相应引脚的逻辑电平值,一定要读取PINX而不能读取PORTX,PORTX为端口锁存器的值,这与MCS-51是有区别的。注意:在使用AVR单片机之前,一定要根据引脚功能定义对相应的端口初始化,否则,端口很可能在用作输出时不能正常工作(复位后默认为输入状态)。如设置端口B的高四位输入,低四位输入,则有:汇编语言:ldir16,$f0outDDRB,r16在C语言中:DDRB=0xF0;AVR定时器的使用:具体详见《
9、学习笔记之一:AVR单片机详解》。注意:1.由于T1的TCNT1、OCR1A、OCR1B和ICR1无为16位的定时器,为了正确地写入和读出,在写入数据时应先写入高位字节,后写入低位字节,在读取数据时应先读取低位节,后读取高位字节。2.T1的捕捉方式,可用于ICP引脚上频率或周期的测量,在使用时只需使能捕捉中断即可。C51向ICCAVR的转换的总结:1、头文件。对C51中定义寄存器的头文
此文档下载收益归作者所有