资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
实验三、定时器实验1 实验目的通过实验,掌握定时器的使用方法。着重掌握定时中断的使用!2 实验内容1、 使用Mega16单片机的timer0产生1ms间隔的定时中断(建议采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定时中断中实现4位数码管的动态刷新。(2)在1ms的定时中断中设计100mS的时间标志位,在主程序中查询时间标志位,实现LED闪烁。2、 重新配置TImer0工作在PWM模式,用按键改变PWM的占空比,调节电机转速;3 实验预习要求仔细阅读教材中定时中断的范例;4 实验步骤1、启动ICCAVR,创建一个工程文件,配置timer0,实现10ms的定时中断,采用Application Builder来生成初始化代码。注意:本次实验使用的IO口也要初始化,包括数码管驱动所使用的IO,按键等。2、在定时中断中实现四位数码管的定时刷新(注:要使用上次实验课的HC595的驱动),并在定时中断中实现100ms的时间标志(时标),在主程序中查询时标,实现led(PORTC口任何一个LED都可)闪烁;3、重新配置TImer0工作在PWM模式,初始占空比设置为10%,然后使用按键INT1(在原理图中为SW8,连接到了单片机的PD3引脚上来改变占空比,例如每按一次按键,占空比增加10%。注:实验中要使用的管脚有:PD4、PD5、PD6、PD7、PB0、PB1、PA0,PD3,各管脚连接请参照原理图。实验三 定时器应用实验报 告 内 容1 实验目的 通过实验,掌握定时器的使用方法。着重掌握定时中断的使用!2 实验内容 1、使用Mega16单片机的timer0产生1ms间隔的定时中断(建议采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定时中断中实现4位数码管的动态刷新。(2)在1ms的定时中断中设计100mS的时间标志位,在主程序中查询时间标志位,实现LED闪烁。2、重新配置TImer0工作在PWM模式,用按键改变PWM的占空比,调节电机转速;3 使用Mega16单片机的timer0产生1ms间隔的定时中断(建议采用application builder,既可以用Normal工作模式也可以使用CTC模式),写出采用的工作模式,以及定时器各个寄存器的值。#include #include void port_init(void) PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; /m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0x00;/TIMER0 initialize - prescale:8/ WGM: CTC/ desired value: 1000Hz/ actual value: 992.063Hz (-0.8%)void timer0_init(void) TCCR0 = 0x00; /stop TCNT0 = 0x83; /set count计数 OCR0 = 0x7D; /set compare匹配 TCCR0 = 0x0A; /start timer/call this routine to initialize all peripheralsvoid init_devices(void) /stop errant interrupts until set up CLI(); /disable all interrupts port_init(); timer0_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x00; /timer interrupt sources SEI(); /re-enable interrupts /all peripherals are now initialized4 在定时中断中实现4位数码管的动态刷新。(只写出定时中断相关的代码,本部分要借用上次实验课实现的HC595的驱动函数)5、在1ms的定时中断中设计1000mS的时间标志位,在主程序中查询时间标志位,秒表功能。(只写定时中断服务程序和实现秒表的功能代码)
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号