diff options
author | Stefanie Eckner <stefanie@eckner.net> | 2020-11-08 19:47:27 +0100 |
---|---|---|
committer | Stefanie Eckner <stefanie@eckner.net> | 2020-11-08 19:47:27 +0100 |
commit | 921c05e62694c26211b7c5111de44bfde6dec791 (patch) | |
tree | be752d28872a532d8587e749d540f75ff29472dc | |
parent | f9e2727c85e22835d8751efa15a9eb86c5bf2535 (diff) | |
download | Uhr-921c05e62694c26211b7c5111de44bfde6dec791.tar.xz |
Binaeruhr.asm: Funk wird nun ordnungsgemäß zum Minutenende übernommen
-rw-r--r-- | Binaeruhr.asm | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/Binaeruhr.asm b/Binaeruhr.asm index 9ff6e93..2a8919f 100644 --- a/Binaeruhr.asm +++ b/Binaeruhr.asm @@ -224,8 +224,25 @@ neue_Funkminute: ror r17 ror r16 -; TODO: Minute prüfen und übernehmen -; TODO: Stunde prüfen und übernehmen + cbr r17,0x80 + + mov r18,r16 + rcall checksum + brts Funk_initialisieren + + mov r18,r17 + rcall checksum + brts Funk_initialisieren + + mov r18,r16 + cbr r18,0x80 + rcall bcd_to_bin + mov Minute,r18 + + mov r18,r17 + cbr r18,0xc0 + rcall bcd_to_bin + mov Stunde,r18 clr Sekunde @@ -301,3 +318,29 @@ nach_Funkeinfuegung: out SREG,r16 pop r16 reti + +bcd_to_bin: ; input/output: r18; tmp: r19 + mov r19,r18 + cbr r18,0xf0 + swap r19 + cbr r19,0xf0 + lsl r19 + add r18,r19 + lsl r19 + lsl r19 + add r18,r19 + ret + +checksum: ; input: r18; tmp: r19; output: T-Flag + mov r19,r18 + swap r19 + eor r18,r19 + mov r19,r18 + ror r19 + ror r19 + eor r18,r19 + mov r19,r18 + ror r19 + eor r18,r19 + bst r18,0 + ret |