Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F_CPU 16000000UL
- #include <avr/io.h>
- #include <util/delay.h>
- #include "lcd.h"
- #include <stdlib.h> //Necessário para a função itoa
- #include <avr/interrupt.h>
- #include <math.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include "lcd.h"
- void timer0_init(void); //Protótipo da função
- volatile unsigned long milis = 0; //Esta é a variavel volatile que vai ser partilhada pela função milis e pela interrupção
- unsigned long now = 0;
- char buffer [33];
- int main(void)
- {
- timer0_init();
- lcd_init(LCD_DISP_ON);
- lcd_puts("Hello World");
- for(;;){
- lcd_gotoxy(0,1);
- now = milis++;
- itoa (now,buffer,10);
- lcd_puts(now);
- _delay_ms(200);
- }
- return 0;
- }
- void timer0_init(void){
- TCCR0A = (1<<WGM01); //Timer no modo CTC
- TCCR0B = ((1<<CS01)|(1<<CS00)); //1:64 prescaler
- OCR0A = 249; //Valor alvo para termos uma interrupção a cada 1ms
- TIMSK0 = (1<<OCIE0A); //Activar interrupções do timer
- sei(); //Activar interrupções globais
- }
- ISR(TIMER0_COMPA_vect){
- milis++; //Aumentar a variavel milis em 1, para dizer que 1ms passou
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement