summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefanie Eckner <stefanie@eckner.net>2020-11-08 20:39:18 +0100
committerStefanie Eckner <stefanie@eckner.net>2020-11-08 20:39:18 +0100
commite5ad94b6e2bae07046104f98e01fbc6281512528 (patch)
tree802c0b5939fd4dad1e6b248f2aa5654501e9b1c6
parent40c51f5b8d982a812ca338847818f5ce9de4e8c4 (diff)
downloadUhr-e5ad94b6e2bae07046104f98e01fbc6281512528.tar.xz
Binaeruhr.asm: Sekunde ausrichten, wenn Funk ok war
-rw-r--r--Binaeruhr.asm21
1 files changed, 15 insertions, 6 deletions
diff --git a/Binaeruhr.asm b/Binaeruhr.asm
index 61d0f97..9aec076 100644
--- a/Binaeruhr.asm
+++ b/Binaeruhr.asm
@@ -163,7 +163,15 @@ Funk_initialisieren:
neue_Funksekunde:
-; TODO: Sekunde ausrichten, wenn Funk ok war
+ sbrs Status,2
+ rjmp nach_Funkflanke
+
+ mov r16,nTicsL
+ sub r16,TicsL ; wie viele TicsL bis zur nächsten Sekunde (nach Quarz)
+ mov nTicsL,TicsL ; wir setzen es auf "jetzt"
+ cpi r16,50 ; wurde die Sekunde durch den Quarz schon gezählt?
+ brcs nach_Funkflanke ; branch, wenn "noch nicht gezählt"
+ subi nTicsL,(256-100) ; wir setzen es jetz auf "in 100 TicsL"
nach_Funkflanke:
@@ -174,12 +182,12 @@ nach_Funkflanke:
mov r17,TicsL
subi r17,0x80
cp r16,r17
- brcc main_loop
+ brcs neue_Sekunde
+ rjmp main_loop
neue_Sekunde:
- ldi r16,100
- add nTicsL,r16
+ subi nTicsL,(256-100)
sbis PIND,2
rjmp neue_Stunde
@@ -228,11 +236,11 @@ neue_Funkminute:
mov r18,r16
rcall checksum
- brts Funk_initialisieren
+ brts neue_Funkminute_Ende
mov r18,r17
rcall checksum
- brts Funk_initialisieren
+ brts neue_Funkminute_Ende
mov r18,r16
cbr r18,0x80
@@ -248,6 +256,7 @@ neue_Funkminute:
sbr Status,0x04 ; die empfangene Minute ist ok
+neue_Funkminute_Ende:
rjmp Funk_initialisieren
neue_Minute: