Code:
;Global Interrupt Vektor
ORG 0x0008
goto Isr
;******************************************************************************
; Start des Hauptprogramms *
;******************************************************************************
;
Main:
ORG 0x0100
rcall Init
MainLoop:
bcf LATC,5
bcf LATC,4
movlw 0x44
movwf xms
call wxms ;kurz warten
goto MainLoop
;
;******************************************************************************
; Initialisierung *
;******************************************************************************
Init:
; 8MHz als interne Frequenz
movlw 0x70
movwf OSCCON
; Portdirektionen definieren
movlw 0x08
movwf TRISB
movlw 0x8F
movwf TRISC
clrf LATC
; Schnittstellenkonfigurationen
rcall canInit
rcall uartInit
; Interrupts konfigurieren
bsf INTCON, 7 ; Global Int aktivieren
bsf INTCON, 6 ; Peripherie Int aktivieren
bsf PIE3, 0 ; Interrupt fuer RXB0 aktivieren
bsf PIE1, 5 ; Interrupt fuer EUSART receive aktivieren
return
;
Isr:
btfss PIR3, 0 ; CAN-Nachricht empfangen?
goto uartInt ; nein!
canInt:
bsf LATC,5
;CAN Nachricht nach UART senden
call canRecMsg
movf canIDL,w
xorlw 0x02
btfss STATUS,Z
goto nloadcanmsg
loadcanmsg:
movlw 0xFF
movwf uartsMsg
call uartSendMsg
; movf canIDL,w
; iorlw 0x80
; movwf uartsMsg
; call uartSendMsg
; movf canIDH,w
; andlw 0xF0
; iorlw 0x09
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canIDH,w
; andlw 0x0F
; iorlw 0xA0
; movwf uartsMsg
; call uartSendMsg
; movf canDLC,w
; iorlw 0xC0
; movwf uartsMsg
; call uartSendMsg
; movf canDLC,w
; btfsc STATUS,Z
; goto nloadcanmsg
; movwf tempvar
; movf canMsg0,w
; andlw 0xF0
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canMsg0,w
; andlw 0x0F
; movwf uartsMsg
; call uartSendMsg
; decf tempvar
; btfsc STATUS,Z
; goto nloadcanmsg
; movf canMsg1,w
; andlw 0xF0
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canMsg1,w
; andlw 0x0F
; movwf uartsMsg
; call uartSendMsg
; decf tempvar
; btfsc STATUS,Z
; goto nloadcanmsg
; movf canMsg2,w
; andlw 0xF0
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canMsg2,w
; andlw 0x0F
; movwf uartsMsg
; call uartSendMsg
; decf tempvar
; btfsc STATUS,Z
; goto nloadcanmsg
; movf canMsg3,w
; andlw 0xF0
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canMsg3,w
; andlw 0x0F
; movwf uartsMsg
; call uartSendMsg
; decf tempvar
; btfsc STATUS,Z
; goto nloadcanmsg
; movf canMsg4,w
; andlw 0xF0
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canMsg4,w
; andlw 0x0F
; movwf uartsMsg
; call uartSendMsg
; decf tempvar
; btfsc STATUS,Z
; goto nloadcanmsg
; movf canMsg5,w
; andlw 0xF0
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canMsg5,w
; andlw 0x0F
; movwf uartsMsg
; call uartSendMsg
; decf tempvar
; btfsc STATUS,Z
; goto nloadcanmsg
; movf canMsg6,w
; andlw 0xF0
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canMsg6,w
; andlw 0x0F
; movwf uartsMsg
; call uartSendMsg
; decf tempvar
; btfsc STATUS,Z
; goto nloadcanmsg
; movf canMsg7,w
; andlw 0xF0
; swapf WREG
; movwf uartsMsg
; call uartSendMsg
; movf canMsg7,w
; andlw 0x0F
; movwf uartsMsg
; call uartSendMsg
nloadcanmsg:
bcf PIR3,0
bra EndIsr
uartInt:
bsf LATC,4
;UART Nachricht nach CAN senden
call uartRecMsg
EndIsr:
retfie FAST
Lesezeichen