avr学习重点笔记专业资料_第1页
avr学习重点笔记专业资料_第2页
avr学习重点笔记专业资料_第3页
avr学习重点笔记专业资料_第4页
avr学习重点笔记专业资料_第5页
已阅读5页,还剩81页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MCU控制寄存器—MCUCRBit1–IVSEL:中断向量选取IVSEL为"0“时,中断向量位于Flash存储器起始地址;IVSEL为"1“时,中断向量转移到Boot区起始地址。实际Boot区起始地址由熔丝位BOOTSZ拟定。为了防止无意识地变化中断向量表,修改IVSEL时需要遵循如下过程:1.置位中断向量修改使能位IVCE2.在紧接4个时钟周期里将需要数据写入IVSEL,同步对IVCE写”0”执行上述序列时中断自动被禁止。其实,在置位IVCE时中断就被禁止了,并始终保持到写IVSEL操作之后下一条语句。如果没有IVSEL写操作,则中断在置位IVCE之后4个时钟周期保持禁止。需要注意是,虽然中断被自动禁止,但状态寄存器位I并不会因而而受到影响。Note:若中断向量位于BootLoader区,且Boot锁定位BLB02被编程,则执行应用区程序时中断被禁止;若中断向量位于应用区,且Boot锁定位BLB12被编程,则执行BootLoader区程序时中断被禁止。关于Boot锁定位细节请参见P241”BootLoader支持RWW自编程,ATmega88与ATmega168”。该位在ATmega48中无效。•位0–IVCE:中断向量修改使能变化IVSEL时IVCE必要置位。在IVCE写入4个时钟周期或IVSEL写操作之后,IVC被硬件清零。如前面所述,置位IVCE将禁止中断。代码如下:voidMove_interrupts(void){/*使能中断向量修改*/MCUCR=(1<<IVCE);/*将中断向量转移到boot区*/MCUCR=(1<<IVSEL);}•位7–I:全局中断使能Sei();全局中断使能,cli();对I清零。•位6–T:位拷贝存储位拷贝指令BLD和BST运用T作为目或源地址。BST把寄存器某一位拷贝到T,而BLD把T拷贝到寄存器某一位。•位5–H:半进位标志半进位标志H表达算术操作发生了半进位。此标志对于BCD运算非常有用。详见“指令集”阐明。•位4–S:符号位,S=N⊕VS为负数标志N与2补码溢出标志V异或。详见指令集阐明。•位3–V:2补码溢出标志支持2补码运算。详见指令集阐明。•位2–N:负数标志表白算术或逻辑操作成果为负。详见指令集阐明。•位1–Z:零标志表白算术或逻辑操作成果为零。详见指令集阐明。•位0–C:进位标志表白算术或逻辑操作发生了进位。详见指令集阐明。_SEI();/*置位全局中断使能标志*/_SLEEP();/*进入休眠模式,等待中断发生*//*注意:在执行任何被挂起中断之前MCU将一方面进入休眠模式*/振荡器标定寄存器—OSCCAL休眠模式控制寄存器—SMCR•位0–SE:休眠使能Smcr|=(1《se);•位3–WDRF:看门狗复位标志看门狗复位发生时置位。上电复位将使其清零,也可以通过写”0”来清除。•位2–BORF:掉电检测复位标志掉电检测复位发生时置位。上电复位将使其清零,也可以通过写”0”来清除。•位1–EXTRF:外部复位标志外部复位发生时置位。上电复位将使其清零,也可以通过写”0”来清除。•位0–PORF:上电复位标志上电复位发生时置位。只能通过写”0”来清除。为了使用这些复位标志来辨认复位条件,顾客应当尽早读取MCUSR数据,然后将其复位。如果在其她复位发生之前将此寄存器复位,则后续复位源可以通过检查复位标志来识别。看门狗定期器控制寄存器—WDTCSR•位7–WDIF:看门狗超时中断标志当看门狗定期器超时且定期器作为中断使用时,该位置位。执行相应中断解决程序时WDIF由硬件清零。也可通过对标志位写"1”对WDIF清零。当SREG寄存器中I位与WDIE也置位时,MCU执行看门狗超时中断。•位6–WDIE:看门狗超时中断使能WDIE置"1”时WDE被清零,状态寄存器中I位置位,看门狗超时中断使能。当看门狗定时器浮现超时时执行相应中断程序。如果WDE置位,当超时浮现时,WDIE由硬件自动清零。这对使用中断时保证看门狗复位安全性非常有效。在WDIE位被清零后,下一种超时将引起系统复位。为避免看门狗复位,在每次中断后必要对WDIE置位。•Bit4–WDCE:看门狗修改使能清零WDE时必要置位WDCE,否则不能禁止看门狗。一旦置位,硬件将在紧接4个时钟周期之后将其清零。请参照关于WDE阐明来禁止看门狗。修改预分频器也必要置位WDCE,如P47“变化看门狗定期器配备时间序列”所示。•位3–WDE:使能看门狗WDE为"1“时,看门狗使能,否则看门狗将被禁止。只有在WDCE为"1“时WDE才干清零。如下为关闭看门狗环节:1.在同一种指令内对WDCE和WDE写"1“,虽然WDE已经为"1“。2.在紧接4个时钟周期之内对WDE写"0”。这会禁用看门狗。工作于安全级别2时,虽然使用了上述算法,也无法禁止看门狗定期器。参见P47“改变看门狗定期器配备时间序列”所示。工作于安全级别1时,WDE被MCUSRWDRF功能所替代,请参见P41”MCU状态寄存器–MCUSR”中关于WDRF阐明。这意味着当WDRF置位时WDE同步置位。为清零WDE,在使用上述过程禁用看门狗之前必要清零WDRF。这一特性保证在浮现故障时有多重复位,且在故障解决后可以安全地启动。Note:如果在应用中不需要使用看门狗定期器,则在器件初始化时应运营看门狗禁用程序。如果看门狗被意外使能,如程序跑飞或浮现BOD,器件将会复位,且在结束复位时WDRF标志位置位。这将自动激活看门狗,引起新看门狗复位。为避免浮现这种状况,在初始化过程中应用程序应将WDRF标志位与WDE控制位清零。voidWDT_off(void){/*MCUSR中WDRF清零*/MCUSR=0x00/*置位WDCE与WDE*/WDTCSR=(1<<WDCE)|(1<<WDE);/*关闭WDT*/WDTCSR=0x00;}unsignedchari;.../*定义上拉电阻和设立高电平输出*//*为端口引脚定义方向*/PORTB=(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);DDRB=(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);/*为了同步插入nop指令*/_NOP();/*读取端口引脚*/i=PINB;...•位4–PUD:禁用上拉电阻PUD置位时,虽然寄存器DDxn和PORTxn配备为使能上拉电阻({DDxn,PORTxn}=0b01),I/O端口上拉电阻也被禁止。请参见P60”配备引脚”。端口B第二功引脚配备如下:•XTAL2/TOSC2/PCINT7–端口B,位7XTAL2:芯片时钟振荡器引脚2。作为晶振或低频晶振时钟引脚。作为时钟引脚时不能作为I/O引脚。TOSC2:定期器振荡器引脚2。只有选取了内部标定RC振荡器作为系统时钟源,并且设立了寄存器ASSRAS2位以容许使用异步时钟定期器时才可使用。当ASSR寄存器AS2位置位且EXCLK位清零,从而使能了定期器/计数器2异步时钟功能时,PB7与端口引脚脱离,作为振荡放大器反向输出端。在该模式下,时钟晶体连接到该引脚,且不能作为I/O引脚。PCINT7:引脚电平变化中断源7。PB7可以作为外部中断源。如果PB7作为时钟引脚使用,DDB7、PORTB7与PINB7读返回值为0。•XTAL1/TOSC1/PCINT6–端口B,位6XTAL1:芯片时钟振荡器引脚1。可用于除内部标定RC振荡器外所有时钟源。作为时钟引脚时不能作为I/O引脚。TOSC1:定期器振荡器引脚1。只有选取了内部标定RC振荡器作为系统时钟源,并且设立了寄存器ASSRAS2位以容许使用异步时钟定期器时才可使用。当ASSR寄存器AS2位置位,从而使能了定期器/计数器2异步时钟功能时,PB6与端口引脚脱离,作为振荡放大器反向输入端。在该模式下,时钟晶体连接到该引脚,且不能作为I/O引脚。PCINT6:引脚电平变化中断源6。PB6可以作为外部中断源。如果PB6作为时钟引脚使用,DDB6、PORTB6与PINB6均读为"0”。•SCK/PCINT5–端口B,位5SCK:用于使用SPI串行总线接口。当SPI使能且为从机时,无论DDB5为什么种设立,该引脚被强置为输入。当使能SPI且为主机时,该引脚数据方向由DDB5来控制。虽然该位被SPI强制为输入,但内部上拉电阻依然由PORTB5来控制。PCINT5:引脚电平变化中断源5。PB5可以作为外部中断源。•MISO/PCINT4–端口B,位4MISO:SPI总线接口主机数据输入/从机数据输出端。在SPI使能,且工作于SPI主机模式时,无论DDB4为什么值,PB4被设立为输入;为SPI从机模式时,该引脚数据方向由DDB4控制。当该引脚被SPI强制为输入时,内部上拉电阻依然由PORTB4来控制。PCINT4:引脚电平变化中断源4。PB4可以作为外部中断源。•MOSI/OC2/PCINT3–端口B,位3MOSI:SPI总线接口主机数据输出/从机数据输入端。在SPI使能,且工作于从机模式时,无论DDB3为什么值,PB3被设立为输入;为SPI主机模式时,该引脚数据方向由DDB3控制。当该引脚被SPI强制为输入时,内部上拉电阻依然由PORTB3来控制。OC2,输出比较匹配输出。PB3引脚可作为定期器/计数器2比较匹配外部输出口。此时,PB3引脚必要设立为输出(DDB3=1)。在PWM应用中,OC2引脚还作为PWM定时器模块输出引脚。PCINT3:引脚电平变化中断源3。PB3可以作为外部中断源。•SS/OC1B/PCINT2–端口B,位2SS:从机选取输入。在SPI使能,且工作于从机模式时,无论DDB2为什么值,PB2脚被设置为输入。当PB2被外部拉低时,则SPI功能被激活。当使能SPI,且为主机模式时该引脚数据方向由DDB2控制。当该引脚被SPI强制为输入时,内部上拉电阻依然由PORTB2来控制。OC1B,输出比较匹配输出。PB2引脚可作为定期器/计数器1比较匹配B外部输出口。此时,PB2引脚必要设立为输出(DDB2=1)。在PWM应用中,OC1B引脚还作为PWM定期器模块输出引脚。PCINT2:引脚电平变化中断源2。PB2可以作为外部中断源。•OC1A/PCINT1–端口B,位1OC1A,输出比较匹配输出。PB1引脚可作为定期器/计数器1比较匹配A外部外部输出口。此时,PB1引脚必要设立为输出(DDB1=1)。在PWM应用中,OC1A引脚还作为PWM定期器模块输出引脚。PCINT1:引脚电平变化中断源1。PB1可以作为外部中断源。•ICP1/CLKO/PCINT0–端口B,位0ICP1,输入捕获引脚:PB0引脚可以作为定期器/计数器1输入捕获功能引脚。CLKO,分频之后系统时钟:分频之后系统时钟可以通过PB0引脚输出。如果CKOUT熔丝位编程,无论PORTB0与DDB0为什么值,分频之后系统时钟都将从此引脚输出。复位时时钟信号照样从此引脚输出。PCINT0,引脚电平变化中断源0:PB0可以作为外部中断源。Table35和Table36将端口B第二功能与P63Figure27重载信号关联在了一起。SPIMSTRINPUT和SPISLAVEOUTPUT构成了MISO信号,而MOSI可以分解为SPIMSTROUTPUT和SPISLAVEINPUT。端口C第二功•RESET/PCINT14–端口C,位6RESET,复位引脚:熔丝位RSTDISBL被编程时,该引脚作为普通I/O引脚使用,此时,芯片内部上电复位与BOD复位电路将作为系统复位源。当RSTDISBL熔丝位被清零时,内部复位电路将连接到该引脚,此时引脚不作为I/O使用。如果PC6工作为复位引脚,DDC6、PORTC6与PINC6读返回值为0。PCINT14:引脚电平变化中断源14。PC6可作为外部中断源。•SCL/ADC5/PCINT13–端口C,位5SCL,两线串行总线时钟线:当TWCR寄存器中TWEN位被设为"1”,使能TWI接口时,PC5引脚将与I/O端口脱离,成为TWI总线接口串行时钟线。在该模式下,有一个尖峰滤波器连接到该引脚,可以抑制输入信号中不大于50ns毛刺,同步引脚由具备上升率限制开漏驱动器驱动。PC5也可作为ADC输入通道5。注意,ADC输入通道5由数字电源供电。PCINT13:引脚电平变化中断源13。PC5可作为外部中断源。•SDA/ADC4/PCINT12–端口C,位4SDA,两线串行总线数据线:当TWCR寄存器中TWEN位被设为1,使能TWI接口时,PC5引脚将与I/O端口脱离,成为TWI总线接口串行数据线。在该模式下,有一种尖峰滤波器连接到该引脚,可以抑制输入信号中不大于50ns毛刺,同步引脚将由具备上升率限制开漏驱动器驱动。PC4也可作为ADC输入通道4。注意,ADC输入通道4由数字电源供电。PCINT12:引脚电平变化中断源12。PC4可作为外部中断源。•ADC3/PCINT11–端口C,位3PC3也可作为ADC输入通道3。注意,ADC输入通道3由模仿电源供电。PCINT11:引脚电平变化中断源11。PC3可作为外部中断源。•ADC2/PCINT10–端口C,位2PC2也可作为ADC输入通道2。注意,ADC输入通道2由模仿电源供电。PCINT10:引脚电平变化中断源10。PC2可作为外部中断源。•ADC1/PCINT9–端口C,位1PC1也可作为ADC输入通道1。注意,ADC输入通道1由模仿电源供电。PCINT9:引脚电平变化中断源9。PC1可作为外部中断源。•ADC0/PCINT8–端口C,位0PC0也可作为ADC输入通道0。注意,ADC输入通道0由模仿电源供电。PCINT8:引脚电平变化中断源8。PC0可作为外部中断源。端口D第二功端口引脚第二功能PD7AIN1(模仿比较器负输入)PCINT23(引脚电平变化中断23)PD6AIN0(模仿比较器负输入)OC0A(定期器/计数器0输出比较匹配A输出)PCINT22(引脚电平变化中断22)PD5T1(定期器/计数器1外部计数器输入)OC0B(定期器/计数器0输出比较匹配B输出)PCINT21(引脚电平变化中断21)PD4XCK(USART外部时钟输入/输出)T0(定期器/计数器0外部计数器输入)PCINT20(引脚电平变化中断20)PD3INT1(外部中断1输入)OC2B(定期器/计数器2输出比较匹配B输出)PCINT19(引脚电平变化中断19)•AIN1/OC2B/PCINT23–端口D,位7AIN1,模仿比较器负输入:将PD7设立为输入,且关闭内部上拉电阻,以避免数字端口功能影响模仿比较器性能。PCINT23:引脚电平变化中断源23。PD7可作为外部中断源。•AIN0/OC0A/PCINT22–端口D,位6AIN0,模仿比较器正输入:将PD6设立为输入,且关闭内部上拉电阻,以避免数字端口功能影响模仿比较器性能。OC0A,输出比较匹配输出:PD6引脚可作为定期器/计数器0比较匹配A外部输出口。此时,PD6引脚必要设立为输出(DDD6=1)。在PWM应用中,OC0A引脚还作为PWM定期器模块输出引脚。PCINT22:引脚电平变化中断源22。PD6可作为外部中断源。•T1/OC0B/PCINT21–端口D,位5T1,定期器/计数器1计数器源。OC0B,输出比较匹配输出:PD5引脚可作为定期器/计数器0比较匹配B外部输出口。此时,PD5引脚必要设立为输出(DDD5=1)。在PWM应用中,OC0B引脚还作为PWM定期器模块输出引脚。PCINT21:引脚电平变化中断源21。PD5可作为外部中断源。•XCK/T0/PCINT20–端口D,位4XCK,USART外部时钟。T0,定期器/计数器0计数器源。PCINT20:引脚电平变化中断源20。PD4可作为外部中断源。•INT1/OC2B/PCINT19–端口D,位3INT1,外部中断源1:PD3引脚可作为外部中断源。OC2B,输出比较匹配输出:PD3引脚可作为定期器/计数器0比较匹配B外部输出口。此时,PD3引脚必要设立为输出(DDD3=1)。在PWM应用中,OC2B引脚还作为PWM定期器模块输出引脚。PCINT19:引脚电平变化中断源19。PD3可作为外部中断源。•INT0/PCINT18–端口D,位2INT0,外部中断源0:PD2引脚可作为外部中断源。PCINT18:引脚电平变化中断源18。PD2可作为外部中断源。•TXD/PCINT17–端口D,位1TXD,传播数据(USART数据输出引脚):当USART传播器使能,无论DDD1为什么值,该引脚被配备为输出口。PCINT17:引脚电平变化中断源17。PD1可作为外部中断源。•RXD/PCINT16–端口D,位0RXD,接受数据(USART数据输入引脚):当USART接受器使能,无论DDD0为什么值,该引脚被配备为输入口,此时引脚内部上拉功能依然由PORTD0位控制。PCINT16:引脚电平变化中断源16。PD0可作为外部中断源。Table41和Table42将端口D第二功能与P63Figure27重载信号关联在了一起。外部中断控制寄存器A—EICRA•位3,2–ISC11,ISC10:中断触发方式控制1位1与位0外部中断1由引脚INT1激发,如果SREG寄存器I标志位和相应中断屏蔽位置位话。触发方式如Table43所示。在检测边沿前MCU一方面采样INT1引脚上电平。如果选取了边沿触发方式或电平变化触发方式,那么持续时间不不大于一种时钟周期脉冲将触发中断,过短脉冲则不能保证触发中断。如果选取低电平触发方式,那么低电平必要保持到当前指令执行完毕。外部中断屏蔽寄存器—EIMSK•位1–INT1:外部中断祈求1使能当INT1为”1”,并且状态寄存器SREGI标志置位,相应外部引脚中断就使能了。外部中断控制寄存器–EICRA中断触发方式控制位(ISC11与ISC10)决定中断是由INT1上升沿、下降沿,还是电平触发。使能之后,虽然引脚INT1被配备为输出,只要引脚电平发生了相应变化,中断就会产生。相应中断向量为INT1中断向量。•位0–INT0:外部中断祈求0使能当INT0为”1”,并且状态寄存器SREGI标志置位,相应外部引脚中断就使能了。外部中断控制寄存器–EICRA中断触发方式控制位(ISC11与ISC10)决定中断是由INT0上升沿、下降沿,还是电平触发。使能之后,虽然引脚INT0被配备为输出,只要引脚电平发生了相应变化,中断就会产生。相应中断向量为INT0中断向量。外部中断标志寄存器—EIFR•位1–INTF1:外部中断标志1INT1引脚电平发生跳变时触发中断祈求,并置位相应中断标志INTF1。如果SREG位I以及EIMSK寄存器相应中断使能位INT1为”1”,MCU即跳转到相应中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。若INT1配备为电平触发,则INTF1始终为零。•位0–INTF0:外部中断标志0INT0引脚电平发生跳变时触发中断祈求,并置位相应中断标志INTF0。如果SREG位I以及EIMSK寄存器相应中断使能位INT0为”1”,MCU即跳转到相应中断向量。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。若INT0配备为电平触发,则INTF0始终为零。引脚电平变化中断控制寄存器—PCICR•位2-PCIE2:引脚电平变化中断使能2当PCIE2位与SREG位I置"1”。使能PCINT23..16引脚上任何电平变化都会引起中断。相应引脚电平变化中断祈求由PCI2中断向量执行。PCINT23..16引脚可以通过PCMSK2寄存器单独使能。•位1-PCIE1:引脚电平变化中断使能1当PCIE1位与SREG位I置"1”。使能PCINT14..8引脚上任何电平变化都会引起中断。相应引脚电平变化中断祈求由PCI1中断向量执行。PCINT14..8引脚可以通过PCMSK1寄存器单独使能。•位0-PCIE0:引脚电平变化中断使能0当PCIE0位与SREG位I置"1”。使能PCINT7..0引脚上任何电平变化都会引起中断。相应引脚电平变化中断祈求由PCI0中断向量执行。PCINT7..0引脚可以通过PCMSK0寄存器单独使能。引脚电平变化中断标志寄存器—PCIFR•位2-PCIF2:引脚电平变化中断标志2当引脚PCINT23..16上电平变化触发中断祈求时,PCIF2置"1”。如果SREG寄存器中I位I与PCICR寄存器中位PCIE2置"1”,MCU将会跳转到相应中断向量。当中断程序执行时,该标志被清除。该位也可通过写逻辑"1”来清除。•位1-PCIF1:引脚电平变化中断标志1当引脚PCINT14..8上电平变化触发中断祈求时,PCIF1置"1”。如果SREG寄存器中I位I与PCICR寄存器中位PCIE1置"1”,MCU将会跳转到相应中断向量。当中断程序执行时,该标志被清除。该位也可通过写逻辑"1”来清除。•位0-PCIF0:引脚电平变化中断标志0当引脚PCINT7..0上电平变化触发中断祈求时,PCIF0置"1”。如果SREG寄存器中I位I与PCICR寄存器中位PCIE0置"1”,MCU将会跳转到相应中断向量。当中断程序执行时,该标志被清除。该位也可通过写逻辑"1”来清除。引脚电平变化屏蔽寄存器2—PCMSK2•位7..0–PCINT23..16:引脚电平变化使能屏蔽23..16引脚电平变化屏蔽寄存器1—PCMSK1•位6..0–PCINT14..8:引脚电平变化使能屏蔽14..8PCINT14..8中每一位决定相应I/O引脚电平变化中断与否使能。如果PCINT14..8与PCICR上PCIE1位置位,则相应引脚电平变化中断使能。如果PCINT14..8清零,相应引脚电平变化中断禁用。引脚变化屏蔽寄存器0—PCMSK0•位7..0–PCINT7..0:引脚电平变化使能屏蔽7..0信号阐明(内部信号):count使TCNT0加1或减1direction选取加操作或减操作clear清除TCNT0(将所有位清零)clkTnT/C时钟,clkT0top表达TCNT0已经达到了最大值bottom表达TCNT0已经达到了最小值(0)•位1:0–WGM01:0:波形产生模式T/C控制寄存器B—TCCR0B•位7–FOC0A:强制输出比较AFOC0A仅在WGM指明非PWM模式时才有效。读FOC0A返回值永远为0。•位6–FOC0B:强制输出比较BFOC0B仅在WGM指明非PWM模式时才有效。读FOC0B返回值永远为0。•位3–WGM02:波形产生模式请参见P89”T/C控制寄存器A–TCCR0A”。•位2:0–CS02:0:时钟选取T/C寄存器—TCNT0通过T/C寄存器可以直接对计数器8位数据进行读写访问。对TCNT0寄存器写访问将在下一种时钟制止比较匹配。在计数器运营过程中修改TCNT0数值有也许丢失一次TCNT0和OCR0x比较匹配。输出比较寄存器A—OCR0A输出比较寄存器B—OCR0BT/C中断屏蔽寄存器—TIMSK0•位2–OCIE0B:T/C输出比较匹配B中断使能当OCIE0B和状态寄存器全局中断使能位I都为”1”时,T/C输出比较匹配B中断使能。当T/C比较匹配发生,即TIFR0中OCF0B置位时,中断服务程序得以执行。•位1–OCIE0A:T/C0输出比较匹配A中断使能当OCIE0A和状态寄存器全局中断使能位I都为”1”时,T/C0输出比较匹配A中断使能。当T/C0比较匹配发生,即TIFR0中OCF0A置位时,中断服务程序得以执行。•位0–TOIE0:T/C0溢出中断使能当TOIE0和状态寄存器全局中断使能位I都为”1”时,T/C0溢出中断使能。当T/C0发生溢出,即TIFR0中TOV0位置位时,中断服务程序得以执行。T/C0中断标志寄存器—TIFR0•位2–OCF0B:T/C0输出比较B匹配标志当T/C与OCR0B(输出比较寄存器0B)值匹配时,OCF0B置位。此位在中断服务程序里硬件清零,也可以对其写1来清零。当SREG中位I、OCIE0B(T/C比较B匹配中断使能)和OCF0B都置位时,中断服务程序得到执行。•位1–OCF0A:T/C0输出比较A匹配标志当T/C0与OCR0A(输出比较寄存器0A)值匹配时,OCF0A置位。此位在中断服务程序里硬件清零,也可以对其写1来清零。当SREG中位I、OCIE0A(T/C0比较匹配中断使能)和OCF0A都置位时,中断服务程序得到执行。•位0–TOV0:T/C0溢出标志T/C0溢出时TOV0置位。执行相应中断服务程序时此位硬件清零。此外,TOV0也可以通过写1来清零。当SREG中位I、TOIE0(T/C0溢出中断使能)和TOV0都置位时,中断服务程序得到执行。该标志位设立取决于WGM02:0位设定。请参见Table52,P90”波形产生模式位定义”。通用T/C控制寄存器—GTCCR•位7–TSM:T/C同步模式TSM置位激活T/C同步模式。只要TSM置位,PSR2与PSR10数值将保持不变,使得相关定期器/计数器预分频器处在持续复位状态。这样有关T/C将停止工作。顾客可以为它们赋予相似数值而不会出当前配备一种定期器/计数器时另一种T/C在运营现象。一旦TSM清零,PSR2与PSR10位被硬件清零,有关定期器/计数器同步开始计数。•位0–PSRSYNC:预分频器复位PSRSYNC置位时T/C1与T/C0预分频器复位。操作完毕后这一位普通由硬件及时清零,除非TSM置位。要注意是T/C1与T/C0共用一种预分频器,复位对两个计时器均有影响。unsignedinti;.../*设立TCNT1为0x01FF*/TCNT1=0x1FF;/*将TCNT1读入i*/i=TCNT1;...下面例程给出了TCNT1寄存器基本读操作。对OCR1A/B或ICR1读操作可以使用相似办法。unsignedintTIM16_ReadTCNT1(void){unsignedcharsreg;unsignedinti;/*保存全局中断标志*/sreg=SREG;/*禁用中断*/_CLI();/*将TCNT1读入i*/i=TCNT1;/*恢复全局中断标志*/SREG=sreg;returni;信号描述(内部信号):CountTCNT1加1或减1Direction拟定是加操作还是减操作ClearTCNT1清零clkT1定期器/计数器时钟信号TOP表达TCNT1计数器到达最大值BOTTOM表达TCNT1计数器到达最小值(0)16位定期器/计数器寄存器阐明T/C1控制寄存器B—TCCR1B•位7–ICNC1:输入捕获噪声抑制器•置位ICNC1将使能输入捕获噪声抑制功能。此时外部引脚ICP1输入被滤波。其作用是从ICP1引脚持续进行4次采样。如果4个采样值都相等,那么信号送入边沿检测器。因而使能该功能使得输入捕获被延迟了4个时钟周期。•位6–ICES1:输入捕获触发沿选取该位选取使用ICP1上哪个边沿触发捕获事件。ICES为"0”选取是下降沿触发输入捕获;ICES1为"1”选取是逻辑电平上升沿触发输入捕获。按照ICES1设立捕获到一种事件后,计数器数值被复制到ICR1寄存器。捕获事件还会置为ICF1。如果此时中断使能,输入捕获事件即被触发。当ICR1用作TOP值(见TCCR1A与TCCR1B寄存器中WGM13:0位描述)时,ICP1与输入捕获功能脱开,从而输入捕获功能被禁用。T/C1控制寄存器C—TCCR1CT/C1—TCNT1H与TCNT1L输出比较寄存器1A—OCR1AH与OCR1AL输出比较寄存器1B—OCR1BH与OCR1BL输入捕获寄存器1—ICR1H与ICR1LT/C1中断屏蔽寄存器—TIMSK1•位5–ICIE1:T/C1输入捕获中断使能当该位被设为"1”,且状态寄存器中I位被设为"1”时,T/C1输入捕获中断使能。T一旦IFR1ICF1置位,CPU即开始执行T/C1输入捕获中断服务程序(见P48“中断”)。•位2–OCIE1B:T/C1输出比较B匹配中断使能当该位被设为"1”,且状态寄存器中I位被设为"1”时,使能T/C1输出比较B匹配中断使能。一旦TIFR1上OCF1B置位,CPU即开始执行T/C1输出比较B匹配中断服务程序(见P48“中断”)。•位1–OCIE1A:T/C1输出比较A匹配中断使能当该位被设为"1”,且状态寄存器中I位被设为"1”时,T/C1输出比较A匹配中断使能。一旦TIFR1上OCF1A置位,CPU即开始执行T/C1输出比较A匹配中断服务程序(见P48“中断”)。•位0–TOIE1:T/C1溢出中断使能当TOIE1与状态寄存器I位同步被设为”1”时,T/C1溢出中断使能。一旦TIFR1TOV1置位,CPU即开始执行T/C1溢出中断服务程序(见P44“看门狗定期器”)。T/C1中断标志寄存器—TIFR1•位5–ICF1:T/C1输入捕获标志位外部引脚ICP1浮现捕获事件时ICF1置位。此外,当ICR1作为计数器TOP值时,一旦计数器值达到TOP,ICF1也置位。执行输入捕获中断服务程序时ICF1自动清零。也可以对其写入逻辑"1”来清除该标志位。•位2–OCF1B:T/C1输出比较B匹配标志位当TCNT1与OCR1B匹配成功时,该位被设为"1”。强制输出比较(FOC1B)不会置位OCF1B。执行强制输出比较匹配B中断服务程序时OCF1B自动清零。也可以对其写入逻辑"1”来清除该标志位。•位1–OCF1A:T/C1输出比较A匹配标志位当TCNT1与OCR1A匹配成功时,该位被设为"1”。强制输出比较(FOC1A)不会置位OCF1A。执行强制输出比较匹配A中断服务程序时OCF1A自动清零。也可以对其写入逻辑"1”来清除该标志位。•位0–TOV1:T/C1溢出标志该位设立与T/C1工作方式关于。工作于普通模式和CTC模式时,T/C1溢出时TOV1置位。对工作在其他模式下TOV1标志位置位,见P118Table58。执行溢出中断服务程序时OCF1A自动清零。也可以对其写入逻辑"1”来清除该标志位。通用T/C控制寄存器—GTCCR•位1–PSR2:T/C2预分频器复位此位写"1“时复位T/C2预分频器。操作完毕后普通及时由硬件清零。如果T/C2工作于异步模式,则这一位置位后始终保持到预分频器复位操作真正完毕。如果TSM位置位,则该位不会被硬件清零。对T/C同步模式描述请参见P95”位7–TSM:T/C同步模式”。串行外设接口—SPI•全双工,3线同步数据传播•主机或从机操作•LSB一方面发送或MSB一方面发送•7种可编程比特率•传播结束中断标志•写碰撞标志检测•可以从闲置模式唤醒•作为主机时具备倍速模式(CK/2)USART也可用于SPI主机模式,voidSPI_MasterInit(void){/*设立MOSI和SCK为输出,其她为输入*/DDR_SPI=(1<<DD_MOSI)|(1<<DD_SCK);/*使能SPI主机模式,设立时钟速率为fck/16*/SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0);}voidSPI_MasterTransmit(charcData){/*启动数据传播*/SPDR=cData;/*等待传播结束*/while(!(SPSR&(1<<SPIF)));}下面例子阐明如何将SPI初始化为从机,以及如何进行简朴数据接受。voidSPI_SlaveInit(void){/*设立MISO为输出,其她为输入*/DDR_SPI=(1<<DD_MISO);/*使能SPI*/SPCR=(1<<SPE);}charSPI_SlaveReceive(void){/*等待接受结束*/while(!(SPSR&(1<<SPIF)));/*返回数据*/returnSPDR;}从机模式SPI配备为从机时,从机选取引脚SS总是为输入。SS为低将激活SPI接口,MISO成为输出(顾客必要进行相应端口配备)引脚,其她引脚成为输入引脚。当SS为高时所有引脚成为输入,SPI逻辑复位,不再接受数据。SS引脚对于数据包/字节同步非常有用,可以使从机位计数器与主机时钟发生器同步。当SS拉高时SPI从机及时复位接受和发送逻辑,并丢弃移位寄存器里不完整数据。主机模式当SPI配备为主机时(SPCRMSTR置位),顾客可以决定SS引脚方向。若SS配备为输出,则此引脚可以用作普通I/O口而不影响SPI系统。典型应用是用来驱动从机SS引脚。如果SS配备为输入,必要保持为高以保证SPI正常工作。若系统配备为主机,SS为输入,但被外设拉低,则SPI系统会将此低电平解释为有一种外部主机将自己选取为从机。为了防止总线冲突,SPI系统将实现如下动作:1.清零SPCRMSTR位,使SPI成为从机,从而MOSI和SCK变为输入。2.SPSRSPIF置位。若SPI中断和全局中断开放,则中断服务程序将得到执行。因而,使用中断方式解决SPI主机数据传播,并且存在SS被拉低也许性时,中断服务程序应当检查MSTR与否为"1”。若被清零,顾客必要将其置位,以重新使能SPI主机模式。SPI控制寄存器—SPCR•位7–SPIE:SPI中断使能置位后,只要SPSR寄存器SPIF和SREG寄存器全局中断使能位置位,就会引起SPI中断。•位6–SPE:SPI使能SPE置位将使能SPI。进行任何SPI操作之前必要置位SPE。•位5–DORD:数据顺序DORD置位时数据LSB一方面发送;否则数据MSB一方面发送。•位4–MSTR:主/从选取MSTR置位时选取主机模式,否则为从机。如果MSTR为"1”,SS配备为输入,但被拉低,则MSTR被清零,寄存器SPSRSPIF置位。顾客必要重新设立MSTR进入主机模式。•位3–CPOL:时钟极性CPOL置位表达空闲时SCK为高电平;否则空闲时SCK为低电平。请参照Figure68与Figure69。CPOL功能总结如下:•位2–CPHA:时钟相位SPI状态寄存器—SPSR•位7–SPIF:SPI中断标志串行发送结束后,SPIF置位。若此时寄存器SPCRSPIE和全局中断使能位置位,SPI中断即产生。如果SPI为主机,SS配备为输入,且被拉低,SPIF也将置位。进入中断服务程序后SPIF自动清零。或者可以通过先读SPSR,紧接着访问SPDR来对SPIF清零。•位6–WCOL:写碰撞标志在发送当中对SPI数据寄存器SPDR写数据将置位WCOL。WCOL可以通过先读SPSR,紧接着访问SPDR来清零。•位5..1–Res:保存位ATmega48/88/168保存位,读操作返回值为0。•位0–SPI2X:SPI倍速置位后SPI速度加倍(见Table71)。若为主机,则SCK频率可达CPU频率一半。若为从机,必要保证此时钟不不不大于fosc/4以保证正常工作。ATmega48/88/168SPI接口同步还用来实现程序和EEPROM下载和上载。请参见P270SPI串行编程和校验。SPI数据寄存器—SPDRUSART0通用同步和异步串行接受器和发送器(USART)是一种高度灵活串行通讯设备。重要特点有:•全双工操作(独立串行接受和发送寄存器)•异步或同步操作•主机或从机提供时钟同步操作•高精度波特率发生器•支持5,6,7,8,或9个数据位和1个或2个停止位•硬件支持奇偶校验操作•过高数据率检测•帧错误检测•噪声滤波,涉及错误起始位检测,以及数字低通滤波器•三个独立中断:发送结束中断,发送数据寄存器空中断,以及接受结束中断•多解决器通讯模式•倍速异步通讯模式信号阐明:txclk发送器时钟(内部信号)rxclk接受器基本时钟(内部信号)xckiXCK引脚输入(内部信号),用于同步从机操作xcko输出到XCK引脚时钟(内部信号),用于同步主机操作foscXTAL频率(系统时钟)如下是USART初始化程序示例。voidUSART_Init(unsignedintbaud){/*设立波特率*/UBRRnH=(unsignedchar)(baud>>8);UBRRnL=(unsignedchar)baud;/*接受器与发送器使能*/UCSRnB=(1<<RXENn)|(1<<TXENn);/*设立帧格式:8个数据位,2个停止位*/UCSRnC=(1<<USBSn)|(3<<UCSZn0);}如下程序给出对UDREn标志采用轮询方式发送数据例子voidUSART_Transmit(unsignedcharda{/*等待发送缓冲器为空*/while(!(UCSRnA&(1<<UDREn)));/*将数据放入缓冲器,发送数据*/UDRn=data;}voidUSART_Transmit(unsignedintdata){/*等待发送缓冲器为空*/while(!(UCSRnA&(1<<UDREn))));/*将第9位复制到TXB8**/UCSRnB&=~(1<<TXB8);if(data&0x0100)UCSRnB|=(1<<TXB8);/*将数据放入缓冲器,发送数据*/UDRn=data;}如下程序给出了对RXCn标志采用轮询方式接受数据例子。

