Advertisement
Guest User

Untitled

a guest
Jan 1st, 2013
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1.  
  2. #define F_CPU 16000000UL
  3.  
  4.  
  5. #include <avr/io.h>
  6. #include <util/delay.h>
  7. #include "lcd.h"
  8. #include <stdlib.h> //Necessário para a função itoa
  9. #include <avr/interrupt.h>
  10. #include <math.h>
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include "lcd.h"
  14.  
  15.  
  16.  
  17. void timer0_init(void); //Protótipo da função
  18.  
  19. volatile unsigned long milis = 0; //Esta é a variavel volatile que vai ser partilhada pela função milis e pela interrupção
  20. unsigned long now = 0;
  21. char buffer [33];
  22.  
  23. int main(void)
  24. {
  25. timer0_init();
  26. lcd_init(LCD_DISP_ON);
  27. lcd_puts("Hello World");
  28. for(;;){
  29. lcd_gotoxy(0,1);
  30. now = milis++;
  31. itoa (now,buffer,10);
  32. lcd_puts(now);
  33. _delay_ms(200);
  34. }
  35. return 0;
  36. }
  37.  
  38.  
  39.  
  40. void timer0_init(void){
  41. TCCR0A = (1<<WGM01); //Timer no modo CTC
  42. TCCR0B = ((1<<CS01)|(1<<CS00)); //1:64 prescaler
  43. OCR0A = 249; //Valor alvo para termos uma interrupção a cada 1ms
  44. TIMSK0 = (1<<OCIE0A); //Activar interrupções do timer
  45. sei(); //Activar interrupções globais
  46. }
  47.  
  48. ISR(TIMER0_COMPA_vect){
  49.  
  50. milis++; //Aumentar a variavel milis em 1, para dizer que 1ms passou
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement