• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
#8
新會員
新會員


查看用戶資訊
不好意思我又有一個問題測試不出來
以下的程式我是改寫MARKWANG的
因為有些語法在PIC16F687不適用,所以我就改寫
在下面我將TXDATA0~TXDATA7 直接用我要傳的值代替
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

發表於: 2008/8/5 19:12
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
#7
版主
版主


查看用戶資訊
[/quote]MOVLW #H'2C'
MOVWF TXREG[/quote]

這是基本功,查ㄧ下 ASCII Code 表格就知道 0x2C 代表何種字元了。

發表於: 2008/8/5 15:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
#6
高級會員
高級會員


查看用戶資訊
呵!!!
那是我用超級終端機時,可以在每兩個byte中間加一個','逗號!!!
方便我檢視資料用啦!!!
你可以不用啦!!!

發表於: 2008/8/5 15:18
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
#5
新會員
新會員


查看用戶資訊
不好意思,我想再請問一下
就是程式換成MARKWANG以後再TX友訊號在變化
那我想再請問的就是說
TXDATA0~TXDATA7試我所要傳送的資料
可是每傳送兩筆資料就要夾帶
MOVLW #H'2C'
MOVWF TXREG
這是什麼意思呢,不太懂為什麼要這樣做
可以麻煩知道的前輩再述說一下嗎
謝謝

發表於: 2008/8/5 13:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
#4
高級會員
高級會員


查看用戶資訊
你再試試我的程式!!!

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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
#3
新會員
新會員


查看用戶資訊
不好意思
我試了MARKWANG的說明
發現在TX輸出訊息到示波器看還是一樣電位都是在HIGH電位
再請教各位前輩可以再指點一下哪裡有問題嗎
真的很急
麻煩各位前輩了
謝謝

發表於: 2008/8/5 10:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 急!!請教各位先進關於PIC16F687 UART傳送資料之問題
#2
高級會員
高級會員


查看用戶資訊
TXSTA設為B'00100100'
設PIE1&PIR1即可,不需再設PIE2&PIR2!
亦不需設中斷!
每個BYTE傳完最好在清一下TXREG!

發表於: 2008/8/4 17:01
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


急!!請教各位先進關於PIC16F687 UART傳送資料之問題
#1
新會員
新會員


查看用戶資訊
;以下程式為用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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------