winnie 发表于 2009-3-20 17:02:29

PIC的串口数据传送与接收的问题

在做pic串口通信的过程中,TXREG中的数据老是发不出去,该设的一些参数我也都设置好的,哎结果就是移位寄存器中的数据传不出去,TXIF标志老是不变,使得第二次数据的发送不能产生。现附上我的程序,UART_Init(发送数据的程序)
bankselTRISC
bcf    TRISC,6
bsf    TRISC,7
bankselSPBRG
movlwD'25'
movwfSPBRG
bankselTXSTA
bsf    TXSTA,BRGH
bcf    TXSTA,SYNC
bsf    TXSTA,TXEN
banksel RCSTA
bsf   RCSTA, CREN
bsf    RCSTA,SPEN


Send_Data
         banksel PIR1
      btfscPIR1,TXIF
      goto   Send_Data1
      goto   Send_Data

Send_Data1
       bankselAD1H
      movf AD1H,w
      banksel TXREG   
      movwf TXREG
   callDELAY
   Wait1
      banksel PIR1
   btfscPIR1,TXIF
   goto   Send_Data2
   goto   Wait1
Send_Data2
      banksel AD1L
      movf AD1L,w
      banksel TXREG   
      movwf TXREG
      call   DELAY
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY

          movlwD'5'
      movwf10
LOOP
          movlw   D'5'
               movwf   11
LOOP1
         decfsz 11,1
         goto    LOOP1
         decfsz   10,1
             goto   LOOP
            return

Over
                end

winnie 发表于 2009-3-20 17:02:50

为什么非要用TXIF判断呢,可以通过TMRT BIT来判断的。看看这个发送子程序

input :w

sent

       movwftxreg

       bsf   status,rp0

      btfss    txsta。tmrt

   goto      $-1

   bcf    status,rp0

   return

winnie 发表于 2009-3-20 17:03:09

发现了你的错误
Send_Data2
      banksel AD1L
      movf AD1L,w
      banksel TXREG   
      movwf TXREG
      call   DELAY

此处少了一跳转指令
页: [1]
查看完整版本: PIC的串口数据传送与接收的问题