Guest User

Working Frequency

a guest
Jun 10th, 2013
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;------------------------------------------------------------------------
  2. ; Reset and Interrupt Vector            ;VNr.  Beschreibung
  3.             rjmp    main                ;1   POWER ON RESET
  4.             reti                        ;2   Int0-Interrupt
  5.             reti                        ;3   Int1-Interrupt
  6.             reti                        ;4   TC2 Compare Match
  7.             reti                        ;5   TC2 Overflow
  8.             reti                        ;6   TC1 Capture
  9.             reti                        ;7   TC1 Compare Match A
  10.             reti                        ;8   TC1 Compare Match B
  11.             reti                        ;9   TC1 Overflow
  12.             reti                        ;10  TC0 Overflow
  13.             reti                        ;11  SPI, STC Serial Transfer Complete
  14.             reti                        ;12  UART Rx Complete
  15.             reti                        ;13  UART Data Register Empty
  16.             reti                        ;14  UART Tx Complete
  17.             reti                        ;15  ADC Conversion Complete
  18.             reti                        ;16  EEPROM Ready
  19.             reti                        ;17  Analog Comparator
  20.             reti                        ;18  TWI (I2C) Serial Interface
  21.             reti                        ;19  Store Program Memory Ready
  22. ;------------------------------------------------------------------------
  23. ; Start, Power On, Reset
  24. main:       ldi     r16,lo8(RAMEND)
  25.             out     SPL,r16
  26.             ldi     r16,hi8(RAMEND)
  27.             out     SPH,r16
  28.            
  29.             ;PORT B2 = OUTPUT
  30.             ;SUMMER
  31.             sbi DDRB,2
  32.  
  33.             ;PORTC  0 = INPUT
  34.             ;POT. 1[C0 / ADC0]
  35.             cbi     DDRC,0
  36.             cbi     DDRC,1
  37.             ;PULLUP
  38.             sbi     DDRC,0
  39.             sbi     DDRC,1
  40.            
  41.  
  42.             ;Initialisierung ADC [ADEN = 1 : Conversion enabled]
  43.             ldi  r16, (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)
  44.             out  ADCSR, r16
  45. ;------------------------------------------------------------------------
  46. mainloop:   wdr
  47.             ;Channel[0 = ADC0, 1 = ADC1, 2 = ADC2 ...]
  48.            
  49.            
  50.            
  51.             ldi r19,20
  52.             add r19,r1
  53.             mul r19,2
  54.             doit:
  55.                   rcall adco1
  56.                   ldi r16,4
  57.                   out PORTB,r16
  58.                   rcall waitpotims
  59.                   ldi r16,0
  60.                   out PORTB,r16
  61.                   rcall waitpotims
  62.  
  63.                   dec r19
  64.                   tst r19
  65.                   brne doit
  66.  
  67.             ldi     ZL,lo8(pot1)
  68.             ldi     ZH,hi8(pot1)
  69.             mov     r25,r1
  70.             rcall   displayTextNumber
  71.            
  72.             rcall wait500ms
  73.  
  74.             ldi r19,20
  75.             add r19,r1
  76.             mul r19,2
  77.             doagain:
  78.                   rcall adco2
  79.  
  80.                   ldi r16,4
  81.                   out PORTB,r16
  82.                   rcall waitpotims
  83.                   ldi r16,0
  84.                   out PORTB,r16
  85.                   rcall waitpotims
  86.  
  87.                   dec r19
  88.                   tst r19
  89.                   brne doagain
  90.  
  91.             ldi     ZL,lo8(pot2)
  92.             ldi     ZH,hi8(pot2)
  93.             mov     r25,r1
  94.             rcall   displayTextNumber
  95.  
  96.             rcall wait500ms
  97.  
  98.  
  99. rjmp mainloop
  100.  
  101. adco1:
  102.            
  103.             ldi  r16, (1<<REFS0)// set channel
  104.             out  ADMUX, r16
  105.             sbi  ADCSRA, ADSC              // start conversion
  106.  
  107.             wait_for_conv_finished:
  108.             sbic ADCSRA, ADSC  //bit ADSC goes low after conversion done        
  109.             rjmp wait_for_conv_finished
  110.  
  111.             in   r1, ADCL
  112.             in   r2, ADCH
  113.  
  114.             ret
  115.  
  116. adco2:
  117.            
  118.             ldi  r16, (1<<REFS0) | 1// set channel
  119.             out  ADMUX, r16
  120.             sbi  ADCSRA, ADSC              // start conversion
  121.  
  122.             wait_for_conv_finished2:
  123.             sbic ADCSRA, ADSC  //bit ADSC goes low after conversion done        
  124.             rjmp wait_for_conv_finished2
  125.  
  126.             in   r1, ADCL
  127.             in   r2, ADCH
  128.             ret
  129.  
  130.  
  131. waitpotims: add   r16,r1       ;50 * 10ms = 0,5s
  132.             rcall wait10ms
  133.             ret
  134.  
  135. wait500ms:  ldi   r16,50       ;50 * 10ms = 0,5s
  136.             rcall wait10ms
  137.             ret
  138.  
  139. wait10ms:   tst   r16
  140.             breq  wait10msc
  141.             push  r16  
  142.             push  r24
  143.             push  r25
  144. wait10ms1:  wdr
  145.             ldi   r24,lo8(3686400/3200)
  146.             ldi   r25,hi8(3686400/3200)
  147. wait10ms2:  sbiw  r24,1
  148.             brne  wait10ms2
  149.             dec   r16
  150.             brne  wait10ms1
  151.             pop   r25  
  152.             pop   r24
  153.             pop   r16
  154. wait10msc:  ret
  155.  
  156.  
  157. #include "lcd_display.s"                  
  158.            .text
  159. pot1:      .string  "Pot.1: "      
  160. pot2:      .string  "Pot.2: "
Advertisement
Add Comment
Please, Sign In to add comment