Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
資深會員
|
FSR 0~255,你怎麼會丟0x120進去??
發表於: 2007/9/4 13:08
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
恩 程式是每4ms中斷一次 然後用RS-232傳出一些資料和A/D 的轉換值 輸出內容大概是這樣
標頭(test test1) 序號(sn) 帶兩筆A/D轉換資料(xx xx) 所以看序號就可以知道 傳送資料到第三筆時就會重頭來過 目前原因不明
發表於: 2007/9/4 12:37
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
恩 程式是每4ms中斷一次 然後用RS-232傳出一些資料和A/D 的轉換值 輸出內容大概是這樣
標頭(test test1) 序號(sn) 帶兩筆A/D轉換資料(xx xx) 所以看序號就可以知道 傳送資料到第三筆時就會重頭來過 目前原因不明
發表於: 2007/9/4 12:20
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
你好 謝謝你的建議
不過問題仍舊存在 就像上面所說的 大約傳送到 FF FF 03 xx xx 後 又重頭開始 FF FF 01 xx xx 這樣 照道理是應該要繼續 FF FF 04 xx xx 以此類推 我不知道是不是我程式的瑕疵導致 在請問一下 FSR 設定似乎有問題是指?.....
發表於: 2007/9/4 12:12
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
資深會員
|
稍微整理了一下,發現FSR的設定值好像有問題??
list p=16F877
發表於: 2007/9/4 11:44
|
|||
|
不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
我使用的chip 是pic16f877
在傳輸資料時 不知為何的 資料並沒有完全的傳輸出來 我在電腦裡 一步一步慢慢跑是沒有錯 但實際傳輸的時候 資料遺失去相當嚴重 以下是我的程式 希望經驗豐富的高手能夠幫我解答 照道理來說 可以看到的值應該為 AB CD 01 XX XX AB CD 02 XX XX AB CD 03 XX XX 以此類推 一直下去 但實際看到 卻只到 第三行之後就完全消失 而且還從頭來過 我百思不得其解 list p=16F877 #include <p16f877.inc> VAL_US equ .5 VAL_US_1 equ .80 VAL_MS equ .249 VAL_MS_1 equ .250 count equ 0x20 HEADER equ 0x21 PORTB_DATA equ 0x23 ECG_buffer equ 0x24 flag equ 0x25 temp1 equ 0x26 temp2 equ 0x27 flag1 equ 0x28 flag2 equ 0x29 number equ 0x2A buffer equ 0x2B number1 equ 0x2C number2 equ 0x2D number3 equ 0x2E flag3 equ 0x30 flag5 equ 0x2F temp3 equ 0x31 HEADER1 equ 0x22 HEADER2 equ 0x32 count_ms equ 0X33 count_ms_1 equ 0X34 HEADER3 equ 0x35 HEADER4 equ 0X36 HEADER5 equ 0X37 test equ 0x38 test1 equ 0x39 org 0x00 nop goto initial org 0X04 goto isr initial: banksel SPBRG movlw .25 ;Baud Rate = 19.2kps movwf SPBRG banksel RCSTA bsf RCSTA,SPEN ;致能RC7/RX/DR及 ;RC6/TX/CK為串列埠接腳 banksel HEADER movlw 0x12 movwf HEADER ;Header = 255 banksel HEADER1 movlw 0x34 movwf HEADER1 ;Header = 255 banksel HEADER2 movlw 0x56 movwf HEADER2 ;Header = 255 banksel HEADER3 movlw 0x78 movwf HEADER3 ;Header = 255 banksel HEADER4 movlw 0x9A movwf HEADER4 ;Header = 255 banksel HEADER5 movlw 0xBC movwf HEADER5 banksel number movlw 0x00 movwf number banksel test movlw 0xAB movwf test banksel test1 movlw 0xCD movwf test1 banksel number1 movlw 0x01 movwf number1 banksel number2 movlw 0x01 movwf number2 banksel number3 movlw 0x01 movwf number3 call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us banksel TXSTA bcf TXSTA,SYNC ;非同步模式 bsf TXSTA,BRGH ;非同步 高速模式 bsf TXSTA,TXEN ;傳送致能 banksel TXSTA tss: btfss TXSTA,TRMT goto tss ;================================================================= ;transfer10: ;傳送 data2 data ; banksel TXSTA ; btfss TXSTA,TRMT ; goto transfer10 ; call delay_25us ; banksel HEADER ; movf HEADER,w ; banksel TXREG ; movwf TXREG ; call delay_25us ; call delay_25us ; call delay_25us ; call delay_25us ;transfer20: ;傳送 data2 data ; banksel TXSTA ; btfss TXSTA,TRMT ; goto transfer20 ; call delay_25us ; banksel HEADER1 ; movf HEADER1,w ; banksel TXREG ; movwf TXREG ; call delay_25us ; call delay_25us ; call delay_25us ; call delay_25us ;transfer30: ;傳送 data2 data ; banksel TXSTA ; btfss TXSTA,TRMT ; goto transfer30 ; call delay_25us ; banksel HEADER2 ; movf HEADER2,w ; banksel TXREG ; movwf TXREG ; call delay_25us ; call delay_25us ; call delay_25us ; call delay_25us ;transfer40: ;傳送 data2 data ; banksel TXSTA ; btfss TXSTA,TRMT ; goto transfer40 ; banksel HEADER3 ; movf HEADER3,w ; banksel TXREG ; movwf TXREG ; call delay_25us ; call delay_25us ; call delay_25us ; call delay_25us ;================================================================= banksel TRISC clrf TRISC ;PORTC = Output banksel TRISB movlw b'00000001' movwf TRISB ;PORTB = Input banksel TRISA clrf TRISA bsf TRISA,0 bsf TRISA,1 ; bsf TRISA,2 banksel flag1 clrf flag1 clrf flag2 clrf flag3 banksel PORTB clrf PORTB banksel PORTC clrf PORTC ;Clear PORTC banksel ADCON1 clrf ADCON1 movlw b'00000101' movwf OPTION_REG ;TMR0 Rate = 1:64 banksel ADCON0 movlw 0x41 movwf ADCON0 ;ADC轉換時間 8Tosc ;channel5,(RE0/AN5) ;ADON banksel PIE1 bsf INTCON,GIE bsf INTCON,INTE start: ;banksel TMR0 ;movlw .193 ;movwf TMR0 ;banksel flag ;bsf flag,3 ; banksel PORTB ; bcf PORTB,4 ;call fky ;============================================== ;============================================== Timer0: banksel INTCON bsf INTCON,T0IE bcf INTCON,T0IF banksel TMR0 movlw .193 movwf TMR0 ;================================================ ;=========================================== store: banksel STATUS bsf STATUS,IRP INDF equ 0x00 banksel FSR movlw 0x120 movwf FSR ;=========================================== ;=========================================== Infinite: banksel flag5 btfsc flag5,0 goto Infinite goto AD1 ;=========================================== AD1: banksel ADCON0 ;AD data1 movlw B'01000001' ;設定使用channel RA0輸入類比信號data1 movwf ADCON0 call delay_25us bsf ADCON0,GO A1: ;AD1是否完成 btfsc ADCON0,GO goto A1 movf ADRESH,w movwf INDF incf FSR banksel flag5 bsf flag5,0 banksel number3 decfsz number3 goto Infinite AD2: banksel STATUS bcf STATUS,IRP clrf FSR bsf flag3,3 banksel ADCON0 movlw B'01001001' ;設定使用channel RA1輸入類比信號data2 movwf ADCON0 call delay_25us bsf ADCON0,GO A2: ;AD2是否完成 btfsc ADCON0,GO goto A2 movf ADRESH,w banksel temp2 movwf temp2 ;banksel flag5 ;bsf flag5,0 goto Infinite isr: banksel INTCON bcf INTCON,T0IF banksel number1 decfsz number1 goto RelifeTime banksel STATUS bcf STATUS,IRP clrf FSR banksel INTCON bcf INTCON,T0IF transfer00: banksel TXSTA btfss TXSTA,TRMT goto transfer00 banksel test movf test,w banksel TXREG movwf TXREG goto transfer0 transfer0: ;傳送 data2 data banksel TXSTA btfss TXSTA,TRMT goto transfer0 banksel test1 movf test1,w banksel TXREG movwf TXREG goto SN SN: banksel TXSTA btfss TXSTA,TRMT goto SN banksel number incf number movf number,w banksel TXREG movwf TXREG goto store1 ;=========================================== store1: banksel STATUS bsf STATUS,IRP INDF equ 0x00 banksel FSR movlw 0x120 movwf FSR ;=========================================== transfer1: ;傳送 data1 data banksel TXSTA btfss TXSTA,TRMT goto transfer1 banksel INDF movf INDF,w call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us banksel TXREG movwf TXREG goto transfer1_loop transfer1_loop: incf FSR banksel number2 decfsz number2 goto transfer1 transfer2: ;傳送 data2 data banksel STATUS bcf STATUS,IRP clrf FSR banksel TXSTA btfss TXSTA,TRMT goto transfer2 banksel temp2 movf temp2,w banksel TXREG movwf TXREG banksel number1 movlw 0x01 movwf number1 banksel number2 movlw 0x01 movwf number2 banksel number3 movlw 0x01 movwf number3 ;=========================================== store2: banksel STATUS bsf STATUS,IRP INDF equ 0x00 banksel FSR movlw 0x120 movwf FSR ;=========================================== ;==================================== RelifeTime: banksel flag5 bcf flag5,0 banksel TMR0 movlw .193 movwf TMR0 ;==================================== retfie ; ;---------------delay subroutine-------------- delay_25us: movlw VAL_US movwf count dec_loop nop decfsz count,f goto dec_loop return delay_400us: movlw VAL_US_1 movwf count dec_loop_1 nop decfsz count,f goto dec_loop_1 return ;--------------------------------------------- delay_250ms: movlw VAL_MS_1 movwf count_ms_1 loop_ms call delay_1ms decfsz count_ms_1,f goto loop_ms return delay_1ms: nop movlw VAL_MS movwf count_ms dec_loop_f nop decfsz count_ms,f goto dec_loop_f return end
發表於: 2007/9/4 3:33
|
|||
|