Facebook
From a, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 225
  1. .include "m32def.inc"
  2. .list
  3.  
  4. .cseg
  5. .org 0
  6.  
  7. //tablica wektorów przerwań  
  8. jmp start                      
  9. .org 0x0002    
  10. rjmp EXT_INT0; External Interrupt Request 0
  11.  
  12. start: //początek programu
  13. cli        //wyłączenie przerwań
  14. ldi R16, HIGH(RAMEND)
  15. out SPH, R16
  16. ldi R16, LOW(RAMEND)
  17. out SPH, R16
  18.  
  19.  
  20. ldi R16,0b11111111;             //załadowanie do rejestru jedynek
  21. out DDRC,R16;                   // ustawienie portu C na wyjście(cyfry na jednej kolumnie wyświetlacza)
  22. ldi R17,1;                              // załadowanie do rejestru 1
  23. //sbi DDRA,1;                           //ustawienie linii do której podłączona jest kolumna wyswietlacza 7-segmentowego jako wyjście        
  24. //sbi PORTA,1;                  //włączenie kolumny wyświetlacza
  25. ldi R18,0b0                             //
  26. sbi DDRA,1;                             // ustawienie na wyjście linii 0 Portu A do której jest podłączona dioda D2
  27.  
  28.         cbi DDRA, 0      ; ustawia port A0 na wejscie
  29.     sbi PORTA, 0     ; podciaganie rezystoru
  30.    // cbi DDRC, 6      ; ustawia port B na wejscie
  31.     //sbi PORTC, 6     ; podciaganie rezystoru
  32.  
  33. sei             //włączenie przerwań
  34.  
  35.                
  36.  
  37.  
  38.  
  39.  
  40.  
  41. ldi R16, (1<<ISC01)      //ustawienie sygnału wyzwalającego przerwanie INT0- zbocze opadające
  42. out MCUCR, R16         
  43.  
  44. ldi R16, (1<<INT0)      //zezwolenie na przerwanie od INT0
  45. out GICR, R16
  46.  
  47. cbi PORTA, 1            //zgaś diodę
  48.  
  49. //program główny
  50. main:
  51.  
  52. out PortC,R17;          //ustawienie zera na port połączony do wyświetlacza 7 segmentowego
  53. rol R17;                        // przesuwanie zera w kolumnie
  54. ; =============================
  55. ;    podprogram opózniający
  56. ;          200ms:
  57. ; -----------------------------
  58.     ldi  r18, 2
  59.     ldi  r19, 4
  60.     ldi  r20, 187
  61. L1: dec  r20
  62.     brne L1
  63.     dec  r19
  64.     brne L1
  65.     dec  r18
  66.     brne L1
  67.     nop
  68. rjmp main
  69.  
  70.  
  71.  
  72.  
  73. EXT_INT0:                                               //procedura obsługi przerwania INT0
  74. sbic PINA,PINA0
  75.         sbi PORTA, 1
  76. //sbic PINA,PINA2
  77.  
  78. reti                   
  79.