Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
|
||||
---|---|---|---|---|
版主
|
[/quote]MOVLW #H'2C'
MOVWF TXREG[/quote] 這是基本功,查ㄧ下 ASCII Code 表格就知道 0x2C 代表何種字元了。
發表於: 2008/8/5 15:50
|
|||
|
Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
|
||||
---|---|---|---|---|
高級會員
|
呵!!!
那是我用超級終端機時,可以在每兩個byte中間加一個','逗號!!! 方便我檢視資料用啦!!! 你可以不用啦!!!
發表於: 2008/8/5 15:18
|
|||
|
Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
|
||||
---|---|---|---|---|
新會員
|
不好意思,我想再請問一下
就是程式換成MARKWANG以後再TX友訊號在變化 那我想再請問的就是說 TXDATA0~TXDATA7試我所要傳送的資料 可是每傳送兩筆資料就要夾帶 MOVLW #H'2C' MOVWF TXREG 這是什麼意思呢,不太懂為什麼要這樣做 可以麻煩知道的前輩再述說一下嗎 謝謝
發表於: 2008/8/5 13:44
|
|||
|
Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
|
||||
---|---|---|---|---|
高級會員
|
你再試試我的程式!!!
USART_TX: MOVF TXDATA0,W MOVWF TXREG USART_TX_0: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_0 CLRF TXREG MOVF TXDATA1,W MOVWF TXREG USART_TX_1: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_1 CLRF TXREG MOVLW #H'2C' MOVWF TXREG USART_TX_1_0: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_1_0 CLRF TXREG MOVF TXDATA2,W MOVWF TXREG USART_TX_2: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_2 CLRF TXREG MOVF TXDATA3,W MOVWF TXREG USART_TX_3: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_3 CLRF TXREG MOVLW #H'2C' MOVWF TXREG USART_TX_3_0: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_3_0 CLRF TXREG MOVF TXDATA4,W MOVWF TXREG USART_TX_4: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_4 CLRF TXREG MOVF TXDATA5,W MOVWF TXREG USART_TX_5: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_5 CLRF TXREG MOVLW #H'2C' MOVWF TXREG USART_TX_5_0: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_5_0 CLRF TXREG MOVF TXDATA6,W MOVWF TXREG USART_TX_6: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_6 CLRF TXREG MOVF TXDATA7,W MOVWF TXREG USART_TX_7: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_7 CLRF TXREG MOVLW #H'20' MOVWF TXREG USART_TX_7_0: CLRWDT BTFSS PIR1,TXIF ;判斷TRANSMIT BUFFER是否滿了 GOTO USART_TX_7_0 CLRF TXREG BCF BIT0,1 ;只傳送CELL電壓值一次至USART CLRF CELL1 CLRF CELL2 CLRF CELL3 CLRF CELL4 RETURN ;-------------------初始化----------------------- INITIAL: BANKSEL OPTION_REG MOVLW #H'0F' ;#B'00001111' MOVWF OPTION_REG ;ENABLE PORTA/B PULL-UP,INT-FALLING,WDT,WDT RATE 1:128 BANKSEL WDTCON MOVLW #H'09' ;#B'00001001' MOVWF WDTCON ;WDT 1:512,WDT IS ON BIT0=1;SLEEP SET BIT0=0 BANKSEL OSCCON MOVLW #H'65' ;#B'01100101' MOVWF OSCCON ;INTERNAL OSC 4MHz ;;;;;PORTA BANKSEL PORTA MOVLW #H'04' ;#B'00000100' MOVWF PORTA BANKSEL TRISA MOVLW #H'04' ;#B'00000100' MOVWF TRISA BANKSEL WPUA MOVLW #H'04' ;#B'00000100' MOVWF WPUA BANKSEL IOCA MOVLW #H'00' ;#B'00000000' MOVWF IOCA ;;;;;PORTB BANKSEL PORTB MOVLW #H'00' ;#B'00000000' MOVWF PORTB BANKSEL TRISB MOVLW #H'20' ;#B'00100000' MOVWF TRISB BANKSEL WPUB MOVLW #H'00' ;#B'00000000' MOVWF WPUB BANKSEL IOCB MOVLW #H'00' ;#B'00000000' MOVWF IOCB ;;;;;PORTC BANKSEL PORTC MOVLW #H'00' ;#B'00000000' MOVWF PORTC BANKSEL TRISC MOVLW #H'0F' ;#B'00001111' MOVWF TRISC ;;;;;INTERRUPT BANKSEL INTCON MOVLW #H'00' ;DISABLE GIE,INTE,RABIE MOVWF INTCON ;;;;;USART BANKSEL TXSTA MOVLW #H'24' ;8-BIT TRANSMISSION,TRANSMIT ENABLED,ASYNCHRONOUS MODE,HIGH SPEED,TSR EMPTY MOVWF TXSTA BANKSEL RCSTA MOVLW #H'90' ;SERIAL PORT ENABLED,8-BIT RECEPTION,ENABLES CONTINUOUS RECEIVE,DISABLES ADDRESS DETECTION,NO FRAMING ERROR,NO OVERRUN ERROR MOVWF RCSTA BANKSEL SPBRG MOVLW #D'25' ;SET BAUD RATES AT 9600K WITH HIGH SPEED MODE(4MHZ=25,20MHZ=129) MOVWF SPBRG BANKSEL PIE1 BSF PIE1,TXIE ;ENABLES THE USART TRANSMIT INTERRUPT ;開啟USART BSF PIE1,RCIE ;ENABLES THE USART RECEIVE INTERRUPT ;開啟USART BANKSEL PIR1 BCF PIR1,TXIF ;THE USART TRANSMIT BUFFER IS FULL BCF PIR1,RCIF ;THE USART RECEIVE BUFFER IS EMPTY ;;;;;
發表於: 2008/8/5 10:34
|
|||
|
Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
|
||||
---|---|---|---|---|
新會員
|
不好意思
我試了MARKWANG的說明 發現在TX輸出訊息到示波器看還是一樣電位都是在HIGH電位 再請教各位前輩可以再指點一下哪裡有問題嗎 真的很急 麻煩各位前輩了 謝謝
發表於: 2008/8/5 10:16
|
|||
|
Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
|
||||
---|---|---|---|---|
高級會員
|
TXSTA設為B'00100100'
設PIE1&PIR1即可,不需再設PIE2&PIR2! 亦不需設中斷! 每個BYTE傳完最好在清一下TXREG!
發表於: 2008/8/4 17:01
|
|||
|
急!!請教各位先進關於PIC16F687 UART傳送資料之問題
|
||||
---|---|---|---|---|
新會員
|
;以下程式為用16F687寫的USART
;BAUD RATE=9.6K ;FOSC=4M ;然後要依序送出123,97,45,48,125,92,114,92,110 ;用MPLAB SIM可以看出TXREG可以依序傳送上述的值 ;可是利用示波器卻一直顯示HIGH電位,代表說沒有傳出值 ;試了很多方法可是依舊傳送不出去值,請各位前輩幫忙一下 ;剛學這個,有很多還是不太清楚,不曉得是否有設錯值 ; 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 0x000 ; processor reset vector GOTO MAIN ; go to beginning of program MAIN CALL MCU_Init LOOP BTFSS PIR1,TXIF GOTO $-1 MOVLW .123 SelBank0 MOVWF TXREG NOP BTFSS PIR1,TXIF GOTO $-1 MOVLW .97 SelBank0 MOVWF TXREG NOP BTFSS PIR1,TXIF GOTO $-1 MOVLW .45 SelBank0 MOVWF TXREG NOP BTFSS PIR1,TXIF GOTO $-1 BTFSS TXSTA,TRMT GOTO $-1 MOVLW .48 SelBank0 MOVWF TXREG NOP BTFSS PIR1,TXIF GOTO $-1 MOVLW .125 SelBank0 MOVWF TXREG NOP BTFSS PIR1,TXIF GOTO $-1 MOVLW .92 SelBank0 MOVWF TXREG NOP BTFSS PIR1,TXIF GOTO $-1 MOVLW .114 SelBank0 MOVWF TXREG NOP BTFSS PIR1,TXIF GOTO $-1 MOVLW .92 SelBank0 MOVWF TXREG NOP BTFSS PIR1,TXIF GOTO $-1 MOVLW .110 SelBank0 MOVWF TXREG NOP GOTO LOOP MCU_Init ;INTERRUPT CONTROL REGISTER SelBank0 ;Bank 0 MOVLW B'00100000' ;Enables T0IE ANDWF INTCON,W IORLW B'00100000' ; MOVWF INTCON CLRF PIR1 CLRF PIR2 SelBank1 ;Bank 1 MOVLW B'00110000' ;PIE1,Enables TMR1IE MOVWF PIE1 MOVLW B'00000000' ;PIE2, MOVWF PIE2 MOVLW B'00010001' ;PCON,??? MOVWF PCON SelBank0 ;Bank 0 ;OPTION REGISTER SelBank1 MOVLW B'10000111' ANDWF OPTION_REG,W IORLW B'10000111' MOVWF OPTION_REG SelBank0 ;OSCILLATOR CONTROL REGISTER SelBank1 MOVLW B'01100111' ANDWF OSCCON,W IORLW B'01100111' MOVWF OSCCON SelBank0 ;OSCILLATOR TUNING REGISTER SelBank1 MOVLW B'00000000' ANDWF OSCTUNE,W IORLW B'00000000' MOVWF OSCTUNE SelBank0 ;POARTA SelBank0 ;Bank 0 ; B'76543210 MOVLW B'00101011' ;Init PORTA MOVWF PORTA SelBank2 ;Bank 2 CLRF ANSEL ;digital I/O CLRF WPUA ;disabled pull-up SelBank1 ;Bank 1 MOVLW B'00101111' ;set I/O direction MOVWF TRISA ; B'76543210 MOVLW B'00001001' ;Interrupt-on-change MOVWF IOCA SelBank0 ;Bank 0 ;POARTB SelBank0 ;Bank 0 MOVLW B'00000000' ;Init PORTB MOVWF PORTB SelBank1 ;Bank 1 MOVLW B'01100000' ;set I/O direction MOVWF TRISB ; SelBank2 SelBank1 MOVLW B'00101010' MOVWF TXSTA SelBank0 MOVLW B'10010000' MOVWF RCSTA SelBank1 MOVLW B'01001001' MOVWF BAUDCTL SelBank1 MOVLW .0 MOVWF SPBRGH MOVLW .25 MOVWF SPBRG ; BUAD RATE=9.6K RETURN END
發表於: 2008/8/4 15:17
|
|||
|