ADC_Wandlung.asm
1 | .include "m16def.inc"
| 2 | .include "routines.inc"
| 3 |
| 4 | .def temp = r16
| 5 |
| 6 | ldi temp, 0xFF
| 7 | out DDRB, temp ;Out-Port klarmachen
| 8 |
| 9 |
| 10 |
| 11 | ;Stack Init
| 12 |
| 13 | ldi temp, LOW (RAMEND)
| 14 | out SPL,temp
| 15 | ldi temp, HIGH(RAMEND)
| 16 | out SPH,temp
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 | ;----ADCSR REGISTER einstellen---
| 23 | ldi temp, 0b10000101
| 24 | out ADCSR, temp
| 25 | ;--------------------------------
| 26 |
| 27 |
| 28 | ;----ADMUX auf KANAL 1 einstellen---------------
| 29 | ;----und ADLAR (Bit 5) setzend--
| 30 | ;----und wir einfach ADCH als 8 Bit auslesen----
| 31 | ;----können-------------------------------------
| 32 | ldi temp, 0b00100001
| 33 | out ADMUX, temp
| 34 | ;-----------------------------------------------
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 | sbi ADCSR, ADSC ;Eine Dummy einlesung starten
| 42 | dummy: sbis ADCSR, ADIF ;Warten auf ADIF
| 43 | rjmp Dummy
| 44 |
| 45 |
| 46 |
| 47 |
| 48 |
| 49 | mainloop:
| 50 |
| 51 | SetZPointer(datamain*2)
| 52 | sbi ADCSR, ADSC ;set bit ADSC=Start conversion
| 53 |
| 54 |
| 55 | adifwait: sbis ADCSR, ADIF ;Warten auf den Interrupt flag
| 56 | rjmp adifwait
| 57 |
| 58 |
| 59 |
| 60 | in temp ,ADCL ;Einlesen
| 61 | in temp2 ,ADCH
| 62 |
| 63 |
| 64 |
| 65 |
| 66 | mov temp3, temp2 ;durch 32 (2 hoch 5) teilen
| 67 |
| 68 | lsr temp3
| 69 | lsr temp3
| 70 | lsr temp3
| 71 | lsr temp3
| 72 | lsr temp3
| 73 |
| 74 |
| 75 |
| 76 | setZloop: cpi temp3, 0 ;den ZPointer so lange erhöhen, bis
| 77 | breq portout ;er auf der richtigen Stelle steht
| 78 | IncZPointer
| 79 | dec temp3
| 80 | rjmp setZloop
| 81 |
| 82 |
| 83 | portout: lpm ;ausgabe des aus ADCH gelesenen Wertes
| 84 | mov temp, r0
| 85 | com temp
| 86 |
| 87 |
| 88 | out PORTB, temp ;leds aufleuchten lassen
| 89 |
| 90 |
| 91 | rjmp mainloop ;und wieder von vorn
| 92 |
| 93 |
| 94 |
| 95 | ;----Datablock im Flashrom----------------------
| 96 | ;----Lookup table-------------------------------
| 97 |
| 98 |
| 99 | datamain:
| 100 | .db 0b00000000,0
| 101 | .db 0b00000001,0
| 102 | .db 0b00000011,0
| 103 | .db 0b00000111,0
| 104 | .db 0b00001111,0
| 105 | .db 0b00011111,0
| 106 | .db 0b00111111,0
| 107 | .db 0b01111111,0
|
|