; Example UART Transmit Polling 29.01.2018 ; AT90S2313 memory use summary [bytes]: ; Segment Begin End Code Data Used Size Use% ;[.cseg] 0x000000 0x000026 38 0 38 2048 1.9% ;[.dseg] 0x000060 0x000060 0 0 0 128 0.0% ;[.eseg] 0x000000 0x000000 0 0 0 128 0.0% ;Assembly complete, 0 errors, 0 warnings ;--------------------------------------------------------------- ; .nolist .include "2313def.inc" .list ;.... .def temp = r16 .equ daten = portb .equ mctakt = 4000000 ; Quarzfrequenz .equ baud = 9600 ; Baudrate .equ bdteiler = 25 ; (mctakt/(16*baud))-1 ;Baudr.-Teiler ; hauptprogramm: ; ldi temp, low(RAMEND) ; Stackpointer initialisieren out SPL, temp ser temp ; Portzuweisung out DDRB, temp ; Port B Ausgang fuer xyz ldi temp, 0x01 ; Portzuweisung out ddrd, temp ; Port D Ein-/Ausgang (seriell) ldi temp, 0x7F ; Pullups, auch fuer RXD out portd, temp ldi temp, bdteiler ; Baudratengenerator out UBRR, temp ; Teiler setzen ldi temp, 0x18 ; enablen TX und RX out UCR, temp ; an UART Control-Register rcall loop ;.... loop: ;etc. rcall senden ret ; senden: ; Polling serieller Datenausgabe sbis USR, UDRE ; springt zurueck, bis rjmp senden ; "Sendepuffer-leer-Flag" gesetzt out UDR, temp ; Ausgabe Zeichen seriell ret