;- - - - - - - - - - - - - - - - - - - - - - - - - - ; Verbindung DCF77-Soft-Clock (nach G.Schmidt) ; mit LCD, seriell, 9600 Baud, 8-N-1 ; (RXD/TXD gekreuzt) ; MCU ATTiny4313; ; CPU Takt 4,096 MHz ; LCD 2x16, (HD44780) Vierbitmodus ; PortB LCD Ausgabe: R/W=GND ; PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 ; n/a LED ena rs D7 D6 D5 D4 ;- - - - - - - - - - - - - - - - - - - - - - - - - - ;ATtiny4313 memory use summary [bytes]: ;Segment Begin End Code Data Used Size Use% ;[.cseg] 0x000000 0x0001fc 496 12 508 4096 12.4% ;[.dseg] 0x000060 0x000060 0 0 0 256 0.0% ;[.eseg] 0x000000 0x000000 0 0 0 256 0.0% ;Assembly complete, 0 errors. 2 warnings ; Rev.:23052009-18032018 ;- - - - - - - - - - - - - - - - - - - - - - - - - - ; .nolist .include "tn4313def.inc";"2313def.inc" .list ; ; Konstanten: .equ daten = portb .equ mctakt = 4096000 ; Quarzfrequenz .equ baud = 9600 ; Baudrate .equ bdteiler = 26 ; (mctakt/(16*baud))-1;Baudr.-Teiler .equ rs = 4 ; Portbitzuweisung RS-Bits .equ ena = 5 ; Portbitzuweisung Enable-Bits .equ lit = 6 ; Portbitzuweisung LED-Hintergrundlicht .equ zeit1 = 65535 ; Ladewert 1 fuer Zeitschleifen .equ zeit2 = 65535 ; Ladewert 2 fuer Zeitschleifen .equ zeit3 = 65525 ; Ladewert 3 fuer Zeitschleifen ; ; Register-Definitionen: .def temp = r16 ; Temporaerregister 1 .def temp1 = r17 ; Temporaerregister 2 .def temp2 = r18 ; Temporaerregister 3 ; ; Speicher- und Einsprungadressenzuordnungen: .cseg ; Codesegment .org 0x0000 ; Anfangsadresse bei Null rjmp main ; Sprung zum Hauptprogramm ; main: ldi temp, low(ramend) ; Stackpointer initialisieren out SPL, temp ; (Highbyte fehlt bei ATTiny2313) ldi temp, high(ramend) out SPH, temp ser temp ; Portzuweisung out DDRB, temp ; Port B Ausgang fuer LCD ldi temp, 0b00000010 ; Port D Bit0 RXD, Bit1 TXD out ddrd, temp ldi temp, 0xFF ; Pullups auch fuer RXD aktiv out portd, temp ldi temp, bdteiler ; Baudratengenerator out UBRR, temp ; Teiler setzen in UBRR ldi temp, 0x18 ; (1<