我把下面的程序放在主程序里怎么没反映呢,串口精灵没有输出字符啊!!!!
我用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 ;否!应该返回继续查表
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
INCLUDE "P18f248.INC"
org 0x0000 ;复位矢量
goto main ;跳转到初始化程序
org 0x0040 ;中断矢量
count1 equ 0x72 ;定义一个查表1显示计数器
temp equ 0x73 ;定义一个临时寄存器
RP0 equ 5h
DATA1 equ 0x74
TEMP equ 0x75
rc equ 0x76
loop movf count1,0 ;count1作为查表地址偏移量送入W
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'i'
retlw a's'
retlw a' '
retlw a'p'
retlw a'i'
retlw a'c'
retlw a'1'
retlw a'8'
retlw a'f'
retlw a'2'
retlw a'4'
retlw a'8'
retlw a'.'
retlw a' '
retlw a' '
retlw 0
clrf count1
read2 movf rc,0 ;字符串"What is your name?"
addwf PCL,1
retlw a'W'
retlw a'h'
retlw a'a'
retlw a't'
retlw a' '
retlw a'i'
retlw a's'
retlw a' '
retlw a'y'
retlw a'o'
retlw a'u'
retlw a'r'
retlw a' '
retlw a'n'
retlw a'a'
retlw a'm'
retlw a'e'
retlw a'?'
retlw 0
clrf rc
GetData btfss PIR1,TXIF ;等待,直到USART空闲
goto GetData
call loop ;查表
movwf temp ;
movwf TXREG ;查表值送USART
incf count1,1 ;查表计数器加1
incf count1,1
movf temp,0
btfss STATUS,Z ;检查到读表值为"0"了吗
goto GetData ;继续发送
return
;goto $ ;是!结束查表,转到其它处理(这里在此死循环)
fb movf RCREG,0
sublw 0x0d
btfss STATUS,Z
goto fb
movf RCREG,0 ;重新从USART接收数据到W
movwf TXREG ;并且转送回去
movf rc,0 ;清0读表索引值寄存器
call read2 ;调用读表子程序
incf rc,1 ;读表索引值递增
incf rc,1
subwf RCREG,0 ;输入信息与合法信息比较
btfsc STATUS,Z ;看是否相符?
call loop
goto fb
bsf PORTB,7
clrf rc
return
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初始化应设为输入)
bcf TRISB,7
return
main
call init232
m2 call fb
clrf count1
clrf rc
goto m2
;bsf PORTB,7
end
一周热门 更多>