打印

不会用汇编写串口中断接收多字节数据

[复制链接]
2056|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
riki2006|  楼主 | 2009-10-16 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
riki2006|  楼主 | 2009-10-16 11:07 | 只看该作者
我是刚用汇编 请大家不吝赐教

使用特权

评论回复
板凳
5880527| | 2009-10-16 11:11 | 只看该作者
MOV   A,SBUF
MOV   @R0,A
INC     R0
最好是放到80H后的那些单元

使用特权

评论回复
地板
wh6ic| | 2009-10-16 11:28 | 只看该作者
cseg        at        0x0023
_SIO:        ;ljmp        Sio_Interrupt
        jbc        ri, Sio_Load0
        jbc        ti, Sio_Sent0
        reti
;


;
Sio_Load0:
        push        ar0
        mov        r0, SioBuffer        ;0xa0 ~ 0xaf
        mov        @r0, sbuf
        inc        SioBuffer
        clr        SioBuffer.4               ;地址卷绕
        pop        ar0
        reti

三楼办法要多保护一个A累加器

使用特权

评论回复
5
5880527| | 2009-10-16 12:12 | 只看该作者
道理是有一点,我的串口中断里一些简单的工作,比如信息长度是否超界判断,站号判断,都需要用到A的,所以还是要保护它,如果你在中断外判断那或许就不用了。那个发送也需要用到A,你那个程序也需要在外边发送

使用特权

评论回复
6
huangqi412| | 2009-10-16 12:36 | 只看该作者
...  数组=一块连续的地址...  多字节放数组里,      收一个,地址后推一个.

使用特权

评论回复
7
riki2006|  楼主 | 2009-10-16 12:49 | 只看该作者
receive:    DS    10   


IS_UART_RECEIVE:
        CLR RI
                PUSH ACC
                mov R0,receive
                MOV @R0,SBUF
                inc receive
                setb receive_flag
                POP ACC
                RETI

楼上各位 这样对吗

使用特权

评论回复
8
riki2006|  楼主 | 2009-10-16 13:36 | 只看该作者
如题,比如上位机发过来的一帧数据为:02H 31H 41H 44H 45H 0DH  其中包头为02H  包尾为0DH,当串口接到02H时,指针指到接收缓冲的开始,然后依次接受余下的数据并存到接收缓冲区(数组),当接收完整个帧时,指针指回到缓冲区的开始,并置为接收完标志. 不考虑校验。 请高手给与指点 谢谢

使用特权

评论回复
9
riki2006|  楼主 | 2009-10-16 16:36 | 只看该作者
本帖最后由 riki2006 于 2009-10-16 16:37 编辑

汇编语言是不是再接收多帧数据时 只能是中断启动接收 然后再查询接收啊 如下所示:
设置中断入口地址就好
      0x0000h
ljmp main
      0x0023h
ljmp com
    0x0030h
main:mov ie,#93h
    sjmp $
com:mov r1,#54h  //address by saved   中断启动接收?
    mov r2,#10h  //length
    mov r0,sbuf
    mov a,r0
    cjne a,#02h,comret
rcv:jnb ri,$                       ;然后查询接收?
    clr ri
    mov @r1,sbuf
    inc r1
    djnz r2,rcv
comret:ret
以上转自CSDN

我的书本上也是这样子的 是不是如果采用中断 只能这样子啊

使用特权

评论回复
10
不亦心| | 2009-10-16 16:48 | 只看该作者
要嘛用中断要嘛用查询,没必要两者都用。

使用特权

评论回复
11
riki2006|  楼主 | 2009-10-16 16:53 | 只看该作者
呵呵  ls是不是群主啊?

使用特权

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

本版积分规则

14

主题

50

帖子

0

粉丝