91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

PIC16F73串口通信的問題

16F73內置有USART功能,我用PIC做一個發送測試測程序,從PIC上面發送一個字節的字符到PC,PC方使用串口調試助手看結果,但是沒有加入任何循環的語句,PC放會不停的收到PIC發送過來的數據,我實在想不出是什么問題,我把程序貼出來,請大家幫我看看
led變量是用來跟蹤程序執行的流程,結果目標板上的LED不停的閃爍,表示程序在不停的重復執行
watch窗口里看到TXREG寄存器里的數據一直沒有沒清空,不知道為什么,按理把數據丟進TXREG后,發送就會開始,發送結束后TEREG就會被清空
;
;TARANS.ASM
;baud rate:9600
;
list            p=16F73
#include        

trans_c        equ        0x20
led            equ        0x21
            org        0x00
            nop
            goto    initial

initial:

;set baud rate

            banksel    SPBRG
            movlw    .129            ;baud rate=9600
            movwf    SPBRG

;TX init

            bcf        TXSTA,SYNC
            bsf        TXSTA,BRGH
            banksel    TXSTA
            bsf        TXSTA,TXEN

;RC init

            banksel    RCSTA
            bsf        RCSTA,SPEN

trans:

            incf    led
            movf    led,w
            banksel    PORTB
            clrf    PORTB
            movwf    PORTB
            banksel    TRISB
            clrf    TRISB
            banksel    TXREG
            movlw    0x54
            movwf    TXREG
            end
全部回復(8)
正序查看
倒序查看
whatcall
LV.5
2
2007-10-26 19:03
程序缺少主循環,單片機會不停跑飛并復位.你看到的現象是合理的.
0
回復
flashhun
LV.2
3
2007-10-29 12:27
@whatcall
程序缺少主循環,單片機會不停跑飛并復位.你看到的現象是合理的.
主循環就是trans,僅僅為了測試,并沒有寫循環,就是想讓程序發送一個字節就中止,為什么這樣會不停的跑飛和復位呢
0
回復
xing1234
LV.6
4
2007-10-29 15:35
@flashhun
主循環就是trans,僅僅為了測試,并沒有寫循環,就是想讓程序發送一個字節就中止,為什么這樣會不停的跑飛和復位呢
我有點菜,程序看起來有些讓人頭暈.
0
回復
whatcall
LV.5
5
2007-10-29 18:59
@flashhun
主循環就是trans,僅僅為了測試,并沒有寫循環,就是想讓程序發送一個字節就中止,為什么這樣會不停的跑飛和復位呢
"就是想讓程序發送一個字節就中止",應該在end前加上
stop:
  goto stop
來停在這里,否則單片機運行起來PC指針不停累加直到溢出從0000復位啟動.
0
回復
flashhun
LV.2
6
2007-10-30 10:08
@whatcall
"就是想讓程序發送一個字節就中止",應該在end前加上stop:  gotostop來停在這里,否則單片機運行起來PC指針不停累加直到溢出從0000復位啟動.
你的意思是必須讓PC指針在指定的范圍內活動是吧,這樣來,上面的是測試的程序當然就沒有問題了,但是,我之前的程序是使用函數調用的方式發送單個字節,給定一個循環的次數,是有主循環的,循環結束后讓程序停下來,但是PC方仍然是不停的收到數據,跟蹤發現TRMT位始終不為1,這個才是我串口通信的主要問題,程序代碼如下:
;
;TARANS.ASM
;baud rate:9600
;
list p=16F73
#include

trans_c equ 0x20
led equ 0x21
org 0x00
nop
goto initial

initial:

;set baud rate

banksel SPBRG
movlw .129 ;baud rate=9600
movwf SPBRG

;TX init

bcf TXSTA,SYNC
bsf TXSTA,BRGH
banksel TXSTA
bsf TXSTA,TXEN

;RC init

banksel RCSTA
bsf RCSTA,SPEN


trans:

