pic16f628 serial communication
Okay Sir Here is my code, the wanted baud rate is 9600 this was just to test the chip if the rx program is working or not , i tested it on board but didnt work hope you can tell me whats the problem, thank you all of you
;===================================================
; GETTING VARIABLES READY
;===================================================
RXSTA EQU 0X18
TXSTA EQU 0X98
RXREG EQU 0X1A
TXREG EQU 0X19
SPBRG EQU 0X99
PIE1 EQU 0X8C
PIR1 EQU 0X0C
TRISA EQU 0X85
TRISB EQU 0X86
PORTA EQU 0X05
PORTB EQU 0X06
STATUS EQU 0X03
FREE1 EQU 0X20
FREE2 EQU 0X21
FREE3 EQU 0X22
;===================================================
; CONFIGRATION
;===================================================
ORG 0X08 ; START OF PROGRAM
MOVLW B'10010110' ; BINARY CODE FOR RXSTA
MOVWF RXSTA ; SET THE RX PORT
BSF STATUS,5 ; JUMP TO BANK 1 [ STATUS = 03H ]
MOVLW B'00000010' ; BINARY CODE FOR PORT B
MOVWF TRISB ; SET ALL PORTB OUT BUT PIN 1 RX IN
CLRF TRISA ; SET ALL PORT A TO OUTPUT
MOVLW B'00110000' ; BIT5 ENABLE TX INTRUPT, BIT4 ENABLE RX INTRUPT
MOVWF PIE1 ; SET THE INTRUPT ENABLES [ PIE1 = 8CH ]
MOVLW 0X19 ; VALUE EQUALS TO 25 DECIMAL
MOVWF SPBRG ; MOVE TO SPBRG, AND SET BAUD RATE 9600 K [ BRGH = 1 ] FOR 4 MHZ
MOVLW B'00100110' ; BIT 1, I AM NOT SHURE OF IT
MOVWF TXSTA ; SET THE TXSTA TO 8 BIT ASYNCHRONOUS TRANSMITION
BCF STATUS,5 ; JUMP TO BANK 0
;===================================================
; THE WANTED PROGRAM : JUST EXAMPLE
;===================================================
START
BTFSC PIR1,5 ; IF THE RX REGISTER IS FULL
CALL GET ; THEN CALL GET FUNCTION
MOVFW FREE1 ; STORED DATA FROM RX
MOVWF PORTA ; OUT FROM PORTA TO LEDS
GOTO START ; START THE SAME PROCESS AGAIN
;===================================================
GET
MOVFW RXREG ; THEN MOVE RX DATA TO W REGISTER
MOVWF FREE1 ; STORE THE DATA IN 0X20
RETURN
;===================================================
END
;===================================================