I have put #option USART2_BRGH = true and #option USART2_BRGH16 = true but when I print out USART2_BRGH16 it shows a 0.
Here is the code:
Code: Select all
Device = 18F47J13
Clock = 8
#option USART2_BRGH = true
#option USART2_BRGH16 = true
Config IOL1WAY = OFF
// import modules...
Include "USART.bas"
Include "USART2_RP.bas" ' Mapable pins on port D
Include "convert.bas"
Include "system.bas"
Include "PPS.bas"
Private Dim
green As PORTB.6,
red As PORTB.7
Private Dim
b1 As Byte
'****************************************************************************
Private Sub LED()
High(green)
DelayMS(100)
Low(green)
High(red)
DelayMS(100)
Low(red)
End Sub
'****************************************************************************
Private Sub SET_SERIAL_2()
pps.unlock()
pps.assign_input(@IN_FN_PPS_RX2, PPS_RP19) ' RD.2
pps.assign_output(OUT_FN_PPS_TX2, PPS_RP20) ' RD.3
pps.lock()
' TXSTA2.4 = 0 ' Asynchronous
' TXSTA2.2 = 1 ' BRGH = high speed
' BAUDCON2.3 = 1 ' 16-Bit Baud Rate Register Enable
BAUDCON2.5 = 1 ' RCV 1=inverted
BAUDCON2.4 = 1 ' TX 1=inverted
' SPBRGH = $06 ' 1200 baud - data sheet page 352 DECIMAL 1665
' SPBRG = $81
USART2.SetBaudrate(br1200) ' Baud rate
DelayMS(2)
End Sub
'****************************************************************************
OSCCON = $7F ' Interanl clock to 8mhz
OSCCON2 = $54
REFOCON = $00
OSCTUNE = $00
ADCON0 = $00 ' Turn off A/D
ADCON1 = $FF ' All A/D channels digital
ANCON0 = $FF
ANCON1 = $1F
PMCONH = $00 ' Disable parallel port
SET_SERIAL_2
USART.SetBaudrate(br9600) ' Baud rate
LED
b1 = BRGH ' TXSTA2.2
USART.Write("BRGH = ",DecToStr(b1),10,13)
DelayMS(1)
b1 = BAUDCON2.3
USART.Write("BRGH_16 = ",DecToStr(b1),10,13)
DelayMS(1)
b1 = SPBRGH2
USART.Write("SPBRGH2 = ",DecToStr(b1),10,13)
DelayMS(1)
b1 = SPBRG2
USART.Write("SPBRG2 = ",DecToStr(b1),10,13)
DelayMS(1)
'****************************************************************************
MAIN:
USART2.Write("8M!")
LED
DelayMS(2000)
GoTo main
Code: Select all
RCInput As TRISD.Booleans(2), // as TRISG (2) *** CHANGED TO TRISD FROM TRISG
TXInput As TRISD.Booleans(3) // as TRISG (1) *** CHANGED TO TRISD FROM TRISG
BRGH = 1
BRGH_16 = 0
SPBRGH2 = 0
SPBRG2 = 159
I can not understand why BRGH_16 = 0
Any help is greatly appreciated.