Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. #include <xc.h> //apelare biblioteca de fisiere - descriere registri interni microcontroler
  2.  
  3. __PROG_CONFIG(1,0x3FE4); // config. uC (WDT=dis|OSC=int)
  4. __PROG_CONFIG(2,0x1EFF); // config. uC (PLL (OSC*4)=off) pag. 130 pdf. PIC16LF1937
  5.  
  6. unsigned char a;
  7. unsigned int b;
  8.  
  9. void init_uC (void);
  10.  
  11. void main(void)
  12. {
  13. init_uC(); // apel functie initializare microcontroler
  14. while (1) // bucla infinita
  15. {
  16. for (a=0x01; a< 0x80; a<<=1) // baleiere de port
  17. {
  18. PORTB = a; // du valoarea "a" in Portul B
  19. for(b=0; b<413; b++) // repet timpul de incrementate T0 de 1ms
  20. { // calcul: 1000*1ms=1sec.
  21. while(!TMR0IF);
  22. TMR0 = 5; // preaincarcare Timer T0
  23. TMR0IF = 0;
  24. }
  25. }
  26. for (a=0x80; a> 0x01; a>>=1)
  27. {
  28. PORTB = a; // du valoarea "a" in Portul B
  29. for(b=0; b<413; b++) // repet timpul de incrementate T0 de 1ms
  30. { // calcul: 500*1ms=500ms=0,5sec.
  31. while(!TMR0IF);
  32. TMR0 = 5; // preaincarcare Timer T0
  33. TMR0IF = 0;
  34. }
  35. }
  36. }
  37. }
  38. void init_uC (void)
  39. {
  40. OSCCON = 0x7B; // setez Osc. intern uC de 4MHz // pag. 110 pdf. PIC16LF1937
  41. TRISB = 0b00000000; // tot Portul B este de iesire
  42. PORTB = 0b00000000; // initializez PORTB cu valori de 0 logic
  43. OPTION_REG = 0b00000011; // Frecv. intrare T0 = Frecv. Osc./4 (=4MHz/4) = 1MHz
  44. // prescaler=4 => Frecv. T0 = 1MHz/4 = 250KHz (sau T=4us)
  45. TMR0IF = 0; // Flag ce indica trecerea de la val. max. 255(0xFF) la 0(0x00)
  46. TMR0 = 5; // porneste numararea de la valoarea 5; pana la maxim (255) mai sunt 250
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement