打印

串口问题

[复制链接]
1293|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jakey0225|  楼主 | 2007-10-26 12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是串口中断服务程序
完成接收两个字节的任务,其中第一个字节是地址,须与存放在30H的内容一致,然后发送本机地址加24字节数据,与计算机串口调试程序调试时,串口没反映。
UART:    PUSH ACC
    PUSH PSW
    PUSH 01H

    JBC TI,OVER    ;UART INTERRUPT
WAIT:    JBC RI,READ
    AJMP WAIT
READ:    MOV R2,#1AH
    MOV R0,#40H
    MOV R3,#80H
    
    JB 00H,REC
    MOV A,SBUF
     CJNE A,30H,OUT
    SETB 00H
    MOV R3,A
    MOV R1,A
    LJMP OUT
REC:    MOV A,SBUF
    MOV @R1,A
    INC R1
    CJNE R1,#81H,OUT
    CLR 00H
    SETB P3.2
    CLR P3.3

    MOV A,30H
    MOV SBUF,A

    DEC R2
    LJMP OUT
CON:    ;CLR TB8
    MOV A,@R0
    MOV SBUF,A
    INC R0
    LJMP OUT
OVER:    DJNZ R2,CON
OUT:    POP 01H
    POP PSW
    POP ACC
    RETI

相关帖子

沙发
hotpower| | 2007-10-26 13:39 | 只看该作者

00h,03h,20h都应该保护

使用特权

评论回复
板凳
jakey0225|  楼主 | 2007-10-26 13:51 | 只看该作者

?

就是因为保护才出问题吧
R1保护,在接受第二个字节时,它已变化,以至于不能发送
可是我改了,还是有问题

UART:    PUSH ACC
    PUSH PSW
    PUSH 01H

    JBC TI,OVER    ;UART INTERRUPT
WAIT:    JBC RI,READ
    AJMP WAIT
READ:    MOV R2,#1AH
    MOV R0,#40H
    MOV R3,#80H
    
    JB 00H,REC
    MOV A,SBUF
     CJNE A,30H,OUT
    SETB 00H
    MOV A,R3
    MOV R4,A
    LJMP OUT
REC:    MOV A,R4
    MOV R1,A
    MOV A,SBUF
    MOV @R1,A
    MOV A,R4
    ADD A,#01H
    MOV R4,A
    CJNE R4,#81H,OUT
    CLR 00H
    SETB P3.2
    CLR P3.3

    MOV A,30H
    MOV SBUF,A

    DEC R2
    LJMP OUT
CON:    ;CLR TB8
    MOV A,@R0
    MOV SBUF,A
    INC R0
    LJMP OUT
OVER:    DJNZ R2,CON
OUT:    POP 01H
    POP PSW
    POP ACC
    RETI

使用特权

评论回复
地板
hab2000| | 2007-10-26 14:31 | 只看该作者

要等TI=0后才能再发数据。你看看你是这样的吗?

使用特权

评论回复
5
jakey0225|  楼主 | 2007-10-26 15:22 | 只看该作者

是呀
一次中断就只发送一个字节
其实应该不是发送问题
刚开始我接收一个字节,发25个字节没有问题
但我改成接两个字节就不行了

使用特权

评论回复
6
工控秀才| | 2007-10-26 15:24 | 只看该作者

用仿真器捕捉

用仿真器捕捉,关键字:波特率,ASCII码和HEX!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

45

帖子

0

粉丝