BAUD_4 equ .216 ; 3+3X = 1.25*CLKOUT/Baud
BAUD_X equ .170 ; 11+3X = CLKOUT/Baud
BAUD_Y equ .171 ; 9 +3X = CLKOUT/Baud
endif
if BAUDRATE == 2400
error "Baudrate and clock speed incompatable"
endif
if BAUDRATE == 1200
error "Baudrate and clock speed incompatable"
endif
endif
if CLOCKSPEED == 20
if BAUDRATE == 19200
BAUD_1 equ .86 ; 3+3X = CLKOUT/Baud (9600 baud, 10Mhz)
BAUD_4 equ .108 ; 3+3X = 1.25*CLKOUT/Baud
BAUD_X equ .83 ; 11+3X = CLKOUT/Baud
BAUD_Y equ .84 ; 9 +3X = CLKOUT/Baud
error "Baudrate and clock speed incompatable"
endif
if BAUDRATE == 9600
BAUD_1 equ .173 ; 3+3X = CLKOUT/Baud (9600 baud, 10Mhz)
BAUD_4 equ .216 ; 3+3X = 1.25*CLKOUT/Baud
BAUD_X equ .170 ; 11+3X = CLKOUT/Baud
BAUD_Y equ .171 ; 9 +3X = CLKOUT/Baud
endif
if BAUDRATE == 4800
error "Baudrate and clock speed incompatable"
endif
if BAUDRATE == 2400
error "Baudrate and clock speed incompatable"
endif
if BAUDRATE == 1200
error "Baudrate and clock speed incompatable"
endif
endif
; Generic delay loop
Delay macro
local loop
movwf DlyCnt
loop
decfsz DlyCnt,f
goto loop
endm
; Specific delay loops... loads counter value then generic delay loop
Delay1 macro ; 3+3X = CLKOUT/Baud
movlw BAUD_1
Delay
endm
Delay4 macro ; 3+3X = 1.25*CLKOUT/Baud
movlw BAUD_4
Delay
endm
DelayX macro ; 11+3X = CLKOUT/Baud
movlw BAUD_X
Delay
endm
DelayY macro ; 9 +3X = CLKOUT/Baud
movlw BAUD_Y
Delay
endm
;
;************************ Data RAM Assignments **********************
;
udata
RcvReg res 1 ; Data received
XmtReg res 1
global RcvReg
global XmtReg
global OpenUART
global putcUART
global getcUART
udata_ovr
Count res 1 ; Counter for #of Bits Transmitted
DlyCnt res 1
;
CODE
;
;*****************************************************************
; Function Name: OpenUART *
; Return Value: none *
; Parameters: None (parameters set at assembly time) *
; RAM Usage: 0 bytes *
; ROM Usage: 4 words *
; Description: Sets the TRIS register for the UARTPORT *
; such that the RX_PIN is an input, the *
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:暂无联系方式PIC单片机,单片机-工控设备 - PIC单片机