单片机课程设计祥解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计祥解.ppt

定时器溢出方式的应用 M16的定时器0 8位定时器 具有PWM功能 定时器0相关寄存器 T/C 控制寄存器- TCCR0 设置时钟源频率 T/C 寄存器- TCNT0 计数寄存器 T/C 中断屏蔽寄存器- TIMSK 需要使用溢出中断时 T/C 中断标志寄存器- TIFR 查询是否溢出 定时器0溢出方式 查询模式使用步骤 第1步:设置TC寄存器初值 TCNT0 = 55; 第2步:开启时钟,同时TC0启动 TCCR0 |= (1 CS01); 第3步:查询TIFR寄存器的TOV0位 while(!(TIFR TOV0)); 定时器0溢出方式中断模式 第1步:设置中断函数 第2步:设置TC寄存器初值 TCNT0 = 55; 第3步:使能TC0溢出中断 TIMSK |= (1 TOIE0); 第4步:编写TC0溢出中断服务程序 SIGNAL(SIG_SIG_OVERFLOW0) {//此处添加中断服务程序代码} 第5步:开启时钟,同时TC0启动 TCCR0 |= (1 CS01); 第6步:使能全局中断 中断函数 #pragma vector = TIMER0_OVF_vect __interrupt void TOver0_isr( void ) AVR编程辅助工具 辅助工具演示 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * IAR编程环境使用 安装IAR for AVR 参见提供的资料 在机房的机器上已经安装好该软件 打开IAR 选择新建项目 选择C下main 输入保存的工作区名字、项目名字 进入IAR编程主界面 修改配置选项 选择器件 设置linker选项 设置输出文件格式为hex 需要手动修改*.d90为*.hex 选择intelstandard 设置debugger选项 按“确定”关闭设置选项 输入程序 Mak 输入程序 编译结果 软件模拟仿真 使用USB bootloader下载编译后代码 准备工作 焊接好的课程设计板子 一条USB线 用USB线连接PC 准备好需要下载的hex文件 准备好程序:bootloadHID_GUI.exe 打开bootloadHID_GUI.exe 打开hex文件,然后upload 第二次下载 可以用下列方法进行: 1、重新插拔USB线 2、按住BOOT键,按一下复位,然后放开复位,放开BOOT键 ATmega16的ADC AVR的模数转换器 AVR片上ADC的特点: 10 位 精度 0.5 LSB 的非线性度 ± 2 LSB 的绝对精度 65 - 260 μs 的转换时间 最高分辨率时采样率高达15 kSPS 8 路复用的单端输入通道 7 路差分输入通道 2 路可选增益为10x 与200x 的差分输入通道 可选的左对齐ADC 读数 0 - VCC 的 ADC 输入电压范围 可选的2.56V ADC 参考电压 连续转换或单次转换模式 通过自动触发中断源启动ADC 转换 ADC 转换结束中断 基于睡眠模式的噪声抑制器 使用流程: 1.初始化相关寄存器 2.读取转换结果 3.平滑滤波 4.进行单位制变换 void init_adc(void) { ADCSRA = 0x00; ADMUX =(adc_mux0x1f)|(1REFS0)|(1REFS1); //参考电压为内部2.56 ADCSRA=(1ADEN)|(1ADSC)|(1ADIE)|(1ADPS2)|(1ADPS1) ;//64分频 asm(sei); UBRRH = 25; UBRRL = 25; UCSRB=0x18; UCSRC=0x86; } //ADC完成中断 //#pragma vector = interrupt_handler adc_isr:iv_ADC // define the interrupt handler #pragma vector=ADC_vect __interrupt void adc_isr( void ) { ADMUX =(adc_mux0x1f)|(1REFS0)|(1REFS1); ADCSRA|=(1ADSC);//启动AD转换 } 中断与定时 定时器的概念 8位定时/计数器的模型 1个8位长度计数寄存器,可以对其进行读写 1个时钟输

文档评论(0)

love + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档