unsignedcharUSART_Receive(void){/*等待接受数据*/while(!(UCSRnA&(1<<RXCn)));/*从缓冲器中获取并返回数据*/returnUDRn;}unsignedintUSART_Receive(void){unsignedcharstatus,resh,resl;/*等待接受数据*/while(!(UCSRnA&(1<<RXCn)));/*从缓冲器中获得状态、第9位及数据*/status=UCSRnA;resh=UCSRnB;resl=UDRn;/*如果出错,返回-1*/if(status&(1<<FEn)|(1<<DORn)|(1<<UPEn))return-1;/*过滤第9位数据,然后返回*/resh=(resh>>1)&0x01;return((resh<<8)|resl);}刷新接受缓冲器voidUSART_Flush(void){unsignedchardummy;while(UCSRnA&(1<<RXCn))dummy=UDRn;}USART寄存器描述USARTI/O数据寄存器—UDRnUSART控制和状态寄存器A—UCSRnA•位7–RXCn:USART接受结束接受缓冲器中有未读出数据时RXCn置位,否则清零。接受器禁止时,接受缓冲器被刷新,导致RXCn清零。RXCn标志可用来产生接受结束中断(见对RXCIEn位描述)。•位6–TXCn:USART发送结束发送移位缓冲器中数据被送出,且当发送缓冲器(UDRn)为空时TXCn置位。执行发送结束中断时TXCn标志自动清零,也可以通过写1进行清除操作。TXCn标志可用来产生发送结束中断(见对TXCIEn位描述)。•位5–UDREn:USART数据寄存器空UDREn标志指出发送缓冲器(UDRn)与否准备好接受新数据。UDREn为1阐明缓冲器为空,已准备好进行数据接受。UDREn标志可用来产生数据寄存器空中断(见对UDRIEn位描述)。复位后UDREn置位,表白发送器已经就绪。•位4–FEn:帧错误如果接受缓冲器接受到下一种字符有帧错误,即接受缓冲器中下一种字符第一种停止位为0,那么FEn置位。这一位始终有效直到接受缓冲器(UDRn)被读取。当接受到停止位为1时,FEn标志为"0”。对UCSRnA进行写入时,这一位要写"0”。•位3–DORn:数据溢出数据溢出时DORn置位。当接受缓冲器满(包括了两个数据),接受移位寄存器又有数据,若此时检测到一种新起始位,数据溢出就产生了。这一位始终有效直到接受缓冲器(UDRn)被读取。对UCSRnA进行写入时,这一位要写"0”。•位2–UPEn:USART奇偶校验错误当奇偶校验使能(UPMn1=1),且接受缓冲器中所接受到下一种字符有奇偶校验错误时UPEn置位。这一位始终有效直到接受缓冲器(UDRn)被读取。对UCSRnA进行写入时,这一位要写"0”。•位1–U2Xn:倍速发送这一位仅对异步操作有影响。使用同步操作时将此位清零。此位置1可将波特率分频因子从16降到8,从而有效将异步通信模式传播速率加倍。•位0–MPCMn:多解决器通信模式设立此位将启动多解决器通信模式。MPCMn置位后,USART接受器接受到那些不包含地址信息输入帧都将被忽视。发送器不受MPCMn设立影响。详细信息请参照P168”多解决器通信模式”。USART控制和状态寄存器B—UCSRnB•位7–RXCIEn:接受结束中断使能置位后使能RXCn中断。当RXCIEn为1,SREG寄存器全局中断标志位置位,UCSRnA寄存器RXCn亦为1时可以产生USART接受结束中断。•位6–TXCIEn:发送结束中断使能置位后使能TXCn中断。当TXCIEn为1,SREG寄存器全局中断标志位置位,UCSRnA寄存器TXCn亦为1时可以产生USART发送结束中断。•位5–UDRIEn:USART数据寄存器空中断使能置位后使能UDREn中断。当UDRIEn为1,SREG寄存器全局中断标志位置位,UCSRnA寄存器UDREn亦为1时可以产生USART数据寄存器空中断。•位4–RXENn:接受使能置位后将启动USART接受器。RxDn引脚通用端口功能被USART功能所取代。禁止接受器将刷新接受缓冲器,并使FEn、DORn及UPEn标志无效。•位3–TXENn:发送使能置位后将启动将启动USART发送器。TxDn引脚通用端口功能被USART功能所取代。TXENn清零后,只有等到所有数据发送完毕后发送器才可以真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送数据。发送器禁止后,TxDn引脚恢复其通用I/O功能。•位2–UCSZn2:字符长度UCSZn2与UCSRnC寄存器UCSZn1:0结合在一起可以设立数据帧所包括数据位数(字符长度)。•位1–RXB8n:接受数据位8对9位串行帧进行操作时,RXB8n是第9个数据位。读取UDRn包括低位数据之前首先要读取RXB8n。•位0–TXB8n:发送数据位8对9位串行帧进行操作时,TXB8n是第9个数据位。写UDRn之前一方面要对它进行写操作。USART控制和状态寄存器nC—UCSRnCUSART波特率寄存器—UBRRL和UBRRH•位11:0–UBRR11:0:USART波特率寄存器这个12位寄存器包括了USART波特率信息。其中UBRRnH包括了USART波特率高4位,UBRRnL包括了低8位。波特率变化将导致正在进行数据传播受到破坏。写UBRRnL将及时更新波特率分频器。波特率设立例子模仿比较器模仿比较器对正极AIN0值与负极AIN1值进行比较。当AIN0上电压比负极AIN1上电压要高时,模仿比较器输出ACO即置位。比较器输出可用来触发定期器/计数器1输入捕获功能。此外,比较器还可触发自己专有、独立中断。顾客可以选取比较器是以上升沿、下降沿还是交替变化边沿来触发中断。Figure100为比较器及其外ADC控制及状态寄存器B—ADCSRB•位6–ACME:模仿比较器多路复用器使能当此位为逻辑"1”,且ADC处在关闭状态(ADCSRA寄存器ADEN为"0”)时,ADC多路复用器为模仿比较器选取负极输入。当此位为"0”时,AIN1连接到比较器负极输入端。更详细描述请参见P216”模仿比较器多路输入”。模仿比较器控制及状态寄存器—ACSR•位7–ACD:模仿比较器禁用ACD置位时,模仿比较器电源被切断。可以在任何时候设立此位来关掉模仿比较器。这可以减少器件工作模式及空闲模式下功耗。变化ACD位时,必要清零ACSR寄存器ACIE位来禁止模仿比较器中断。否则ACD变化时也许会产生中断。•

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论