; Test of the serial interface ; ; Sends a text on the serial interface using 9k6 8N1 and ; then echoes incoming charcaters ; ; Hardware: Connection between STK200 board an computer ; Windows-communication program HyperTerminal (see text) ; or equivalent terminal program with ANSI ; .NOLIST .INCLUDE "8515def.inc" .LIST ; ; Constants ; .EQU fq=4000000 ; XTal frequency .EQU baud=9600 ; Baudrate .EQU bdteiler=(fq/(16*baud))-1 ; Baud-Divider ; ; Registers ; .DEF mpr=R16 ; Universal register .DEF nc=R17 ; Counter .DEF c=R18 ; Character ; ;Reset-/Interrupt-Vector rjmp main ; main: ldi mpr,bdteiler ; Baudgenerator out UBRR,mpr ; Set divider ldi mpr,0b00011000 ; Enable TX and RX out UCR,mpr ; to UART Control Register ; ; Send all Upcase characters ; ldi c,'A' ; first character ldi nc,90-65+1 ; Number of characters tloop: sbis USR,UDRE ; Jump if send buffer empty rjmp tloop ; Wait a bit out UDR,c ; Character to send buffer inc c ; next character dec nc ; Counter decrement brne tloop ; next character ; ; Wait until character received and echo forever ; rloop: sbis USR,RXC ; Test RXC-bit for waiting characters rjmp rloop ; None available, wait in c,UDR ; Get character from UART rwait: sbis USR,UDRE ; Wait until transmit buffer empty rjmp rwait ; Transmitter busy out UDR,c ; Send character cpi c,0x0D ; Return-character? brne rloop ; No Return, go on ldi c,0x0A ; Laad Linefeed rjmp rwait ; Send additional Linefeed