打印

很经典的W77E58P串口反汇编程序注解及图示

[复制链接]
1834|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2007-11-10 20:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
菜农声明: 若有雷同,纯属巧合.本贴纯属技术讨论.

;;;;串口中断服务子程序;;;;;;;;;;;;;;
L76B4:    
    PUSH  PSW;保护现场
    PUSH  ACC
    PUSH  DPL
    PUSH  DPH
    PUSH  B
    SETB  RS1
    CLR   RS0;选择第1组寄存器组,这样可以不保护08H~0FH,R0~R7=08H~0FH
    JNB   TI,L76D9;不是发送中断
;;;;串口发送中断服务子程序;;;;;;;;;;;
    CLR   TI;清除发送中断标志
    INC   R1;移动发送缓冲区指针
;;;;串口发送中断越界判断;;;;;;;;;;;
    MOV   A,R0;发送缓冲区尾指针
    MOV   B,R1;当前发送缓冲区指针
    CJNE  A,B,L76D1;发送缓冲区未满继续
    LJMP  L76D9;发送缓冲区已满退出(估计要丢数据~~~应该做成滚筒式的)
L76D1:    
    MOV   DPL,R1;当前发送缓冲区低8位地址
    MOV   DPH,#021H;发送缓冲区高8位固定地址
    MOVX  A,@DPTR;从发送缓冲区中取出数据
    MOV   SBUF,A;通过串口硬件模块发送数据
L76D9:    
    JNB   RI,L76E9;不是接收中断
;;;;串口接收中断服务子程序;;;;;;;;;;;
    CLR   RI;清除接收中断标志
    MOV   R6,#002H;设置接收中断软件标志,表示刚收到过数据
    MOV   A,SBUF;通过串口硬件模块接收数据
    MOV   DPL,R2;当前接收缓冲区低8位地址
    MOV   DPH,#020H;接收缓冲区高8位固定地址(估计为256个字节,应该是滚筒式的)
    MOVX  @DPTR,A;保存到接收缓冲区
    INC   R2;移动接收缓冲区指针
L76E9:;总之该汇编串口接收发送中断服务程序写得非常不错,应该表扬~~~
    POP   B;恢复现场
    POP   DPH
    POP   DPL
    POP   ACC
    POP   PSW
    RETI;中断返回

相关链接:https://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=2747724

相关帖子

沙发
wolfererer| | 2007-11-10 21:15 | 只看该作者

:)

使用特权

评论回复
板凳
wolfererer| | 2007-11-10 21:16 | 只看该作者

先强烈支持,然后再保存后将来学习

使用特权

评论回复
地板
dcp| | 2007-11-11 11:03 | 只看该作者

UP

使用特权

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

本版积分规则

1538

主题

21697

帖子

505

粉丝