AVR学习.docx
- 文档编号:29191436
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:13
- 大小:20.82KB
AVR学习.docx
《AVR学习.docx》由会员分享,可在线阅读,更多相关《AVR学习.docx(13页珍藏版)》请在冰豆网上搜索。
AVR学习
AVRATmega128单片机内部资源
1.Flash用来存储程序用的.
2EEprom用来存储常量的此上二者掉电后都不丢失.
3SRAM用来存储程序中产生的变量
4JTAG用来下载和仿真
5ISP下载现在很少用
6TC定时计数器,可以用来产生PWM波.
7多路10位ADC
8有UART异步串口
9SPI国步串口,现在有很多芯片都有此串口
10具有看门狗功能WATCHDOG
11具有模拟比较器
12TWI接口,也就是I2C接口.
13有多个能用IO口.
此系统单片机采用精简的RISC指令系统,执行代码速度快,大部分指令都可以在一个时钟周期内完成,而我们知道,51单片机要执行一条指令要经过12个时钟周期,所以在外部晶振频率一样的情况下,AVR单片机会比51系列的单片机速度快12倍,而其价格却和同类51单片机相同.
电平学习
1TTL电平高电平5V,低电平0V
2CMOS电平高电平,2.5V,低电平0V
3RS232电平高电平-12V,低电平+12V
运算符号的学习
1.&&与,在C中,用于条件的并存
2,||或,在C中,用于条件的搜索
3!
非用于条件取反
4&|~这三个是两个数据按位进行与.或非
5^这个是按位异或,即两个数相同,为0,不同为1.
6<<>>此二个是左移和右移符号.
EG:
1<<(x),即是将0x01左移x位,低位补0.右移也是同理.
注:
BIT(x)=1<<(x);这个命令很常用.其中这个函数的说明在AVRdef.h这个头文件中.
IO学习
AVR单片机的IO口具有很强的驱动能力,可以达到20mA以上,可以直接驱动LED,数码管,和小型的继电器.
每个IO口都有三个8位寄存器来控制其状态和行为.
DDRxn用来控制输入还是输出.1为输出,0为输入.
PORTxn用来控制是否带有上拉电阻.1为有上拉电阻,0为没有上拉电阻.
PINxn此寄存器不能进行写的功能,只能读,为当前IO口的高低电平.
控制输出为高低电平很简单
1将要操作的IO口设置成输出状态,以A端口为类.若只让A端口的第2个(从0开始计数)IO输出为高电平,进行以下操作:
DDRA=DDRA|BIT
(2);
2将要输出为高电平的IO口设置成为有上拉电阻.即
PORTA=PORTA|BIT
(2);
经过些两步的程序,A端口的第二个IO口输出为高电平,而其它的不变.
完成C程序
#include
#include
Voidmain()
{
DDRA=DDRA|BIT
(2);
PORTA=PORTA|BIT
(2);
}
注意,如果想让A商品一次输出如0X55,则如下进行:
DDRA=0XFF;//全部设置成为输出
PORTA=0x55;//这样之后,PORTA就会输出0X55;
也就是这样一个道理,当一个IO被设置成为输出状态时,如果有上拉电阻,就会输出高电平,没有上拉电阻,就会输出低电平.
数据传输协议
1SPI协议同步串行
SCK串行时钟
MISO主机输入,从机输出
MOSI主机输出,从机输入
SSSPI从机选择引角
2JTAG
TDI测试数据输入
TDO测试数据输出
TMS测试模式选择
TCK测试时钟
3两线串行TWII2C
SDA两线串行数据输入输出线
SCL两线串行时钟
4UART
TXD数据发送
RXD数据接收
定时/计数器TC学习
ATmage128单片机有4个定时计数器,其中有两个具有预分频和比较功能的8位TC,还有两个具有预分频,比较,和捕捉功能的16位定时器,其中TC0还可以外接32768HZ以下的时钟,以实现RTC实时计数.
TC0相关的寄存器8位
1TCCR0TC0控制寄存器
2TCNT0TC0计数寄存器
3OCR0输出比较寄存器
4TIMSKTC中断屏蔽寄存器(所有TC共用)
5TIFRTC中断标志寄存器(与TIMSK对应,也是所有TC共用)
TC2相关的寄存器8位
1TCCR2TC2控制寄存器
2TCNT2TC2计数寄存器
3OCR2输出比较寄存器
4TIMSKTC中断屏蔽害存器
5TIFRTC中断标志寄存器
TC1相关寄存器,16位
1TCCR1A
2TCCR1B
3TCCR1C此三个8位的寄存器共同组成TC1的控制寄存器
4TCNT1H
5TCNT1L此两个8位寄存器共同组成TC1的计数寄存器
6OCR1AH
7OCR1AL输出比较器A16位的啊
8OCR1BH
9OCR1BL输出比较器B16位
10OCR1CH
11OCR1CL输出比较器C16位
12ICR1H
13ICR1L输入捕捉寄存器16位
14TIMSKTC中断屏蔽寄存器8位
15ETIMSKTC扩展中断屏蔽寄存器8位
16TIFRTC中断标志寄存器
17ETIFRTC扩展中断标志寄存
TC3和TC1有相同的定时器
以上的寄存器分为5类TCCRTCNTOCRTIMSKTIFR
其中,TCCR是用来控制寄存器的工作状态
TCNT是用来计数用的
OCR是用来和TCNT相比较,用来产生波型和中断的
TIMSK是用来屏蔽和开启TC中断的
TIFR是用来记录TC中断状态的
下面主要介绍TC1的TCCR,因为它的功能比较全,其它三个TC的TCCR与此类似.
1TC控制寄存器TCCRNx用来定义TC的工作模式
76543210
FOC0
WGM00
COM01
COM00
WGM01
CS02
CS01
CS00
2TC计数寄存器TCNTnx用来计数
注意,AVR是8位单片机,其计数寄存器都是8位的,要是有16位的,则分成TCNTnh,TCNTnl.
3TC中断屏蔽寄存器TIMSK,注意,这个寄存器,是多个TC共用的,用来用软件屏蔽和开启TC中断.
4输出比较寄存器OCR08位
输出比较寄存器是一个8位的数值,不间断的与TCNT0进行比较,当数据匹配时,可以产生输出比较中断
5TIFRTC中断标志寄存器
76543210
OCF2
TOV2
ICF1
OCF1A
OCF1B
TOIE1
OCIE0
TOIE0
普通模式
1.通过TCNTnx的低三位来选择TC工作的时钟,
CS02
CS01
CS00
说明
0
0
0
无时钟,TC不工作
0
0
1
CLK没有分频
0
1
0
CLK/8
0
1
1
CLK/32
1
0
0
CLK/64
1
0
1
CLK/128
1
1
0
CLK/256
1
1
1
CLK/1024
2.给TCNTnx赋值,这里要注意一个问题,若定时计数器是16位的,刚TCNTnx会有两个8位的寄存器组成,TCNTnh,TCNTnl,赋值时要注意一个问题,要先高8位,再赋低8位,这个顺序不能乱.
3.能过TIMSK打开TC中断相应位
76543210
OCIE2
TOIE2
TICIE1
OCIE1A
OCIE1B
TOIE1
OCIE0
TOIE0
其中,TOIEn是溢出中断
OCIEnx是输出比较中断
4中断函数的注册
#programinterrupt_hander函数名:
中断向量号//为函数的注册
函数为void函数名()
{
}
经过以上可得出,用TC时,有四个步骤,
1通过TCCRn来选择TC的工作模式
2给TCNTn赋值
3在TIMSK中打开相应中断
4注册的描述中断函数
要想中断服务函数可以正常使用别忘记一个前提,打开总中断
外部中断学习
ATmega128有8个外部中断INT0—INT7
相关的控制器
1EICRA外部中断控制寄存器A
76543210
ISC31
ISC30
ISC21
ISC20
ISC11
ISC10
ISC01
ISC00
每一组如ISC31,ISC30来控制相应外部中断的敏感电平
ISCn1
ISCn0
说明
0
0
NITn为低电平时产生中断请求
1
0
NITn的下降沿产生异步中断请求
0
1
保留
1
1
INTn的上升沿产生异步中断请求
2EICRB外部中断控制寄存器B其作用和用法和EICRA相同
3EIMSK外部中断屏蔽寄存器
76543210
INT7
INT6
INT5
INT4
INT3
INT2
INT1
INT0
4EIFR外部中断标志寄存器
当要用到外部中断的时候,有以下几个步骤,
1先打开总中断
2外部中断的引角要配置成输入模式,但中断的外部引角配置为输出时,只要电平发生了合适的变化,中断也会触发,所以利用这个特点,可以用软件来产生外部中断.
3能过EICRA或EICRB来定义敏感电平.
4EICRA和EICRB来打开外部中断位
5中断函数的注册和描述
#programinterrupt_handle函数名:
中断向量号
Void函数名()
{
}
USART通用同/异步串行口
特点 1 全双工操作(独立的串行接收和发送寄存器)
2 异步或同步操作
3 主机或从机提供时钟的同步操作(一般不用同步操作)
4 高精度的波特率发生器
5 支持5,6,7,8,9个数据位和1个或2个的停止位
6 硬件支持的奇偶校验操作
7 3个独立的中断:
发送结束中断,发送数据寄存器空中断,以及接收结束中断
USART寄存器说明
1 USARTn数据寄存器,也可以叫UDRn
USART发送数据缓冲寄存器和USART接收数据缓冲寄存器共享一个IO地址,称为UDR,将数据写入UDR时,其实是写入发送数据寄存器,读UDR时,返回的是接收数据缓冲寄存器.
2 USART控制和状态寄存器A USCRnA
76543210
RXCn
TXCn
UDREn
FEn
DORn
UPEn
U2Xn
MPCMn
Bit7RXCn:
USART接收结束
接收缓冲器中有未读出的数据时RXCn置位,否则清0.
接收器禁止时,接收缓冲器被刷新,导致RXCn清0,RXCn可以用来产生接收结束中断.
Bit6TXCn:
USART发送结束
发送缓冲器中的数据被送出,且当发送缓冲器为空时,TXCn置位.执行发送结束中断时TXCn标志自动清0.也可以通过写1进行清除操作.TXCn标志可用来产生发送中断.
Bit5UDREn:
USART数据寄存器空
UDREn标志发送缓冲器UDRn是否准备好接收新的数据.为1时,说明已准备好进行数据接收.UDREn标志可用来产生数据寄存器空中断,复位时UDREn置位,表明发送器已经就绪.
Bit2 UPEn:
奇偶校验错误
奇偶校验使能后,并发生奇偶校验错误,则置位.
2 USARTn控制和状态寄存器B UCSRnB
76543210
RXCIEn
TXCIEn
UDRIEn
RXENn
TXENn
UCSZn2
RXB8n
TXB8n
BIT7RXCIEn接收结束中断使能
当TXCIEn全局中断标志位SREG置位,UCSBnA寄存器的RXCn这1时,可能产生USARTn接收结束中断.
Bit6TXCIEn发送结束中断使能.
BIT5 UDRIEn USART数据寄存器空中断使能.
BIT4 RXENn 接收使能.
置位后,将USARTn接收器,RXDn引脚的通用端口功能被USARTn功能所取代.禁止接收器将刷新接收缓冲器,并使Fen,DORn及UPEn标志无效.
BIT3 TXENn发送使能
置位后将启动发送器USARTn.
3 USART 控制和状态寄存器C UCSRnC
76543210
--
UMSELn
UPMn1
UPMn0
USBSn
UCSZn1
UCSZn0
UCPOLn
Bit6UMSELn:
USART模式选择
UMSELn
模式
0
异步操作
1
同步操作
Bit5:
4UPMn1:
0:
奇偶校验模式
这两位设置奇偶校验的模式并使能奇偶校验.如果使能了奇偶.那么在发送数据时,发适器都会自动产生并发送奇偶校验位.对每一个接收到的,接收器,都会产生一奇偶值,并与UPMn0所设置的值进行比较,如果不匹配,以就将UCSRnA中的UPEn置位.
UPMn1
UPMn0
奇偶模式
0
0
禁止
0
1
保留
1
0
偶校验
1
1
奇校验
Bit3USBSn:
停止位选择.
能过这一位可以选择设置停止位的倍数.但是接收器是忽略这一位的设置的.
USBSn
停止位倍数/bit
0
1
1
2
Bit2:
1---UXCZn1:
0
UCSZn1:
0与寄存器UCSRnB的RCSZn2结合在一起可以设置数据帧包含的数据位数.
UCSZn2
UCSZn1
UCSZn0
字符长度/bit
0
0
0
5
0
0
1
6
0
1
0
7
0
1
1
8
1
0
0
――――
1
0
1
――――
1
1
0
――――
1
1
1
9
BIT0---UCPOLn:
时钟极性
这一位仅用于同步工作模式.使用异步模式时,将这一位清0.
UCPOLn
发送数据的改变
接收数据的采样
0
XCKn上升沿
XCKn下降沿
1
XCKn下降沿
XCKn上升沿
5 USART 波特率寄存器(UBRRnLUBRRnH)
用于存储不同外部晶振下的波特率设置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR 学习