作者kowyw (是否)
看板Electronics
标题[请益] 请教各位前辈,关於pic16f687的USART
时间Tue Aug 5 22:14:26 2008
不好意思我有一个问题测试不出来
就是利用PIC16F687的USART来传送资料
123,97,45,48,125是我要传送的值, 虽然用试波器测试,有波型出现
可是用终端机接到电脑上值测试是否是我想要的
发现跟我所传输的值不太一样
那也跟改了 BAUDCTL 的设定值试看看,结果还是跟传送的不符
那我想再请教各位前辈一下,为什麽会不一样
因为这是我的第一份程式,我想把他给弄懂
希望前辈们能帮助我一下, 谢谢
程式如下:
list p=16f687
#include <P16F687.inc>
; Macros
SelBank0 macro
BCF STATUS,RP1
BCF STATUS,RP0
endm
SelBank1 macro
BCF STATUS,RP1
BSF STATUS,RP0
endm
SelBank2 macro
BSF STATUS,RP1
BCF STATUS,RP0
endm
SelBank3 macro
BSF STATUS,RP1
BSF STATUS,RP0
endm
ORG 0X00
GOTO MAIN
MAIN
CALL INITIAL
USART_TX
MOVLW .123
SelBank0
MOVWF TXREG
USART_TX_0
CLRWDT
BTFSS PIR1,TXIF ;判断TRANSMIT BUFFER是否满了
GOTO USART_TX_0
SelBank0
CLRF TXREG
;MOVF TXDATA1,W
MOVLW .97
MOVWF TXREG
USART_TX_1
CLRWDT
BTFSS PIR1,TXIF ;判断TRANSMIT BUFFER是否满了
GOTO USART_TX_1
SelBank0
CLRF TXREG
;MOVLW B'00101100'
;SelBank0
;MOVWF TXREG
USART_TX_1_0
CLRWDT
BTFSS PIR1,TXIF ;判断TRANSMIT BUFFER是否满了
GOTO USART_TX_1_0
SelBank0
CLRF TXREG
;MOVF TXDATA2,W
MOVLW .45
SelBank0
MOVWF TXREG
USART_TX_2
CLRWDT
BTFSS PIR1,TXIF ;判断TRANSMIT BUFFER是否满了
GOTO USART_TX_2
SelBank0
CLRF TXREG
MOVLW .48
;MOVF TXDATA3,W
MOVWF TXREG
USART_TX_3
CLRWDT
BTFSS PIR1,TXIF ;判断TRANSMIT BUFFER是否满了
GOTO USART_TX_3
SelBank0
CLRF TXREG
MOVLW .125
;MOVF TXDATA4,W
SelBank0
MOVWF TXREG
GOTO USART_TX
INITIAL
SelBank1
MOVLW B'00001111' ;#B'00001111'
MOVWF OPTION_REG ;ENABLE PORTA/B PULL-UP,INT-FALLING,WDT,WDT RATE 1:128
BANKSEL WDTCON
MOVLW B'00001001' ;#B'00001001'
MOVWF WDTCON ;WDT 1:512,WDT IS ON BIT0=1;SLEEP SET BIT0=0
BANKSEL OSCCON
MOVLW B'01100101' ;#B'01100101'
MOVWF OSCCON ;INTERNAL OSC 4MHz
;;;;;PORTA
SelBank0
BANKSEL PORTA
MOVLW B'00000100' ;#B'00000100'
MOVWF PORTA
BANKSEL TRISA
MOVLW B'00000100' ;#B'00000100'
MOVWF TRISA
BANKSEL WPUA
MOVLW B'00000100' ;#B'00000100'
MOVWF WPUA
BANKSEL IOCA
MOVLW B'00000000' ;#B'00000000'
MOVWF IOCA
;;;;;PORTB
BANKSEL PORTB
MOVLW B'00000000' ;#B'00000000'
MOVWF PORTB
BANKSEL TRISB
MOVLW B'00100000' ;#B'00100000'
MOVWF TRISB
BANKSEL WPUB
MOVLW B'00000000' ;#B'00000000'
MOVWF WPUB
BANKSEL IOCB
MOVLW B'00000000' ;#B'00000000'
MOVWF IOCB
;;;;;PORTC
BANKSEL PORTC
MOVLW B'00000000' ;#B'00000000'
MOVWF PORTC
BANKSEL TRISC
MOVLW B'00001111' ;#B'00001111'
MOVWF TRISC
;;;;;INTERRUPT
SelBank0
MOVLW B'00000000' ;DISABLE GIE,INTE,RABIE
MOVWF INTCON
;;;;;USART
SelBank1
MOVLW B'00100100' ;8-BIT TRANSMISSION,TRANSMIT ENABLED,ASYNCHRONOUS MODE,HIGH SPEED,TSR EMPTY
MOVWF TXSTA
SelBank0
MOVLW B'10010000' ;SERIAL PORT ENABLED,8-BIT RECEPTION,ENABLES CONTINUOUS RECEIVE,DISABLES ADDRESS DETECTION,NO FRAMING ERROR,NO OVERRUN ERROR
MOVWF RCSTA
SelBank1
MOVLW .25 ;SET BAUD RATES AT 9600K WITH HIGH SPEED MODE(4MHZ=25,20MHZ=129)
MOVWF SPBRG
SelBank1
BSF PIE1,TXIE ;ENABLES THE USART TRANSMIT INTERRUPT ;开启USART
BSF PIE1,RCIE ;ENABLES THE USART RECEIVE INTERRUPT ;开启USART
SelBank0
BCF PIR1,TXIF ;THE USART TRANSMIT BUFFER IS FULL
BCF PIR1,RCIF ;THE USART RECEIVE BUFFER IS EMPTY
SelBank1
MOVLW B'01001001'
MOVWF BAUDCTL
RETURN
END
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.68.223.81