[請益] 請教各位前輩,關於pic16f687的USART

看板Electronics作者 (是否)時間17年前 (2008/08/05 22:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
不好意思我有一個問題測試不出來 就是利用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
文章代碼(AID): #18c613Kb (Electronics)