Jag sitter och försöker lära mig ta emot seriell data med en PIC16F887 (Pickit2 44pin Demo Board).
Tanken är att jag ska ta emot MIDI data (31250bps) från mitt MIDI-kontrollbord.
Kontrollbordet skickar vid knapptryckningen 3 bytes som är t.ex:
Status Byte - 0xBF
Data Byte 1 - 0x50
Data Byte 2 - 0x7F
I debug mode i MPLAB funkar programmet och alla register verkar stämma,
men jag är lite osäker på hur jag ska kunna kolla i realtid om byten lagras i PCREG??
Ta gärna även en titt på koden (tabbarna blev lite skumma när jag klistrade in).
Den kanske är helt åt fanders?
Kod: Markera allt
#include <p16F887.inc>
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
org 0
Start:
;PORT INITIATE
CLRF PORTC ;Clear PORTC
BSF STATUS,RP0 ;Select bank1
CLRF TRISC ;PORTC is out
BCF TRISD,0 ;PORTD,0 is out
BSF TRISC,7 ;Set RC7/RX input
BCF STATUS,RP0 ;Back to bank0
;USART CONFIG
BSF STATUS,RP0 ;Select bank1
MOVLW 0x01
MOVWF SPBRG ;Init 31250 bauds
BCF TXSTA,SYNC
BCF STATUS,RP0 ;Back to bank0
BSF RCSTA,SPEN ;Enable EUSART
BSF RCSTA,CREN ;Enable EUSART
;Read MIDI-byte
BTFSS PIR1,RCIF ;Check for RX flag
GOTO $-1 ;Go back to RX flag-check
BSF PORTD,0 ;Light LED if RX flag-bit is set
GOTO Start
END
Den lyser så fort jag ger PICen spänning på VDD.
Om allt hade stämt så skulle jag väl behöva skicka data från kontrollbordet först?
Ber om ursäkt för att jag kanske ställer dumma frågor, men jag har googlat till tusen på detta och hittar bara massa info om PIC16F84(A) som inte har USART utan emulerar en USART med kod.
//david