用汇编怎么能让串口一次发送多个数据

ld21502839   2007-6-12 01:41 楼主

用汇编怎么能让串口一次发送多个数据

回复评论 (8)

我要发很多十六进制数, 0012H,0013H,0015 等等

MOV A,#0012H
MOV SBUF,
CLR TI
那是发一个的.
但我想把它们全发出去,一班应该怎么写?
点赞  2007-6-12 01:57
做个缓冲区,定时发,
点赞  2007-6-12 08:39
本质上,串口就是串行通信,一次发一个位,一帧发一个字节
它不可能同时发这么多数据

点赞  2007-6-12 08:40
看LZ的意思已经知道了循环发送的方式,也就只有那样了,别无它法
点赞  2007-6-12 08:44
哈哈 他想要一个循环发送最经典的代码 代表我女儿谢谢大家了
点赞  2007-6-12 13:07
经典?

两个思路:
一:定长发送
发送一定的长度(相当于一帧数字)

二:定特殊字符
除非遇到自己定义的特殊字符(像C标准库里定义的是'\0')不然就不停循环发送缓冲区里的数据

呵呵,一般就这两个
点赞  2007-6-12 13:22
ORG 0000H
        AJMP START
ORG 000BH
        AJMP TIMER1               
ORG 0023H
        AJMP SERIAL
ORG 30H

START:
        MOV DPTR,#TABLE
       
        MOV SP,#5FH
        MOV TMOD,#00100101B                ;定时计数器1作计数用,1。0不用全置0
        MOV PCON,#80H
        MOV TH1,#0FDH
        MOV SCON,#50H
        ;预置值,要求每计到6个脉冲即为一个事件
        MOV TH0,#0FFH
        MOV TL0,#0FAH
        SETB REN
        SETB TR1
        SETB TR0
        SETB EA
        SETB ET0
        SETB ES
        GG:JNB P1.1,COMMFS
        AJMP GG
;串口发数据
COMMFS:
        MOV A,#01FH
        ;CLR A
        ;MOVC A,@A+DPTR
        ;MOV SBUF,A
        ;CLR RI
        ;CJNE A,#01H,LOOP1
       
        ;LCALL DELAY
        ;AJMP GG
        ;LOOP1:INC DPTR
        ;AJMP COMMFS
        MOV SBUF,A
        CLR RI
        LCALL DELAY
        JBC TI,GG                                        ;如果TI等于1则清TI并转GG
;串口收数据
SERIAL:
        MOV A,SBUF
        MOV P2,A
        CLR RI
        RETI
;串口发数据
TIMER1:
        MOV TH0,#0FFH
        MOV TL0,#0FAH
        ;MOV A,#011H
        ;改一次发多个数
        LX:CLR A
        MOVc A,@a+DPTR
        MOV A,#05H
        MOV SBUF,A
        CLR RI
        CJNE A,#01H,LOOP2
        LCALL DELAY
        RETI
        LOOP2:INC DPTR
        AJMP LX

        ;MOV SBUF,A
        ;LCALL DELAY
        ;CLR RI
        ;RETI
;延时子程序
DELAY:       
        MOV R7,#0FFH
        DJNZ R7,$
        RET
        ;表数据
        TABLE:DB 05H,05H,31H,05H,05H
              DB 05H,05H,05H,05H,05H
              DB 01H
END

帮我看看我串口发送有什么问题
点赞  2007-6-12 14:31
你是说你的这段程序不能正确的发完所有数。是吗?
点赞  2007-6-15 09:44
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复