From b0e5d172bf5c0a27f318a0f245a800f69c4a0d9c Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sat, 7 Nov 2020 22:04:50 +0100 Subject: Zeilenumbrüche MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Binaeruhr.asm | 334 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 167 insertions(+), 167 deletions(-) (limited to 'Binaeruhr.asm') diff --git a/Binaeruhr.asm b/Binaeruhr.asm index 9a18a11..8d7eb53 100644 --- a/Binaeruhr.asm +++ b/Binaeruhr.asm @@ -1,167 +1,167 @@ -/* - * Fernbedienung.asm - * - * Created: 08.10.2015 14:35:11 - * Author: Erich - */ - -.INCLUDE "tn2313def.inc" - -.EQU Spalte, 31 ; die anzuzeigende Spalte (als Bitmaske fuer PORTD) -.EQU TicsH, 30 ; 300Hz-Tics High -.EQU TicsL, 29 ; 300Hz-Tics Low -.EQU nTicsL, 28 ; wann ist die naechste Sekunde gemessen in 300Hz-Tics Low -.EQU Status, 27 ; Bit 0: Funksignal - ; Bit 1: kein Fehler im aktuellen Empfang - ; Bit 2: kein Fehler in der aktuellen oder letzten Minute -.EQU lHTicsL, 26 ; wann war die letzte Funk Low-High-Flanke in 300Hz-Tics Low -.EQU Stunde, 0 ; anzuzeigende Stunde -.EQU Minute, 1 ; anzuzeigende Minute -.EQU Sekunde, 2 ; anzuzeigende Sekunde - - rjmp RESET - reti - reti - reti - rjmp TIMER1COMPA ; Timer1 Compare Match A - reti - reti - reti - reti - reti - reti - reti - reti - reti - reti - reti - reti - - RESET: - ldi r16,lo8(RAMEND) ; Stackpointer initialisieren - out SPL,r16 - - ldi r16,0x80 - out CLKPR,r16 - ldi r16,0x00 - out CLKPR,r16 ; System-Vorteiler auf 1 - - ldi r16,0x00 - out WDTCSR,r16 ; Watchdog aus - - ldi r17,0xd0 - ldi r16,0x55 - out OCR1AH,r17 - out OCR1AL,r16 ; TimerB bis 0xd055 laufen lassen (= 300 Hz) - ldi r16,0x09 - out TCCR1B,r16 ; no prescaler - ldi r16,0x40 - out TIMSK,r16 ; Counter1 Output Compare A Match Interrupt Enable - - ldi r16,0x55 - out PORTB,r16 ; Muster auf PORTB (Zeilen) - ldi r16,0x7c - out PORTD,r16 ; 2x n.d., 2x Pull-up (Taster), Muster auf Spalten - ldi r16,0xff - out DDRB,r16 ; Ausgänge: PORTB (Zeilen) - ldi r16,0x70 - out DDRD,r16 ; Ausgänge: PORTD4..6 (Spalten) - - ldi Spalte,1 - ldi r16,0x12 - mov Stunde,r16 - ldi r16,0x34 - mov Minute,r16 - ldi r16,0x56 - mov Sekunde,r16 - - ldi nTicsL,100 - - sei - -main_loop: - cp nTicsL,TicsL - brcc main_loop - mov r16,nTicsL - subi r16,0x80 - mov r17,TicsL - subi r17,0x80 - cp r16,r17 - brcc main_loop - -neue_Sekunde: - - ldi r16,100 - add nTicsL,r16 - - sbis PIND,2 - rjmp neue_Stunde - sbis PIND,3 - rjmp neue_Minute - - inc Sekunde - mov r16,Sekunde - cpi r16,60 - brcs main_loop - -neue_Minute: - - clr Sekunde - inc Minute - mov r16,Minute - cpi r16,60 - brcs main_loop - -neue_Stunde: - - clr Sekunde - clr Minute - inc Stunde - mov r16,Stunde - cpi r16,24 - brcs main_loop - - clr Stunde - - rjmp main_loop - -TIMER1COMPA: - push r16 - in r16,SREG - push r16 - push r17 - ldi r17,0x7c - out PORTD,r17 - - inc Spalte - cpi Spalte,2 - brne nicht_Stunde_Anzeigen - ldi r17,0x60 - mov r16,Stunde - rjmp anzeigen -nicht_Stunde_Anzeigen: - cpi Spalte,3 - brne nicht_Minute_Anzeigen - ldi r17,0x50 - mov r16,Minute - rjmp anzeigen -nicht_Minute_Anzeigen: - ldi r17,0x30 - mov r16,Sekunde - subi Spalte,3 - inc TicsL - brne anzeigen - inc TicsH -anzeigen: - com r16 - sbr r16,0x80 - sbic PIND,1 - cbr r16,0x80 - ori r17,0x0c - out PORTB,r16 - out PORTD,r17 - pop r17 - pop r16 - out SREG,r16 - pop r16 - reti +/* + * Fernbedienung.asm + * + * Created: 08.10.2015 14:35:11 + * Author: Erich + */ + +.INCLUDE "tn2313def.inc" + +.EQU Spalte, 31 ; die anzuzeigende Spalte (als Bitmaske fuer PORTD) +.EQU TicsH, 30 ; 300Hz-Tics High +.EQU TicsL, 29 ; 300Hz-Tics Low +.EQU nTicsL, 28 ; wann ist die naechste Sekunde gemessen in 300Hz-Tics Low +.EQU Status, 27 ; Bit 0: Funksignal + ; Bit 1: kein Fehler im aktuellen Empfang + ; Bit 2: kein Fehler in der aktuellen oder letzten Minute +.EQU lHTicsL, 26 ; wann war die letzte Funk Low-High-Flanke in 300Hz-Tics Low +.EQU Stunde, 0 ; anzuzeigende Stunde +.EQU Minute, 1 ; anzuzeigende Minute +.EQU Sekunde, 2 ; anzuzeigende Sekunde + + rjmp RESET + reti + reti + reti + rjmp TIMER1COMPA ; Timer1 Compare Match A + reti + reti + reti + reti + reti + reti + reti + reti + reti + reti + reti + reti + + RESET: + ldi r16,lo8(RAMEND) ; Stackpointer initialisieren + out SPL,r16 + + ldi r16,0x80 + out CLKPR,r16 + ldi r16,0x00 + out CLKPR,r16 ; System-Vorteiler auf 1 + + ldi r16,0x00 + out WDTCSR,r16 ; Watchdog aus + + ldi r17,0xd0 + ldi r16,0x55 + out OCR1AH,r17 + out OCR1AL,r16 ; TimerB bis 0xd055 laufen lassen (= 300 Hz) + ldi r16,0x09 + out TCCR1B,r16 ; no prescaler + ldi r16,0x40 + out TIMSK,r16 ; Counter1 Output Compare A Match Interrupt Enable + + ldi r16,0x55 + out PORTB,r16 ; Muster auf PORTB (Zeilen) + ldi r16,0x7c + out PORTD,r16 ; 2x n.d., 2x Pull-up (Taster), Muster auf Spalten + ldi r16,0xff + out DDRB,r16 ; Ausgänge: PORTB (Zeilen) + ldi r16,0x70 + out DDRD,r16 ; Ausgänge: PORTD4..6 (Spalten) + + ldi Spalte,1 + ldi r16,0x12 + mov Stunde,r16 + ldi r16,0x34 + mov Minute,r16 + ldi r16,0x56 + mov Sekunde,r16 + + ldi nTicsL,100 + + sei + +main_loop: + cp nTicsL,TicsL + brcc main_loop + mov r16,nTicsL + subi r16,0x80 + mov r17,TicsL + subi r17,0x80 + cp r16,r17 + brcc main_loop + +neue_Sekunde: + + ldi r16,100 + add nTicsL,r16 + + sbis PIND,2 + rjmp neue_Stunde + sbis PIND,3 + rjmp neue_Minute + + inc Sekunde + mov r16,Sekunde + cpi r16,60 + brcs main_loop + +neue_Minute: + + clr Sekunde + inc Minute + mov r16,Minute + cpi r16,60 + brcs main_loop + +neue_Stunde: + + clr Sekunde + clr Minute + inc Stunde + mov r16,Stunde + cpi r16,24 + brcs main_loop + + clr Stunde + + rjmp main_loop + +TIMER1COMPA: + push r16 + in r16,SREG + push r16 + push r17 + ldi r17,0x7c + out PORTD,r17 + + inc Spalte + cpi Spalte,2 + brne nicht_Stunde_Anzeigen + ldi r17,0x60 + mov r16,Stunde + rjmp anzeigen +nicht_Stunde_Anzeigen: + cpi Spalte,3 + brne nicht_Minute_Anzeigen + ldi r17,0x50 + mov r16,Minute + rjmp anzeigen +nicht_Minute_Anzeigen: + ldi r17,0x30 + mov r16,Sekunde + subi Spalte,3 + inc TicsL + brne anzeigen + inc TicsH +anzeigen: + com r16 + sbr r16,0x80 + sbic PIND,1 + cbr r16,0x80 + ori r17,0x0c + out PORTB,r16 + out PORTD,r17 + pop r17 + pop r16 + out SREG,r16 + pop r16 + reti -- cgit v1.2.3-54-g00ecf