pegel.asm


1
; **************************************************
2
; *                                                *
3
; * Erste Version Rohwert bzw. geschiftet ausgeben *
4
; *                                                *
5
; *                                                *
6
; *                                   8.1.05 01:04 *
7
; *                                                *
8
; **************************************************
9
.include "4433def.inc"        ;ggf. anpassen 
10
.def temp = r16 
11
.def temp2 = r17
12
.def display = r18
13
.def lowByte = r24 
14
.def highByte = r25 
15
.def Delay =r19 ; Delay variable 1
16
.def Delay2 =r20 ; Delay variable 2  
17
.def Delay3 =r21 
18
19
.CSEG
20
.ORG $0000
21
;
22
; Reset- und Interrupt-Vektoren
23
;
24
  rjmp Start ; Reset-vector
25
  reti ; External Interrupt Request 0
26
  reti ; External Interrupt Request 1
27
  reti ; Timer/Counter1 Capture event
28
  reti ; Timer/Counter1 Compare match A!!!!!!!!!
29
  reti ; Timer/Counter1 Compare match B
30
  reti ; Timer/Counter1 Overflow
31
  reti ; Timer/Counter0 Overflow
32
  reti ; SPI Serial Transfer complete
33
  reti ; Uart Rx char available
34
  reti ; Uart Tx data register empty
35
  reti ; Uart Tx complete
36
  reti ; Analog comparator
37
38
39
; ************** Interrupt service routines ********
40
; ************** Main Loop ********
41
Start:
42
;  ldi temp1,low(RAMEND)
43
;  out SPL,temp1
44
;  ldi temp1,high(RAMEND)
45
;  out SPH,temp1  ;init Stack Pointer
46
47
        ldi temp, RAMEND  ;Stackpointer initialisieren 
48
        out SPL, temp 
49
50
        ldi temp, 0xFF    ;Port D = Ausgang 
51
        out DDRD, temp 
52
        
53
        ldi temp, 5
54
        out ADMUX, temp ;Channel5
55
  ldi temp, ((1<<ADEN) | (1<<ADSC) | (1<<ADFR)) + 7
56
  out ADCSR, temp
57
58
loop:
59
        sbi ADCSR, ADIF
60
61
wait1:
62
  sbis ADCSR, ADIF
63
  rjmp wait1
64
  sbi ADCSR, ADIF
65
wait2:
66
  sbis ADCSR, ADIF
67
  rjmp wait2
68
  ;ADC einlesen
69
  in lowByte, ADCL
70
  in highByte, ADCH
71
72
  ;zweimal nach rechts schieben über carry macht aus 10-bit-Wert einen 8-bit-Wert
73
  ;damit er an einem Port angezeigt werden kann
74
  ror highByte
75
  ror lowByte
76
  ror highByte
77
  ror lowByte
78
  ;Differenz von der 'Mitte' bilden
79
  mov temp, lowByte
80
  ldi temp2, 128
81
  sbc temp, temp2
82
  ;Vorzeichen löschen
83
  andi temp, 0x7f 
84
    
85
        ;Anzeige auf ein paar hohe Bits zurechtstutzen
86
;  clc
87
;  ror temp
88
89
  rjmp disp
90
91
;******* wird momentan übersprungen bis disp:
92
  andi temp, 0x07
93
  ldi display, 0x01
94
  
95
shift:
96
  dec temp
97
  breq fertsch
98
  clc
99
  rol display
100
  rjmp shift
101
fertsch:
102
  mov temp, display    
103
  
104
disp:
105
  com Temp
106
  out PORTD, temp; Wert über LEDs anzeigen
107
  ;rjmp loop  
108
  
109
110
DLY:
111
  dec Delay
112
  brne DLY
113
  dec Delay2
114
  brne DLY
115
  rjmp loop ; Repeat loop forever.include "lcd-routines.asm"            ;LCD-Routinen werden hier eingefügt