;; ;; spreadspace pic utils ;; ;; ;; Copyright (C) 2011-2013 Christian Pointner ;; ;; This file is part of spreadspace pic utils. ;; ;; spreadspace pic utils is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; any later version. ;; ;; spreadspace pic utils is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with spreadspace pic utils. If not, see . ;; ;; --- transmit byte and add it to csum com_tx_byte btfss PIR1,TXIF goto com_tx_byte movlb .3 movwf TXREG xorwf csum,f movlb .0 return ;; ---- wait for byte to be received com_rx_byte movlb .3 btfsc RCSTA,OERR goto uart_rx_oe movlb .0 btfss PIR1,RCIF goto com_rx_byte movlb .3 btfsc RCSTA,FERR goto uart_rx_fe movf RCREG,w movlb .0 return uart_rx_oe ; recover from overflow bcf RCSTA,CREN bsf RCSTA,CREN goto com_rx_byte uart_rx_fe ; recover from framing error movf RCREG,w goto com_rx_byte ;; ----- initialize com (this is called by bootmacro, it's not a subroutine - no return at the end) com_init movlb .1 movlw b'01110000' ; 8 MHz movwf OSCCON movlb .3 bcf ANSELB,ANSB1 movlw b'01001000' ; TX non-inverted, 16bit Baudrate, no auto baud detect movwf BAUDCON movlw b'00100100' ; Baudrate = High Speed, async mode, transmit enabled, 8bit movwf TXSTA movlw .34 ; Baudrate = 57600 (@ 8MHz) -> -0,79 % Error ;; movlw .51 ; Baudrate = 38400 (@ 8MHz) -> -0,002 % Error ;; movlw .103 ; Baudrate = 19200 (@ 8MHz) -> 0,16 % Error movwf SPBRGL clrf SPBRGH movlw b'10010000' ; enable Serial Port, 8bit, enable continues receive, disable address detection movwf RCSTA movlb .0