1 | ;Drehzahl.a51 ********April07*************************************************************
|
2 | ;*********Programm zum Auslesen der Lüftergeschwindigkeiten und ausgeben über LCD
|
3 | ;*********Hilfsprogramm LCDhilf.a51 wird verwendet
|
4 | ;*********Übergaberegister sin Akku und Datenpointer
|
5 | ;*****************************************************************************************
|
6 |
|
7 | include C51ED2.inc ;Registeradressen einbinden
|
8 |
|
9 | EXTERN CODE initLCD,loeschen,loeschzeile1,loeschzeile2,textzeile1,textzeile2,cursorpos
|
10 | EXTERN CODE textaus,zifferaus,hexaus,dezaus
|
11 |
|
12 | code at 0
|
13 | LCALL initLCD
|
14 | MOV R0,#00h ;Register R0 auf 0 setzen
|
15 | CLR A ;Akku löschen
|
16 |
|
17 | Marke2: MOV R7,#09h ;1. SChlefe der verschachtelten SChlefe auf 09h setzen
|
18 | Marke3: MOV R6,#0FFh ;2. Schleife auf FFh setzen
|
19 | Marke4: MOV R5,#0FFh ;3. Schleife auf FFh setzen => ergibt zusammen 3 Sekunden
|
20 | Zeit: JB p3.7,Marke ;Sprung zur Marke "Marke" Wenn Port 3.7 = 1
|
21 | Hi: DJNZ R5,Zeit ;Register R5 Dekrementieren unds Sprung zur Marke Zeit
|
22 | DJNZ R6,Marke4 ;Register R6 Dekrementieren unds Sprung zur Marke Marke4
|
23 | DJNZ R7,Marke3 ;Register R7 Dekrementieren unds Sprung zur Marke Marke3
|
24 |
|
25 | LCALL loeschen ;LCD löschen
|
26 |
|
27 | MOV R0,A ;Akkuinhalt in Register R0 schreiben
|
28 | MOV A,#00h ;Position 1 in Zeile eins mit 00h in Akku laden
|
29 | lcall cursorpos ;Cursor verschieben
|
30 | MOV A,R0 ;Inhalt Register R0 zurück in Akku laden
|
31 | lcall dezaus ;Inhalt Akku ausgeben (1/10 Drehzahl)
|
32 | MOV A,#03h ;Position 4 in Zeile eins mit 03h in Akku laden
|
33 | lcall cursorpos ;Cursor verschieben
|
34 | MOV A,#0 ;Konstante 0 in Akku laden
|
35 | lcall zifferaus ;Akkuinhalt als Ziffer Ausgeben
|
36 | MOV R0,#00h ;Register R0 auf 0 setzen
|
37 | CLR A ;Akku löschen
|
38 |
|
39 | SJMP Marke2 ;Rücksprung zum Programmanfang
|
40 |
|
41 | Marke: ADD A,#01h ;Akku um 1 erhöhen
|
42 | SJMP Hi ;Sprung zurück in die Schleife
|
43 |
|
44 | END
|