AVR M16 寄存器注释.docx
- 文档编号:1679874
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:25
- 大小:22.63KB
AVR M16 寄存器注释.docx
《AVR M16 寄存器注释.docx》由会员分享,可在线阅读,更多相关《AVR M16 寄存器注释.docx(25页珍藏版)》请在冰点文库上搜索。
AVRM16寄存器注释
//AVRM16寄存器注释
#include
#include
void initialize()
{
// DDRx端口方向寄存器,PORTx数据寄存器,PINx输入引脚寄存器
// DDRxn相应位为1,引脚为输出否则为输入
// PORTxn为1时,上拉电阻使能
DDRA = 0x00;
}
void init_adc()
{
// ADMUX
// -----------------------------------------------------------------
// | REFS1 | REFS0 | ADLAR | MUX4 | MUX3 | MUX2 | MUX1 | MUX0 |
// -----------------------------------------------------------------
// REFS1 REFS0:
00,使用AREF,内部参考电压关闭
// 01,AVCC、AREF引脚外加滤波电容
// 10,保留
// 11,2.56V片内基准电压,AREF引脚外加滤波电容
// ADLAR:
ADC转换结果左对齐
// MUX4 ~ MUX0 单端输入 正差分输入 负差分输入 增益
// 00000 ~ 00111 ADC0~ADC7
// 01000 ADC0 ADC0 10x
// 01001 ADC1 ADC0 10x
// 01010 ADC0 ADC0 200x
// 01011 ADC1 ADC0 200x
// 01100 ADC2 ADC2 10x
// 01101 ADC3 ADC2 10x
// 01110 ADC2 ADC2 200x
// 01111 ADC3 ADC2 200x
// 10000 ADC0 ADC1 1x
// 10001 ADC1 ADC1 1x
// 10010 ADC2 ADC1 1x
// 10011 ADC3 ADC1 1x
// 10100 ADC4 ADC1 1x
// 10101 ADC5 ADC1 1x
// 10110 ADC6 ADC1 1x
// 10111 ADC7 ADC1 1x
// 11000 ADC0 ADC2 1x
// 11001 ADC1 ADC2 1x
// 11010 ADC2 ADC2 1x
// 11011 ADC3 ADC2 1x
// 11100 ADC4 ADC2 1x
// 11101 ADC5 ADC2 1x
// 11110 1.23V(VBG)
// 11111 0V(GND)
ADMUX = 0;
// ADCSRA
// -----------------------------------------------------------------
// | ADEN | ADSC | ADFR | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 |
// -----------------------------------------------------------------
// ADEN:
ADC使能,转换过程中禁止ADC则立即中止转换。
// ADSC:
ADC开始转换。
在转换过程中ADSC为1直到转换结束。
// ADFR:
是否工作在连续模式,该位写0,停止连续转换模式。
// ADIF:
ADC中断标志。
中断服务硬件清零。
// ADIE:
ADC中断使能
// ADSP2 ~ ADSP0:
ADC预分频选择 000:
2分频,001到111为2到128分频
// ADC在50~200KHz时钟时能获得最大精度
ADCSRA = 0;
// ADCC & ADCH
// ADC转换结果寄存器,差分通道结果以2的补码形式表示,ADC数据必须读过
// ADCH后才可进行数据更新。
对于精度小于8位的左对齐数据可只读ADCH。
// 数据右对齐(ADLAR = 0)
// ADCH-------------------------------------------------------------
// | - | - | - | - | - | - | ADC9 | ADC8 |
// -----------------------------------------------------------------
// ADCL-------------------------------------------------------------
// | ADC7 | ADC6 | ADC5 | ADC4 | ADC3 | ADC2 | ADC1 | ADC0 |
// -----------------------------------------------------------------
//
}
void init_timer()
{
//SFIOR
// -----------------------------------------------------------------
// | TSM | - | - | - | ACME | PUD | PSR0 | PSR321|
// -----------------------------------------------------------------
// TSM:
T/C同步模式。
置位时,PSR0和PSR321保持其数据直到被更新或TSM被清零
// PSR0:
T/C0预分频器复位,置位时使预频器复位,直到为0时表示复位完成
// PSR321:
T/C3、2、1预分频繁器复位,此位读总为0
// ACME:
模拟比较器使能
// PUD:
所有端口上拉电阻禁止,置1为禁止
SFIOR = 0;
}
void init_timer0()
{
//TCCR0 T/C0控制寄存器
// -----------------------------------------------------------------
// | FOC0 | WGM00 | COM01 | COM00 | WGM01 | CS02 | CS01 | CS00 |
// -----------------------------------------------------------------
// FOC0:
强制输出比较启动
// WGM01, WGM00:
工作模式选择
// 00:
普通模式,01:
PWM相位修正,
// 10:
比较匹配时清除计数器模式(CTC模式),11:
快速PWM
// COM01, COM00:
比较匹配时的输出模式
// WGMxx为普通模式或CTC模式时
// 00:
OC0未连接,
// 01:
OC0取反,
// 10:
OC0清零,
// 11:
OC0置位
// WGMxx为相位修正PWM模式
// 00:
OC0未连接,
// 01:
保留,
// 10:
升序匹配时清零OC0;降序匹配时置位OC0,
// 11:
升序匹配时置位OC0;降序匹配时清零OC0
// WGMxx为快速PWM模式
// 00:
OC0未连接
// 01:
保留
// 10:
匹配时OC0清零;计数到TOP时OC0置位
// 11:
匹配时OC0置位;计数到TOP时OC0清零
// CS02,CS01,CS00:
T/C0时钟预分频选择
// 000:
无时钟,T/C不工作 001:
1/1
// 010:
1/8 011:
1/32 100:
1/64
// 101:
1/128 110:
1/256 111:
1/1024
TCCR0 = 0;
//TCNT0 T/C0计数寄存器,8位
//OCR0 输出比较寄存器,8位
//TIMSK T/C中断屏蔽寄存器
// -----------------------------------------------------------------
// | OCIE2 | TOIE2 | TICIE1| OCIE1A| OCIE1B| TOIE1 | OCIE0 | TOIE0 |
// -----------------------------------------------------------------
// OCIE2:
T/C2输出比较匹配中断使能
// TOIE2:
T/C2溢出中断使能
// TICIE1:
T/C1输入捕捉中断使能
// OCIE1A:
T/C1输出比较A匹配中断使能
// OCIE1B:
T/C1输出比较B匹配中断使能
// TOIE1:
T/C1溢出中断使能
// OCIE0:
T/C0输出比较匹配中断使能
// TOIE0:
T/C0溢出中断使能
TIMSK = 0;
//ETIMSK T/C扩展中断屏蔽寄存器
// -----------------------------------------------------------------
// | - | - | TICIE3| OCIE3A| OCIE3B| TOIE3 | OCIE3C| OCIE1C|
// -----------------------------------------------------------------
// TICIE3:
T/C3输入捕捉中断使能
// OCIE3A:
T/C3输出比较A匹配中断使能
// OCIE3B:
T/C3输出比较B匹配中断使能
// TOIE3:
T/C3溢出中断使能
// OCIE3C:
T/C3输出比较C匹配中断使能
// OCIE1C:
T/C1输出比较C匹配中断使能
ETIMSK = 0;
//TIFR T/C中断标志寄存器
// -----------------------------------------------------------------
// | OCF2 | TOV2 | ICF1 | OCF1A | OCF1B | TOV1 | OCF0 | TOV0 |
// -----------------------------------------------------------------
// OCF2:
T/C2输出比较匹配标志
// TOV2:
T/C2溢出标志
// ICF1:
T/C1输入捕捉标志位
// OCF1A:
T/C1输出比较A匹配标志位
// OCF1B:
T/C1输出比较B匹配标志位
// TOV1:
T/C1溢出标志
// OCF0:
T/C0输出比较匹配标志
// TOV0:
T/C0溢出标志
//ETIFR 扩展的T/C中断标志寄存器
// -----------------------------------------------------------------
// | - | - | ICF3 | OCF3A | OCF3B | TOV3 | OCF3C | OCF1C |
// -----------------------------------------------------------------
// ICF3:
T/C3输入捕捉匹配标志位
// OCF3A:
T/C3输出比较A匹配标志位
// OCF3B:
T/C3输出比较B匹配标志位
// TOV3:
T/C3溢出标志位
// OCF3C:
T/C3输出比较C匹配标志位
// OCF1C:
T/C1输出比较C匹配标志位
//ASSR T/C0异步状态寄存器
// -----------------------------------------------------------------
// | - | - | - | - | AS0 | TCN0UB| OCR0UB| TCR0UB|
// -----------------------------------------------------------------
// AS0:
T/C0使用外部时钟
// TCN0UB:
TCNT0更新中,写TCNT0时将置位,为0时表明TCNT0可以写入新值
// OCR0UB:
OCR0更新中,写OCR0时将置位,为0表明OCR0可以写入新值
// TCR0UB:
TCCR0更新中,写TCCR0时将置位,为0表明TCCR0可以写入新值
ASSR = 0;
}
void init_timer2()
{
//TCCR2 T/C2控制寄存器
// -----------------------------------------------------------------
// | FOC2 | WGM20 | COM21 | COM20 | WGM21 | CS22 | CS21 | CS20 |
// -----------------------------------------------------------------
// FOC2:
强制输出比较启动
// WGM21, WGM20:
工作模式选择
// 00:
普通模式,01:
PWM相位修正,
// 10:
比较匹配时清除计数器模式(CTC模式),11:
快速PWM
// COM21, COM20:
比较匹配时的输出模式
// WGMxx为普通模式或CTC模式时
// 00:
OC0未连接,
// 01:
OC0取反,
// 10:
OC0清零,
// 11:
OC0置位
// WGMxx为相位修正PWM模式
// 00:
OC0未连接,
// 01:
保留,
// 10:
升序匹配时清零OC0;降序匹配时置位OC0,
// 11:
升序匹配时置位OC0;降序匹配时清零OC0
// WGMxx为快速PWM模式
// 00:
OC0未连接
// 01:
保留
// 10:
匹配时OC0清零;计数到TOP时OC0置位
// 11:
匹配时OC0置位;计数到TOP时OC0清零
// CS22,CS21,CS20:
T/C0时钟预分频选择
// 000:
无时钟,T/C不工作 001:
1/1
// 010:
1/8 011:
1/32 100:
1/64
// 101:
1/128 110:
1/256 111:
1/1024
TCCR2 = 0;
//TCNT2 T/C2计数寄存器,8位
//OCR2 T/C2比较寄存器,8位
}
void init_timer1()
{
//TCCR1A T/C1控制寄存器A
// -----------------------------------------------------------------
// | COM1A1| COM1A0| COM1B1| COM1B0| COM1C1| COM1C0| WGM11 | WGM10 |
// -----------------------------------------------------------------
//TCCR1B T/C1控制寄存器B
// -----------------------------------------------------------------
// | ICNC1 | ICES1 | - | WGM13 | WGM12 | CS12 | CS11 | CS10 |
// -----------------------------------------------------------------
//TCCR1C T/C1控制寄存器C
// -----------------------------------------------------------------
// | FOC1A | FOC1B | FOC1C | - | - | - | - | - |
// -----------------------------------------------------------------
// COM1A1,COM1A0:
通道A的比较输出模式
// COM1B1,COM1B0:
通道B的比较输出模式
// COM1C1,COM1C0:
通道C的比较输出模式
// WGM13,WGM12,WGM11,WGM10:
波型发生模式:
// 比较输出模式(CTC模式),非PWM
// 00 普通端口操作,OC1A/OC1B/OC1C未连接
// 01 比较匹配时OC1A/OC1B/OC1C电平取反
// 10 比较匹配时清零OC1A/OC1B/OC1C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR M16 寄存器注释 寄存器 注释