Advertisement
Guest User

Working Frequency

a guest
Jun 10th, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. main:       ldi     r16,lo8(RAMEND)
  2.             out     SPL,r16
  3.             ldi     r16,hi8(RAMEND)
  4.             out     SPH,r16
  5.            
  6.             ;PORT B2 = OUTPUT
  7.             ;SUMMER
  8.             sbi DDRB,2
  9.  
  10.             ;PORTC  0 = INPUT
  11.             ;POT. 1[C0 / ADC0]
  12.             cbi     DDRC,0
  13.             cbi     DDRC,1
  14.             ;PULLUP
  15.             sbi     DDRC,0
  16.             sbi     DDRC,1
  17.            
  18.  
  19.             ;Init ADC [ADEN = 1 : Conversion enabled]
  20.             ldi  r16, (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)
  21.             out  ADCSR, r16
  22. ;------------------------------------------------------------------------
  23. mainloop:   wdr
  24.             ;Channel[0 = ADC0, 1 = ADC1, 2 = ADC2 ...]
  25.            
  26.            
  27.            
  28.             ldi r19,20
  29.             add r19,r1
  30.             mul r19,2
  31.             doit:
  32.                   rcall adco1
  33.                   ldi r16,4
  34.                   out PORTB,r16
  35.                   rcall waitpotims
  36.                   ldi r16,0
  37.                   out PORTB,r16
  38.                   rcall waitpotims
  39.  
  40.                   dec r19
  41.                   tst r19
  42.                   brne doit
  43.  
  44.             ldi     ZL,lo8(pot1)
  45.             ldi     ZH,hi8(pot1)
  46.             mov     r25,r1
  47.             rcall   displayTextNumber
  48.            
  49.             rcall wait500ms
  50.  
  51.             ldi r19,20
  52.             add r19,r1
  53.             mul r19,2
  54.             doagain:
  55.                   rcall adco2
  56.  
  57.                   ldi r16,4
  58.                   out PORTB,r16
  59.                   rcall waitpotims
  60.                   ldi r16,0
  61.                   out PORTB,r16
  62.                   rcall waitpotims
  63.  
  64.                   dec r19
  65.                   tst r19
  66.                   brne doagain
  67.  
  68.             ldi     ZL,lo8(pot2)
  69.             ldi     ZH,hi8(pot2)
  70.             mov     r25,r1
  71.             rcall   displayTextNumber
  72.  
  73.             rcall wait500ms
  74.  
  75.  
  76. rjmp mainloop
  77.  
  78. adco1:
  79.            
  80.             ldi  r16, (1<<REFS0)// set channel
  81.             out  ADMUX, r16
  82.             sbi  ADCSRA, ADSC              // start conversion
  83.  
  84.             wait_for_conv_finished:
  85.             sbic ADCSRA, ADSC  //bit ADSC goes low after conversion done        
  86.             rjmp wait_for_conv_finished
  87.  
  88.             in   r1, ADCL
  89.             in   r2, ADCH
  90.  
  91.             ret
  92.  
  93. adco2:
  94.            
  95.             ldi  r16, (1<<REFS0) | 1// set channel
  96.             out  ADMUX, r16
  97.             sbi  ADCSRA, ADSC              // start conversion
  98.  
  99.             wait_for_conv_finished2:
  100.             sbic ADCSRA, ADSC  //bit ADSC goes low after conversion done        
  101.             rjmp wait_for_conv_finished2
  102.  
  103.             in   r1, ADCL
  104.             in   r2, ADCH
  105.             ret
  106.  
  107.  
  108. waitpotims: add   r16,r1       ;50 * 10ms = 0,5s
  109.             rcall wait10ms
  110.             ret
  111.  
  112. wait500ms:  ldi   r16,50       ;50 * 10ms = 0,5s
  113.             rcall wait10ms
  114.             ret
  115.  
  116. wait10ms:   tst   r16
  117.             breq  wait10msc
  118.             push  r16  
  119.             push  r24
  120.             push  r25
  121. wait10ms1:  wdr
  122.             ldi   r24,lo8(3686400/3200)
  123.             ldi   r25,hi8(3686400/3200)
  124. wait10ms2:  sbiw  r24,1
  125.             brne  wait10ms2
  126.             dec   r16
  127.             brne  wait10ms1
  128.             pop   r25  
  129.             pop   r24
  130.             pop   r16
  131. wait10msc:  ret
  132.  
  133.  
  134. #include "lcd_display.s"                  
  135.            .text
  136. pot1:      .string  "Pot.1: "      
  137. pot2:      .string  "Pot.2: "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement