打印

关于modbus和汇编程序架构

[复制链接]
2568|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
riki2006|  楼主 | 2009-8-17 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
chunyang| | 2009-8-17 16:28 | 只看该作者
关键是理解协议思想和结构,只要掌握了这一点,跟用什么编程语言实现完全无关,串口通讯而已。任何程序架构讲究“结构化”,不要平铺直叙,每个功能单独使用“结构”、“模块”、“函数”、“子程序”等实现,系统平时在一个很简单的主程序框架下运行,需要执行什么功能就进行相关调用即可,这一点,编程和管理是基本相同的,只是表现形式不同而已。

使用特权

评论回复
板凳
riki2006|  楼主 | 2009-8-17 22:32 | 只看该作者
谢谢ls

使用特权

评论回复
地板
riki2006|  楼主 | 2009-8-18 23:14 | 只看该作者
ls说得很好,听你的话,静下心来先试试

使用特权

评论回复
5
5880527| | 2009-8-19 11:27 | 只看该作者
;CRC校验,待校验的数据放于R1开始的地址,字节数R4
;占用R1~5
CRC:         MOV         CRC16H,#0FFH         ;①CRC寄存器初始化
        MOV         CRC16L,#0FFH
CRP1:          MOV         R5,#008H    ;右移位8次
        MOV         A,@R1
             XRL         A,CRC16H                ;②高字节与开始8位字节进行与或运算
        MOV         CRC16H,A
CRP2:          MOV         A,CRC16L
        CLR         C
        RRC         A                        ;③把16位值向右移一位
        MOV         CRC16L,A
        MOV         A,CRC16H
        RRC         A
        MOV         CRC16H,A
        JNC         CRP3         ;④判断被移出的最低位是‘0’还是‘1’
        XRL         CRC16L,#0A0H         ;被移出的最低位为‘1’时CRC16寄存器与多项式#0A001H相异或
        XRL         CRC16H,#001H
CRP3:          DJNZ         R5,CRP2                ;⑤
        INC         R1                        ;⑥
        DJNZ         R4,CRP1                ;⑦
        RET

使用特权

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

本版积分规则

14

主题

50

帖子

0

粉丝