displaytest2313.asm


1
.include "2313def.inc"         
2
3
.def temp1 = r16
4
.def temp2 = r17
5
.def temp3 = r18
6
.def text = r0
7
8
; Display 1.Zeile=$80
9
; Display 2.Zeile=$C0
10
; Display 3.Zeile=$94
11
; Display 4.Zeile=$D4
12
13
    rjmp reset ; Reset-Vector
14
    reti       ; Ext Int 0, nicht benutzt
15
    reti       ; Ext Int 1, nicht benutzt
16
    reti       ; Timer 1 Capture Event, nicht benutzt
17
    reti       ; Time@wee2423423r 1 Compare Match
18
    reti       ; Timer 1 Overflow, nicht benutzt
19
    reti       ; Timer 0 Overflow, nicht benutzt
20
    reti       ; UART Rx Complete
21
    reti       ; UART Tx data register empty, nicht benutzt
22
    reti       ; UART Tx All sent, nicht benutzt
23
24
25
reset:
26
    ldi temp1,RAMEND     ; Init stack pointer im SRAM
27
    out SPL,temp1       ; nur 8-Bit-Pointer bei 2313
28
    ldi temp1, 0b00001111    ; Port D = Ausgang
29
      out DDRB, temp1      ;Port B ist jetzt Ausgang
30
    ldi temp1, 0b11110000
31
    out portb,temp1
32
    ldi r16,  $ff  ;Port D durch Ausgabe von 0x00 ins
33
    out DDRD, r16       ;Richtungsregister DDRD als Eingang konfigurieren
34
    ldi r22,0
35
36
    rcall lcd_init
37
    rcall lcd_clear
38
39
40
      ldi ZH,high(2*txtstart1) ; Sende Text 
41
      ldi ZL,low (2*txtstart1)
42
      rcall lctext
43
      ldi temp1, $C0       ; 2. Zeile
44
          rcall lcd_command
45
      ldi ZH,high(2*txtstart2) ; Sende Text 
46
      ldi ZL,low (2*txtstart2)
47
      rcall lctext
48
    
49
      rcall zeit
50
      rcall lcd_clear
51
52
      ldi ZH,high(2*txtstart3) ; Sende Text 
53
      ldi ZL,low (2*txtstart3)
54
      rcall lctext
55
      ldi temp1, $C0       ; 2. Zeile
56
          rcall lcd_command
57
      ldi ZH,high(2*txtstart4) ; Sende Text 
58
      ldi ZL,low (2*txtstart4)
59
      rcall lctext
60
61
      rcall zeit
62
      rcall lcd_clear
63
64
      ldi ZH,high(2*initiate) ; Sende Text 
65
      ldi ZL,low (2*initiate)
66
      rcall lctext
67
      rcall zeit
68
      rcall lcd_clear
69
      rjmp ja1
70
71
zeit2:    ldi r19, 100    ; Zeitschleife
72
time6:    ldi r20, 50
73
time5:    ldi r21, 50
74
time4:    dec r21
75
      brne time4
76
      dec r20
77
      brne time5
78
      dec r19
79
      brne time6
80
      ret
81
82
; ------- Hier läuft das Hauptprogramm ---------------------------------------------
83
84
Start:    rjmp taster
85
      rjmp start
86
87
; --------- Hier wird meine Taster und Eingange abgefragt -------------
88
      
89
taster:    sbis PINB, 4
90
      rjmp vorlauf
91
      sbis PINB, 5
92
      rjmp ruecklauf
93
      rjmp Start
94
    
95
ja1:    rcall lcd_clear
96
      rcall clean
97
      ldi ZH,high(2*scart1) ; Sende Text 
98
      ldi ZL,low (2*scart1)
99
      rcall lctext
100
      ldi temp1, $c0  
101
          rcall lcd_command
102
      ldi ZH,high(2*scart11) ; Sende Text 2.Zeile
103
      ldi ZL,low (2*scart11)
104
      rcall lctext
105
      rcall zeit2
106
      rjmp Start
107
      
108
ja2:    rcall lcd_clear
109
      rcall clean
110
      sbi PORTB, 0
111
      ldi ZH,high(2*scart1) ; Sende Text 
112
      ldi ZL,low (2*scart1)
113
      rcall lctext
