新會員
Joined
: 2008/8/4 12:30 最後登入時間
: 2008/12/6 21:40
Group:
註冊會員
Level : 2 HP : 0 / 37 MP : 4 / 1778 EXP : 50
|
不好意思我想再請教各位一下,那之前有照前輩的建議去試看看 可是還是有問題 就是我設定BAUD RATE=9.6K 但是在試波器顯示BAUD RATE=7.14K 那我SPBRG=25 BRG16=0 我想請問一下各位前輩 我這樣設定有問題嗎 為什麼試波器顯示出來不是我想要的 以下為程式:
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 B'01111011' ;{
SelBank0 MOVWF TXREG
USART_TX_0
BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_0 SelBank0 CLRF TXREG
SelBank0 MOVLW B'01100001' ;a MOVWF TXREG
USART_TX_1 CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_1 SelBank0 CLRF TXREG
MOVLW B'00101101' ;- SelBank0 MOVWF TXREG ;==================\R\N=========================== USART_TX_3_0 CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_3_0 SelBank0 CLRF TXREG
MOVLW B'00110000' ;0 SelBank0 MOVWF TXREG
USART_TX_4 CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_4 SelBank0 CLRF TXREG
MOVLW B'01111101' ;} ;;MOVF TXDATA5,W SelBank0 MOVWF TXREG
USART_TX_5 CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_5 SelBank0 CLRF 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
MOVLW B'01100101' ;#B'01100101' MOVWF OSCCON ;INTERNAL OSC 4MHz SelBank1 MOVLW B'00000000' MOVWF OSCTUNE ;;;;;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 .71 ;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 BSF TXSTA,BRGH CLRF SPBRGH
BSF BAUDCTL,BRG16
RETURN END
發表於: 2008/8/7 13:47
|