banksel trans_c
decfsz trans_c,f
call send1
goto trans
stop:
goto stop


send1:

banksel TXSTA
btfss TXSTA,TRMT
goto send1
banksel TXREG
movlw 0x54
movwf TXREG
return
end
0
回復
anycrying
LV.5
7
2007-10-30 18:01
@flashhun
你的意思是必須讓PC指針在指定的范圍內活動是吧,這樣來,上面的是測試的程序當然就沒有問題了,但是,我之前的程序是使用函數調用的方式發送單個字節,給定一個循環的次數,是有主循環的,循環結束后讓程序停下來,但是PC方仍然是不停的收到數據,跟蹤發現TRMT位始終不為1,這個才是我串口通信的主要問題,程序代碼如下:;;TARANS.ASM;baudrate:9600;listp=16F73#includetrans_cequ0x20ledequ0x21org0x00nopgotoinitialinitial:;setbaudratebankselSPBRGmovlw.129;baudrate=9600movwfSPBRG;TXinitbcfTXSTA,SYNCbsfTXSTA,BRGHbankselTXSTAbsfTXSTA,TXEN;RCinitbankselRCSTAbsfRCSTA,SPENtrans:bankseltrans_cdecfsztrans_c,fcallsend1gototransstop:gotostopsend1:bankselTXSTAbtfssTXSTA,TRMTgotosend1bankselTXREGmovlw0x54movwfTXREGreturnend
你那個:goto trans....,進不了后面的stop.
0
回復
whatcall
LV.5
8
2007-10-30 21:47
@flashhun
你的意思是必須讓PC指針在指定的范圍內活動是吧,這樣來,上面的是測試的程序當然就沒有問題了,但是,我之前的程序是使用函數調用的方式發送單個字節,給定一個循環的次數,是有主循環的,循環結束后讓程序停下來,但是PC方仍然是不停的收到數據,跟蹤發現TRMT位始終不為1,這個才是我串口通信的主要問題,程序代碼如下:;;TARANS.ASM;baudrate:9600;listp=16F73#includetrans_cequ0x20ledequ0x21org0x00nopgotoinitialinitial:;setbaudratebankselSPBRGmovlw.129;baudrate=9600movwfSPBRG;TXinitbcfTXSTA,SYNCbsfTXSTA,BRGHbankselTXSTAbsfTXSTA,TXEN;RCinitbankselRCSTAbsfRCSTA,SPENtrans:bankseltrans_cdecfsztrans_c,fcallsend1gototransstop:gotostopsend1:bankselTXSTAbtfssTXSTA,TRMTgotosend1bankselTXREGmovlw0x54movwfTXREGreturnend
看看anycrying的回復吧,似乎朋友對于匯編程序的結構認識還是剛入門的階段,多看一些書吧,打好基礎.
0
回復
flashhun
LV.2
9
2007-10-31 09:16
@anycrying
你那個:gototrans....,進不了后面的stop.
多謝指正,的確是我寫錯了,我把他改過來就好了,這個問題的確是我對匯編的程序結構不清楚,我不知道原來自己需要控制PC指針的活動范圍.多謝兩位,還有就是用MPLAB的sim似乎跟蹤下來的并非實際程序運行的流程,不知道這個debug是怎么用的
0
回復
主站蜘蛛池模板: 乌什县| 富阳市| 皮山县| 龙陵县| 连州市| 洛阳市| 峨边| 南昌县| 黑水县| 尼勒克县| 巧家县| 江永县| 沈丘县| 兴义市| 古蔺县| 平湖市| 黔西| 安远县| 贵德县| 辉县市| 嘉义市| 沾化县| 房山区| 深水埗区| 丰台区| 蕲春县| 佳木斯市| 巴塘县| 开鲁县| 临江市| 安多县| 阳春市| 海丰县| 明光市| 象山县| 富川| 当涂县| 富阳市| 友谊县| 东海县| 荥阳市|