114
      ldi temp1, $c0  
115
          rcall lcd_command
116
      ldi ZH,high(2*scart22) ; Sende Text 2.Zeile
117
      ldi ZL,low (2*scart22)
118
      rcall lctext
119
      ;rcall zeit2
120
      rjmp Start
121
      
122
ja3:    rcall lcd_clear
123
      rcall clean
124
      sbi PORTB, 0
125
      sbi PORTB, 1
126
      ldi ZH,high(2*scart3) ; Sende Text 
127
      ldi ZL,low (2*scart3)
128
      rcall lctext
129
      ldi temp1, $c0  
130
          rcall lcd_command
131
      ldi ZH,high(2*scart11) ; Sende Text 2.Zeile
132
      ldi ZL,low (2*scart11)
133
      rcall lctext
134
      rjmp Start
135
      
136
ja4:    rcall lcd_clear
137
      rcall clean
138
      sbi PORTB, 2
139
      ldi ZH,high(2*scart3) ; Sende Text 
140
      ldi ZL,low (2*scart3)
141
      rcall lctext
142
      ldi temp1, $c0  
143
          rcall lcd_command
144
      ldi ZH,high(2*scart22) ; Sende Text 2.Zeile
145
      ldi ZL,low (2*scart22)
146
      rcall lctext
147
      rjmp Start
148
      
149
vorlauf:  inc r22
150
      cpi r22, 0
151
      breq ja1
152
      cpi r22, 1
153
      breq ja2
154
      cpi r22, 2
155
      breq ja3
156
      cpi r22, 3
157
      breq ja4
158
      cpi r22, 4
159
      breq ueberlauf
160
      rjmp Start
161
162
ruecklauf:  dec r22
163
      cpi r22, 0
164
      breq ja1
165
      cpi r22, 1
166
      breq ja2
167
      cpi r22, 2
168
      breq ja3
169
      cpi r22, 3
170
      breq ja4
171
      cpi r22, 255
172
      breq ueberlauf2
173
      rjmp Start
174
175
ueberlauf:  ldi r22, 3
176
      rjmp Start
177
178
ueberlauf2:  ldi r22, 0
179
      rjmp Start
180
181
clean:    cbi PORTB, 0
182
      cbi PORTB, 1
183
      cbi PORTB, 2
184
      cbi PORTB, 3
185
      ret
186
187
warte1:    sbis PINB, 4
188
      rjmp warte1
189
      ret
190
warte2:    sbis PINB, 5
191
      rjmp warte2
192
      ret    
193
; -------- Zeitschleife Eingänge und Taster ----------------------
194
195
zeit:    ldi r19, 255    ; Zeitschleife
196
time3:    ldi r20, 200
197
time2:    ldi r21, 150
198
time1:    dec r21
199
      brne time1
200
      dec r20
201
      brne time2
202
      dec r19
203
      brne time3
204
      ret
205
206
207
208
; -------- Hier wird mein Text für LCD aus der Datenbank geholt ----------
209
210
lctext:    lpm          ; Lese Zeichen
211
lcnext:    mov temp1,r0      ; Kopiere Zeichen in Senderegister
212
      rcall lcd_data      ; Unterprogramm aufrufen,Text ausgeben
213
      adiw ZL, 1       ; Zeiger auf nächstes Zeichen
214
      lpm          ; Lese Zeichen
215
      tst r0        ; Ergebnis im Register R0 hat Null erreicht?
216
      brne lcnext      ; Nächstes Zeichen
217
      ret          ; Zurück zum Sender
218
219
; --------- Hier stehen meine Texte --------------------------------------
220
.include "lcd-routines.asm"
221
222
txtstart1:
223
.DB "Cordula  Esser`s",0
224
225
txtstart2:
226
.DB "Scart Umschalter",0
227
228
txtstart3:
229
.DB "  Copyright by  ",0
230
231
txtstart4:
232
.DB "  Denk Andreas  ",0
233
234
scart1:
235
.DB "  Sat Receiver",0
236
237
scart11:
238
.DB "   Signal RGB",0
239
240
scart22:
241
.DB "Signal Composite",0
242
243
initiate:
244
.DB ">Initialisierung",0
245
246
scart3:
247
.DB "   DVD Player",0