AVR学习笔记.docx
- 文档编号:25654091
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:16
- 大小:157.42KB
AVR学习笔记.docx
《AVR学习笔记.docx》由会员分享,可在线阅读,更多相关《AVR学习笔记.docx(16页珍藏版)》请在冰豆网上搜索。
AVR学习笔记
ATmega16
中断表
向量号
程序地址
中断源
描述
1
0x00
RESET
外部引脚电平引发的复位,上电复位,掉电检测复位,看门狗复位,以及JTAGAVR复位
2
0x02
INT0
外部中断请求0
3
0x04
INT1
外部中断请求1
4
0x06
TIMER2COMP
定时器/计数器2比较匹配
5
0x08
TIMER2OVF
定时器/计数器2溢出
6
0x0a
TIMER1CAPT
定时器/计数器1事件捕捉
7
0x0c
TIMER1COMPA
定时器/计数器1比较匹配A
8
0x0e
TIMER1COMPB
定时器/计数器1比较匹配B
9
0x10
TIMER1OVF
定时器/计数器1溢出
10
0x12
TIMER0OVF
定时器/计数器0溢出
11
0x14
SPI,STC
SPI串行传输结束
12
0x16
USART,RXC
USART,Rx结束
13
0x18
USART,UDRE
USART数据寄存器空
14
0x1a
USART,TXC
USART,Tx结束
15
0x1c
ADC
ADC转换结束
16
0x1e
EE_RDY
EEPROM就绪
17
0x20
ANA_COMP
模拟比较器
18
0x22
TWI
两线串行接口
19
0x24
INT2
外部中断请求2
第一节课
Avr单片机的每个引脚有三个寄存器来控制:
DDRnx(输入输出控制寄存器1输出,0输入)
PORTnx(引脚输出电平控制)
PINnx(输入寄存器)
第二节课
AVR单片机的AD转换
涉及寄存器:
ADMUXsbit[7;6]参考电压选择,sbit[5]AD转换数据对齐方式选择,sbit[4:
0]通道与增益选择;
ADCSRAsbit[7]AD使能,sbit[6]AD开始转换,sbit[5]自动触发使能,sbit[4]AD中断使能,sbit[3:
0]分频设置;
SFIOR(触发源的选择)sbit[7:
5](ADTS)选择触发源,
ADCL,ADCH数据寄存器;
初始化步骤:
1:
设置通道的IO口为输入(高阻);
2:
设置与AD有关的寄存器;
3:
开总中断,SREG=BIT(7);
4:
写中断函数
(中断标号是15)
第三节课
AVR有三个定时计数器,T/C0,T/C1,T/C2;
T/C0,T/C2是两个8BIT的计数器;
T/C1定时计数器,普通模式
时机寄存器:
TCCR1B:
2:
0时钟选择
TCNT1L,TCNTH:
定时数据
TIMSK:
TOIE中断使能位
使用方法
1,选择时钟源,TCCR1B;
2,设计初值,TCNT1L,TCNT1H;
3,设置中断使能位;TIMSK{2},SREG{7}
4,选中断号,写中断函数
5,(中断号9)
CTC模式
如果输出波形,则设IO位输出
设置波形模式和时钟源TCCR1B
设置输出模式TCCR1A
根据需要设置上限OCR1ATCCR1A
设置输出口
频率计算:
控制寄存器ATCCR1A
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
COM1A1
COM1A0
COM1B1
COM1B0
FOC1A
FOC1B
WGM11
WGM10
COM1A1:
0:
通道A的比较输出模式COM1B1:
0:
通道B的比较输出模式
COM1A1:
0与COM1B1:
0分别控制OC1A与OC1B状态。
如果COM1A1:
0(COM1B1:
0)的一位或两位被写入"1”,OC1A(OC1B)输出功能将取代I/O端口功能。
此时OC1A(OC1B)相应的输出引脚数据方向控制必须置位以使能输出驱动器。
COM1A1/COM1B1
COM1A0/COM1B0
说明
0
0
普通端口操作,非OC1A/OC1B功能
0
1
比较匹配时OC1A/OC1B电平取反
1
0
比较匹配时清零OC1A/OC1B(输出低电平)
1
1
比较匹配时置位OC1A/OC1B(输出高电平)
定时器模式
模式
WGM13
WGM12
WGM11
WGM10
定时器/计数器工作模式
计数上限值TOP
OCR1x更新时刻
TOV1置位时TOV1置位时刻
0
0
0
0
0
普通模式
0xFFFF
立即更新
MAX
1
0
0
0
1
8位相位修正PWM
0x00FF
TOP
BOTTOM
2
0
0
1
0
9位相位修正PWM
0x01FF
TOP
BOTTOM
3
0
0
1
1
10位相位修正PWM
0x03FF
TOP
BOTTOM
4
0
1
0
0
CTC
OCR1A
立即更新MAX
4
5
0
1
0
1
8位快速PWM
0x00FF
TOP
TOP
6
0
1
1
0
9位快速PWM
0x01FF
TOP
TOP
7
0
1
1
1
10位快速PWM
0x03FF
TOP
TOP
8
1
0
0
0
相位与频率修
ICR1
BOTTOM
BOTTOM
正PWM
9
1
0
0
1
相位与频率修正PWM
OCR1A
BOTTOM
BOTTOM
10
1
0
1
0
相位修正PWM
ICR1
TOP
BOTTOM
11
1
0
1
1
相位修正PWM
OCR1A
TOP
BOTTOM
12
1
1
0
0
CTC
ICR1
立即更新MAX
13
1
1
0
1
保留–
–
–
14
1
1
1
0
快速PWM
ICR1
TOP
TOP
15
1
1
1
1
快速PWM
OCR1A
TOP
TOP
(2)T/C1控制寄存器B(TCCR1B)
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
ICNC1
ICES1
–
WGM13
WGM12
CS12
CS11
CS10
ICNC1:
{icnc缩写:
inputcatchnoisecontrol}入捕捉噪声抑制器
置位ICNC1将使能输入捕捉噪声抑制功能。
此时外部引脚ICP1的输入被滤波。
其作用是从ICP1引脚连续进行4次采样。
如果4个采样值都相等,那么信号送入边沿检测器。
因此使能该功能使得输入捕捉被延迟了4个时钟周期。
ICES1:
{inputcatch(strike)edgeselect}输入捕捉触发沿选择
该位选择使用ICP1上的哪个边沿触发捕获事件。
ICES为"0”选择的是下降沿触发输入捕捉;ICES1为"1”选择的是逻辑电平的上升沿触发输入捕捉。
按照ICES1的设置捕获到一个事件后,计数器的数值被复制到ICR1寄存器。
捕获事件还会置为ICF1。
如果此时中断使能,输入捕捉事件即被触发。
当ICR1用作TOP值(见TCCR1A与TCCR1B寄存器中WGM13:
0位的描述)时,ICP1与输入捕捉功能脱开,从而输入捕捉功能被禁用。
Bit5–保留位
该位保留。
为保证与将来器件的兼容性,写TCCR1B时,该位必须写入"0”。
WGM13:
2:
波形发生模式
见TCCR1A寄存器中的描述。
CS12:
0:
时钟选择
这3位用于选择T/C的时钟源,
时钟选择位描述
CS02
CS01
CS00
说明
0
0
0
无时钟源
0
0
1
clkI/O/1
0
1
0
clkI/O/8
0
1
1
clkI/O/64
1
0
0
clkI/O/256
1
0
1
clkI/O/1024
1
1
0
外部T1
1
1
1
外部T1
选择使用外部时钟源后,即使T1引脚被定义为输出,其1引脚上的逻辑信号电平变化仍然会驱动T/C1计数,这个特性允许用户通过软件来控制计数。
(3)快速PWM
使用方法:
1,设置端口输出
2,设置PWM模式及时钟模式(操作TCCR1A和TCCR1B)
3,设置PWM频率(操作OCR1A)
4,设置占空比(操作OCR1B)
第四节课串口
有关寄存器:
UCSRA(状态控制寄存器)、USRB(控制中断寄存器)、USRC(工作模式和数据结构)、UBBRH,UBBRL(设置波特率)、UDR(数据缓冲器);
初始化方法:
1、设置工作模式(UCRC);
2、波特率设置(UBBRL,UBBRH);
3、使能相关中断;
4、选择中断号12
波特率计算:
USART控制和状态寄存器A(UCSRA)
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
RXC
TXC
UDRE
FE
DOR
PE
U2X
MPCM
RXC:
USART接收结束
接收缓冲器中有未读出的数据时RXC置位,否则清零。
接收器禁止时,接收缓冲器被刷新,导致RXC清零。
RXC标志可用来产生接收结束中断(见对RXCIE位的描述)。
TXC:
USART发送结束
发送移位缓冲器中的数据被送出,且当发送缓冲器(UDR)为空时TXC置位。
执行发送结束中断时TXC标志自动清零,也可以通过写1进行清除操作。
TXC标志可用来产生发送结束中断(见对TXCIE位的描述)。
UDRE:
USART数据寄存器空UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。
UDRE为1说明缓冲器为空,已准备好进行数据接收。
UDRE标志可用来产生数据寄存器空中断(见对UDRIE位的描述)。
复位后UDRE置位,表明发送器已经就绪。
FE:
帧错误如果接收缓冲器接收到的下一个字符有帧错误,即接收缓冲器中的下一个字符的第一个停止位为0,那么FE置位。
这一位一直有效直到接收缓冲器(UDR)被读取。
当接收到的停止位为1时,FE标志为0。
对UCSRA进行写入时,这一位要写0。
DOR:
数据溢出
数据溢出时DOR置位。
当接收缓冲器满(包含了两个数据),接收移位寄存器又有数据,若此时检测到一个新的起始位,数据溢出就产生了。
这一位一直有效直到接收缓冲器(UDR)被读取。
对UCSRA进行写入时,这一位要写0。
PE:
奇偶校验错误
当奇偶校验使能(UPM1=1),且接收缓冲器中所接收到的下一个字符有奇偶校验错误时UPE置位。
这一位一直有效直到接收缓冲器(UDR)被读取。
对UCSRA进行写入时,这一位要写0。
U2X:
倍速发送这一位仅对异步操作有影响。
使用同步操作时将此位清零。
此位置1可将波特率分频因子从16降到8,从而有效的将异步通信模式的传输速率加倍。
MPCM:
多处理器通信模式
设置此位将启动多处理器通信模式。
MPCM置位后,USART接收器接收到的那些不包含地址信息的输入帧都将被忽略。
发送器不受MPCM设置的影响。
3.USART控制和状态寄存器B(UCSRB)
10011000
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
RXCIE
TXCIE
UDRIE
RXEN
TXEN
UCSZ2
RXB8
TXB8
RXCIE:
接收结束中断使能置位后使能RXC中断。
当RXCIE为1,全局中断标志位SREG置位,UCSRA寄存器的RXC亦为1时可以产生USART接收结束中断。
TXCIE:
发送结束中断使能置位后使能TXC中断。
当TXCIE为1,全局中断标志位SREG置位,UCSRA寄存器的TXC亦为1时可以产生USART发送结束中断。
UDRIE:
USART数据寄存器空中断使能
置位后使能UDRE中断。
当UDRIE为1,全局中断标志位SREG置位,UCSRA寄存器的UDRE亦为1时可以产生USART数据寄存器空中断。
RXEN:
接收使能
置位后将启动USART接收器。
RxD引脚的通用端口功能被USART功能所取代。
禁止接收器将刷新接收缓冲器,并使FE、DOR及PE标志无效。
TXEN:
发送使能置位后将启动将启动USART发送器。
TxD引脚的通用端口功能被USART功能所取代。
TXEN清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。
发送器禁止后,TxD引脚恢复其通用I/O功能。
UCSZ2:
字符长度UCSZ2与UCSRC寄存器的UCSZ1:
0结合在一起可以设置数据帧所包含的数据位数(字符长度)。
RXB8:
接收数据位8
对9位串行帧进行操作时,RXB8是第9个数据位。
读取UDR包含的低位数据之前首先要读取RXB8。
TXB8:
发送数据位8对9位串行帧进行操作时,TXB8是第9个数据位。
写UDR之前首先要对它进行写操作。
4.USART控制和状态寄存器C(UCSRC)
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
URSEL
UMSEL
UPM1
UPM0
USBS
UCSZ1
UCSZ0
UCPOL
UCSRC寄存器与UBRRH寄存器共用相同的I/O地址。
对该寄存器的访问。
URSEL:
寄存器选择
通过该位选择访问UCSRC寄存器或UBRRH寄存器。
当读UCSRC时,该位为1;当写UCSRC时,URSEL为1。
UMSEL:
USART模式选择通过这一位来选择同步或异步工作模式。
UMSEL设置
UMSEL
模式
0
异步操作
1
同步操作
UPM1:
0:
奇偶校验模式这两位设置奇偶校验的模式并使能奇偶校验。
如果使能了奇偶校验,那么在发送数据,发送器都会自动产生并发送奇偶校验位。
对每一个接收到的数据,接收器都会产生一奇偶值,并与UPM0所设置的值进行比较。
如果不匹配,那么就将UCSRA中
的PE置位。
UPM设置
UPM1
UPM0
奇偶模式
0
0
禁止
0
1
保留
1
0
偶校验
1
1
奇校验
USBS:
停止位选择通过这一位可以设置停止位的位数。
接收器忽略这一位的设置。
USBS设置
USBS
停止位位数
0
1
1
2
UCSZ1:
0:
字符长度
UCSZ1:
0与UCSRB寄存器的UCSZ2结合在一起可以设置数据帧包含的数据位数(字符长度)。
UCSZ设置
UCSZ2
UCSZ1
UCSZ0
字符长度
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
UCPOL:
时钟极性
这一位仅用于同步工作模式。
使用异步模式时,将这一位清零。
UCPOL设置了输出数据的改变和输入数据采样,以及同步时钟XCK之间的关系。
UCPOL设置
UCPOL
发送数据的改变(TxD引脚的输出)
接收数据的采样(RxD引脚的输入)
0
XCK上升沿XCK
下降沿
1
XCK下降沿XCK
上升沿
5.USART波特率寄存器(UBRRL和UBRRH)
bit15
bit14
bit13
bit12
bit11
bit10
bit9
bit8
URSEL
–
–
–
UBRR[11:
8]
UBRR[7:
0]
UCSRC寄存器与UBRRH寄存器共用相同的I/O地址。
对该寄存器的访问。
URSEL:
寄存器选择
通过该位选择访问UCSRC寄存器或UBRRH寄存器。
当读UBRRH时,该位为0;当写UBRRH时,URSEL为0。
Bit14:
12–保留位这些位是为以后的使用而保留的。
为了与以后的器件兼容,写UBRRH时将这些位清零。
UBRR11:
0:
USART波特率寄存器这个12位的寄存器包含了USART的波特率信息。
其中UBRRH包含了USART波特率高4位,UBRRL包含了低8位。
波特率的改变将造成正在进行的数据传输受到破坏。
写UBRRL将立即更新波特率分频器。
DS18B20温度传感器
读序列号:
向总线发33H可以读出64位的序列号
搜索ROM:
发F0H,,用于确定总线上传感器的数量和序列号
跳过ROM:
发CCH用于对所有的期间操作
报警搜索:
发ECH
启动转换:
发44H转换完成回复1
读暂存器的内容:
BEH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)