1 實(shí)驗(yàn)?zāi)康?/strong> 通過(guò)實(shí)驗(yàn),掌握定時(shí)器的使用方法。著重掌握定時(shí)中斷的使用! 2 實(shí)驗(yàn)內(nèi)容- 使用Mega16單片機(jī)的timer0產(chǎn)生1ms間隔的定時(shí)中斷(建議采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定時(shí)中斷中實(shí)現(xiàn)4位數(shù)碼管的動(dòng)態(tài)刷新。(2)在1ms的定時(shí)中斷中設(shè)計(jì)100mS的時(shí)間標(biāo)志位,在主程序中查詢時(shí)間標(biāo)志位,實(shí)現(xiàn)LED閃爍。
2、 重新配置TImer0工作在PWM模式,用按鍵改變PWM的占空比,調(diào)節(jié)電機(jī)轉(zhuǎn)速; 3 實(shí)驗(yàn)預(yù)習(xí)要求仔細(xì)閱讀教材中定時(shí)中斷的范例; 4 實(shí)驗(yàn)步驟1、啟動(dòng)ICCAVR,創(chuàng)建一個(gè)工程文件,配置timer0,實(shí)現(xiàn)10ms的定時(shí)中斷,采用Application Builder來(lái)生成初始化代碼。注意:本次實(shí)驗(yàn)使用的IO口也要初始化,包括數(shù)碼管驅(qū)動(dòng)所使用的IO,按鍵等。 2、在定時(shí)中斷中實(shí)現(xiàn)四位數(shù)碼管的定時(shí)刷新(注:要使用上次實(shí)驗(yàn)課的HC595的驅(qū)動(dòng)),并在定時(shí)中斷中實(shí)現(xiàn)100ms的時(shí)間標(biāo)志(時(shí)標(biāo)),在主程序中查詢時(shí)標(biāo),實(shí)現(xiàn)led(PORTC口任何一個(gè)LED都可)閃爍; 3、重新配置TImer0工作在PWM模式,初始占空比設(shè)置為10%,然后使用按鍵INT1(在原理圖中為SW8,連接到了單片機(jī)的PD3引腳上』來(lái)改變占空比,例如每按一次按鍵,占空比增加10%。 注:實(shí)驗(yàn)中要使用的管腳有:PD4、PD5、PD6、PD7、PB0、PB1、PA0,PD3,各管腳連接請(qǐng)參照原理圖。
實(shí)驗(yàn)三 定時(shí)器應(yīng)用實(shí)驗(yàn)
| 1 實(shí)驗(yàn)?zāi)康?/strong> 通過(guò)實(shí)驗(yàn),掌握定時(shí)器的使用方法。著重掌握定時(shí)中斷的使用! 2 實(shí)驗(yàn)內(nèi)容 1、使用Mega16單片機(jī)的timer0產(chǎn)生1ms間隔的定時(shí)中斷(建議采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定時(shí)中斷中實(shí)現(xiàn)4位數(shù)碼管的動(dòng)態(tài)刷新。(2)在1ms的定時(shí)中斷中設(shè)計(jì)100mS的時(shí)間標(biāo)志位,在主程序中查詢時(shí)間標(biāo)志位,實(shí)現(xiàn)LED閃爍。 2、重新配置TImer0工作在PWM模式,用按鍵改變PWM的占空比,調(diào)節(jié)電機(jī)轉(zhuǎn)速; 3 使用Mega16單片機(jī)的timer0產(chǎn)生1ms間隔的定時(shí)中斷(建議采用application builder,既可以用Normal工作模式也可以使用CTC模式),寫(xiě)出采用的工作模式,以及定時(shí)器各個(gè)寄存器的值。 |
- #include <iom16v.h>
- #include <macros.h>
- 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計(jì)數(shù)
- OCR0 = 0x7D; //set compare匹配
- TCCR0 = 0x0A; //start timer
- }
- //call this routine to initialize all peripherals
- void 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 initialized
- }
復(fù)制代碼
4 在定時(shí)中斷中實(shí)現(xiàn)4位數(shù)碼管的動(dòng)態(tài)刷新。(只寫(xiě)出定時(shí)中斷相關(guān)的代碼,本部分要借用上次實(shí)驗(yàn)課實(shí)現(xiàn)的HC595的驅(qū)動(dòng)函數(shù))
5、在1ms的定時(shí)中斷中設(shè)計(jì)1000mS的時(shí)間標(biāo)志位,在主程序中查詢時(shí)間標(biāo)志位,秒表功能。(只寫(xiě)定時(shí)中斷服務(wù)程序和實(shí)現(xiàn)秒表的功能代碼)
完整的Word格式文檔51黑下載地址:
實(shí)驗(yàn)三 定時(shí)器實(shí)驗(yàn).doc
(62 KB, 下載次數(shù): 13)
2018-6-26 00:14 上傳
點(diǎn)擊文件名下載附件
avr 下載積分: 黑幣 -5
|