Ich muss fürs Abitur eine Jahresarbeit machen und bei der muss ich eine Stoppuhr in Assembler programmieren, mit RIDE!!
Ich habe schon Timer und Interrupter soweit schon programmiert, aber ich weiß nicht wie man die Matrix-Tastatur und die LCD-Anzeige ansteuert!
Könnte mir da jemand helfen?
Ist wichtig für mein Abi und ich habe nurnoch eine Woche dafür Zeit
Das ist das was ich bisjetzt habe, ist das bis jetzt richtig? und könnte das jemand vervollständigen?
;timer2.a51
;Timer0-Interrupt alle 65 ms
;Ausgabe Lauflicht LEDs an P2
$include (reg52.inc)
ORG 0000h
ljmp init ;Das eigentliche Programm beginnt hinter
ORG 000Bh ;den Interrupt-Einsprung-Adressen
ljmp count_isr
;******* Initialisierung *************************************************************************************
init: mov TMOD, #00000010b
mov TL0, #6d
mov TH0, #6d
mov TCON, #00010000b
SETB ET0
SETB EA
;******** Hauptprogramm *************************************************************************
haupt: sjmp haupt ;Warten auf Interrupts
count_isr: INC R0
CJNE R0, #4d, marke1
MOV R0, #0h ;r0 auf 0 zurück setzen
INC R1 ;1/1000sec
CJNE R1, #10d, marke1 ;solange r1 zählen bis 10mal durchgelaufen und somit 1/100sec gedauert hat
MOV R1, #0h ;r1 auf 0 zurück setzen
INC R2 ;1/100
CJNE R2, #10d, marke1 ;solange r2 zählen bis 10mal durchgelaufen und somit 1/10sec gedauert hat
MOV R2, #0h ;r2 auf 0 zurück setzen
INC R3 ;1/10
CJNE R3, #10d, marke1 ;solange r3 zählen bis 10mal durchgelaufen und somit 1sec gedauert hat
;r3 und somit die 1/10sec ausgeben
MOV R3, #0h ;r3 auf 0 zurück setzen
INC R4 ;sec
CJNE R4, #60d, marke1 ;solange r4 zählen bis 60mal durchgelaufen und somit 1min gedauert hat
;r4 und somit die sec ausgeben
MOV R4, #0h ;r4 auf 0 zurück setzen
INC R5 ;min
CJNE R5, #60d, marke1 ;solange r5 zählen bis 60mal durchgelaufen und somit 1h gedauert hat
;r5 und somit die min ausgeben
MOV R5, #0h ;r5 auf 0 zurück setzen
INC R6 ;min
CJNE R6, #60d, marke1 ;solange r6 zählen bis 24mal durchgelaufen und somit 1d gedauert hat
;r6 und somit die h ausgeben
MOV R6, #0h ;r6 auf 0 zurück setzen
marke1: RETI
END
Zu den Hardwareangaben:
Mikrocontroller 8051
LCD 16 Zeichen Breit und 2 Zeilen hoch
Normale Matrix-Tastatur 0-9 Zeichen und Stern und Raute
Danke schonmal im Vorraus!
PS: Falls es im Falschen Thread ist, dann bitte verschieben diesen Post in den richtigen Bereich, wusste nicht wo es hin gehört!!
mfg
Michael