Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #define F_CPU 1000000UL
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4. void ports_init();
  5. void timerCounter0_init();
  6. void blinkBlueLeds();
  7. void blinkGreenLeds();
  8. void blinkYellowLeds();
  9. void blinkRedLeds();
  10. unsigned char blueLedsCounter=1;
  11. unsigned char blueLedsTemp=1;
  12. unsigned char greenLedsCounter=1;
  13. unsigned char greenLedsTemp=16;
  14. unsigned char redLedsCounter=1;
  15.  
  16. int main(void)
  17. {
  18. unsigned char pwmState=0;
  19. ports_init();
  20. timerCounter0_init();
  21. while(1){
  22.         blinkBlueLeds();
  23.         blinkGreenLeds();
  24.         blinkYellowLeds();
  25.         blinkRedLeds();
  26.         //_delay_ms(500);
  27.         if (((PINB & (1<<PB0))==0) && (pwmState==0)){
  28.             OCR0 = (255/3);
  29.             pwmState = 1;
  30.         }
  31.         if (((PINB & (1<<PB0))!=0) && (pwmState==1)){
  32.             OCR0 = 0;
  33.             pwmState = 0;
  34.         }
  35.     }
  36. }
  37.  
  38. void ports_init(){
  39.     DDRA = 0b00011111;
  40.     PORTA= 0b11100000;
  41.     DDRB = 248;
  42.     PORTB= 7;
  43.     DDRC = (1<<PC7)|(1<<PC5)|(1<<PC3)|(1<<PC1);
  44.     PORTC= 0b11011101;
  45.     DDRD = 0xFF;
  46.     PORTD= 0x00;
  47. }
  48.  
  49. void timerCounter0_init(){
  50.     TCNT0= 0x00;
  51.     OCR0 = 0x00;
  52.     TCCR0= (1<<WGM00)|(1<<COM01)|(1<<CS00);
  53. }
  54.  
  55. void blinkBlueLeds(){
  56.     if(blueLedsCounter <= 5){
  57.         PORTA = (224+blueLedsTemp);
  58.         blueLedsCounter++;
  59.         blueLedsTemp *= 2;
  60.     }
  61.    
  62.     else{
  63.         PORTA=(224+1);
  64.         blueLedsCounter = 2;
  65.         blueLedsTemp = 2;
  66.     }
  67. }
  68.  
  69. void blinkGreenLeds(){
  70.     if(greenLedsCounter <= 4){
  71.         PORTB = (7+greenLedsTemp);
  72.         greenLedsCounter++;
  73.         greenLedsTemp *= 2;
  74.     }
  75.     else{
  76.         PORTB=(7+16);
  77.         greenLedsCounter=2;
  78.         greenLedsTemp=32;
  79.     }
  80. }
  81.  
  82. void blinkYellowLeds(){
  83.     PORTC ^= (1<<PC7)|(1<<PC5)|(1<<PC3)|(1<<PC1);
  84. }
  85.  
  86. void blinkRedLeds(){
  87.     if(redLedsCounter<256){
  88.         PORTD = redLedsCounter;
  89.         redLedsCounter++;
  90.     }
  91.     else{
  92.         PORTD=1;
  93.         redLedsCounter=2;
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement