谁能帮看下我这个RS232收发字符串的程序问题在哪??

2020-02-09 11:24发布

我把下面的程序放在主程序里怎么没反映呢,串口精灵没有输出字符啊!!!!
我用PIC18F248

loop       movf count1,0 ;count1作为查表地址偏移量送入W
           read1 ;字符串"my name"
           addwf PCL,1 ;地址偏移量加当前PC值
           retlw a' ' ;换行控制符号,即0DH=<CR>
           retlw a' ' ;回车控制符号,即0AH=<LF>
           retlw a'M' ;送回到微机超级终端的字符串
           retlw a'y'
           retlw a' '
           retlw a'n'
           retlw a'a'
           retlw a'm'
           retlw a'e'   
           retlw a' '
           retlw a' ' ;
           retlw 0
           movwf temp ;
GetData    btfss PIR1,TXIF ;等待,直到USART空闲
           goto GetData
           movwf TXREG ;查表值送USART
           incf count1,1 ;查表计数器加1
           movf temp,W ;检查到读表值为"0"了吗
           btfss STATUS,Z ;是!跳一步,结束查表
           goto loop ;否!应该返回继续查表
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
youmcu
2020-02-09 18:28
retlw 是带参数返回指令,你这里loop只能call,不可用goto
  movwf TXREG ;查表值送USART -- 这句应放在call  loop  之后

串口初始化: 之前要将RX引脚设为输入
;******************************************************************
;                init232 - 初始化串行口(init serial port)
;******************************************************************
init232                clrf                STATUS
                bsf                STATUS,RP0                ; BANK1
                movlw                b'00100100'
                movwf                TXSTA                        ; 选择异步高速 传输8位数据方式 发送允许
                movlw                .25
                movwf                SPBRG                        ; 将传输的波特率设为约9600bps(4M)

                clrf                STATUS                        ; BANK0

                movlw                b'10010000'                ; 选择异步高速 传输8位数据方式 接收允许
                movwf                RCSTA                        ; 自动将RC6、RC7配置为串口工作方式(TRISC,7初始化应设为输入)

                return

;******************************************************************

一周热门 更多>