3019|1

44

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求解释单片机通讯程序 [复制链接]

哪位大侠可以帮我详细解释一下,下面这段程序!
ORG 0000H
       LJMPMAIN;
       ORG0023H
       LJMPPCTX;
       ORG0100H
MAIN:   MOV SP,#30H;
       MOVP0,#00H;
       MOV60H,#12H;---------------
       MOV61H,#34H;----------------------
       MOV62H,#56H; --------
       MOV63H,#78H;---
       MOVTMOD,#20H;
       MOVTL1,#0FDH;
       MOVTH1,#0FDH;
       MOVSCON,#50H;
       MOVPCON,#00H;
       ;/MOVR3,#00H;存入数据个数(未用)
       MOVP1,#00H;
       MOVR3,#00H;
       MOVR2,#08H;
       MOVR1,#40H;数据首地址(未用)
       //MOV0B8H,#10H;  串口优先级
       SETBTR1;
       SETBES;
       //MOVDPTR,#0100H;
       SETBEA;
       MOVP0,#00H;
       MOVR4,#00H;
LOON:MOV R5,#0FH;
LOO:MOV A,R3;
       JNZLOP;
       MOVA,R4;
       MOVP1,A;
       INCR4;
       LCALLDELAY1S;
       DJNZR5,LOO;
       JMPLOON;
PCTX:    SETBP0.0;------------------
      
TX:  JBRI,LOOP;
       LCALLDELAY10;延时10ms等待;
       JNBRI,LOP;
       SETBP0.1;-----------------
       LJMPOUT;
LOOP:    MOV A,SBUF;
       MOV3EH,A;
       CLRRI;  
       MOVA,R1;
       ADDA,R3;
       MOVR0,A;
       MOV@R0,3EH;
       INCR3;存入数据个数(未用)
       MOVA,R3;-------------
       MOVP2,A;-------------
       LCALLDELAY10;
       LJMPOUT;
       //DJNZR2,OUT;
LOP:CLR ES;
       //LCALLDELAY1S;延时10ms
       MOVR1,#40H;
       MOVA,@R1;(数据地址送A比较器)
       SUBBA,#01H;(地址为01响应)
       JNZRESET;
       SETBP0.2;----------
       MOVA,41H;
       SUBBA,#03;功能码为03,对数据读操作。
       JNZLOOP1;----------------------- 数据写操作入口  
       LCALLCRC16;
       MOVR1,#46H;
       MOVA,@R1;
       SUBBA,3CH;
       JNZRESET;
       SETBP0.0;----------
       INCR1;
       MOVA,@R1;
       SUBBA,3BH;
       JNZRESET;
       MOVA,42H;
       JNZRESET;
       MOVA,43H;数据首地址R4
       RLA; 字节成以2,以字为单位;
       CLRC;
       MOVR4,A;
       MOVA,44H;
       JNZRESET;
       MOVA,45H;读数据长度R5
       SUBBA,#09H;----限制读8个字,缓冲数据存放40-5FH;数据存储在60H-7FH
       JNCRESET;
       MOVA,45H;--------频定义的数据长度。
       RLA;
       CLRC;
       MOVR5,A;
       MOVR7,A; 读数据长度R7
       MOVA,#60H;数据区转移到发送缓冲区
       ADDA,R4;
       MOVR4,A;
       MOVR6,#43H;
      
LOOP3:  MOVA,R4;数据区转移到发送缓冲区
       MOVR0,A;
       MOVA,@R0;
       MOV3EH,A;
       MOVA,R6;
       MOVR0,A;
       MOV@R0,3EH;
       INCR4;
       INCR6;
       DJNZR5,LOOP3;
      
       MOVA,R7;数据校验准备,原数据长度
       MOV42H,A;
       ADDA,#05H;
       MOVR3,A;总数据长度
       MOVR5,A;
       MOVR1,#40H;数据开始地址
       LCALLCRC16
       MOVA,R7;
       ADDA,#03;
       ADDA,#40H;
       MOVR0,A;
       MOV@R0,3CH;
       INCR0;
       MOV@R0,3BH;
       MOVR0,#40H;
       SETBES;
LOOP4:  MOVA,@R0;
       MOVSBUF,A; 发送数据
       JNBTI,$;
       INCR0;
       CLRTI;
       DJNZR5,LOOP4;
RESET:MOV R3,#00H;
       MOVR2,#08H;
       MOVR1,#40H;
OUT1:SETB P0.7;------
       AJMPOUT2;
OUT: SETB P0.6------
OUT2:NOP
       SETBES;
       RETI
LOOP1:  MOVA,41H;功能码为10入口,对数据写操作。
       SUBBA,#10H;
       JNZRESET;
       LCALLCRC16;
       MOVR0,#46H;
       MOVA,@R0;
       ADDA,#47H;
       MOVR1,A;
       MOVA,@R1;
       SUBBA,3CH;
       JNZRESET;
       SETBP0.0;----------
       INCR1;
       MOVA,@R1;
       SUBBA,3BH;
       JNZRESET;
       MOVA,42H;
       JNZRESET;
       MOVA,43H;
       RLA;以字的长度确定寄存器起始地址
       MOVR2,A;
       MOVR4,46H;写入数据的字节个数
       MOVA,46H;
       JZRESET;
       MOVA,R2;
       ADDA,#60H;
       MOVR2,A;写目标地址
       MOVR5,#47H;
MOVTX:MOV A,R5;源数据地址
       MOVR0,A;
       MOV3EH,@R0;
       MOVA,R2
       MOVR0,A;
       MOV@R0,3EH;
       INCR5;
       INCR2;
       DJNZR4,MOVTX;
       MOVR6,#0BH;
       MOVR7,#40H;
LOOP6:MOV A,R7;
       MOVR0,A;
       MOVA,@R0;
       MOVSBUF,A;
       JNBTI,$;
       INCR7;
       CLRTI;
       DJNZR6,LOOP6;
       LJMPRESET;
LOOP5:LJMP OUT;
CRC16:MOV A,R3; CRC16校验开始
       SUBBA,#02;
       MOVR4,A;
       MOV3BH,#0FFH;
       MOV3CH,#0FFH;
LOOPT:MOV A,@R1;
       XRLA,3CH;
       MOV3AH,A;
       INCR1;
       MOVDPTR,#CRCHI;
       MOVA,3AH;
       MOVCA,@A+DPTR;
       XRLA,3BH;
       MOV3CH,A; CRC16检验码高字节存放
       MOVDPTR,#CRCLOW;
       MOVA,3AH;
       MOVCA,@A+DPTR;
       MOV3BH,A;CRC16校验码低字节存放
       DJNZR4,LOOPT;
       RET
DELAY10:MOV R6,#02FH;
              DJNZR6,$;
              RET
DELAY1S:MOV R6,#0FFH;
DELA1:  MOVR7,#0FFH;
              DJNZR7,$;
              DJNZR6,DELA1;
              RET
CRCHI: DB 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H
        DB 40H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01H, 0C0H
DB 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01H
DB 0C0H,80H, 41H, 00H, 0C1H,81H, 40H, 001H, 0C0H,080H, 041H, 001H, 0C0H,080H, 041H
DB 00H, 0C1H, 081H, 040H, 001H, 0C0H, 080H, 041H, 00H, 0C1H, 081H, 040H, 00H, 0C1H, 081H
DB 040H, 01H, 0C0H, 080H, 041H, 00H, 0C1H, 081H, 040H, 01H, 0C0H, 080H, 041H, 01H, 0C0H
DB 080H, 041H, 00H, 0C1H, 081H, 040H, 00H, 0C1H, 081H, 040H, 01H, 0C0H, 080H, 041H, 01H
DB 0C0H,080H, 041H, 00H, 0C1H,081H, 40H, 01H, 0C0H,80H, 41H, 00H, 0C1H,81H, 40H
DB 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H
DB 40H, 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 01H, 0C0H
DB 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01H
DB 0C0H,80H, 41H, 01H, 0C0H,80H, 41H, 00H, 0C1H,81H, 40H, 01H, 0C0H,80H, 41H
DB 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H
DB 40H, 01H, 0C0H, 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 01H, 0C0H
DB 80H, 41H, 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 01H
DB 0C0H,80H, 41H, 00H, 0C1H,81H, 40H, 00H, 0C1H,81H, 40H, 01H, 0C0H,80H, 41H
DB 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H,40H
CRCLOW: DB 00H, 0C0H, 0C1H,01H, 0C3H, 03H, 02H, 0C2H, 0C6H, 06H, 07H, 0C7H,05H, 0C5H, 0C4H;
DB 04H, 0CCH, 0CH, 0DH, 0CDH, 0FH, 0CFH,0CEH, 0EH, 0AH, 0CAH, 0CBH, 0BH, 0C9H,09H
DB 08H, 0C8H, 0D8H, 18H, 19H, 0D9H, 1BH, 0DBH, 0DAH, 1AH, 1EH,0DEH, 0DFH, 1FH, 0DDH
DB 1DH, 1CH, 0DCH, 14H, 0D4H, 0D5H, 15H,0D7H, 17H, 16H, 0D6H, 0D2H, 12H, 13H, 0D3H
DB 11H, 0D1H, 0D0H, 10H, 0F0H, 30H, 31H, 0F1H, 33H, 0F3H,0F2H, 32H, 36H, 0F6H, 0F7H
DB 37H, 0F5H, 35H, 34H, 0F4H,3CH, 0FCH, 0FDH, 3DH, 0FFH, 3FH, 3EH, 0FEH, 0FAH, 3AH
DB 3BH, 0FBH, 39H, 0F9H, 0F8H,38H, 28H, 0E8H, 0E9H, 29H, 0EBH, 2BH, 2AH, 0EAH, 0EEH
DB 2EH, 2FH, 0EFH, 2DH, 0EDH, 0ECH, 2CH,0E4H, 24H, 25H, 0E5H, 27H, 0E7H, 0E6H, 26H
DB 22H, 0E2H, 0E3H, 23H, 0E1H, 21H, 20H,0E0H, 0A0H, 60H, 61H, 0A1H, 63H, 0A3H, 0A2H
DB 62H, 66H, 0A6H, 0A7H,67H, 0A5H, 65H, 64H, 0A4H, 6CH, 0ACH, 0ADH, 6DH, 0AFH, 6FH
DB 6EH, 0AEH, 0AAH, 6AH, 6BH, 0ABH, 69H, 0A9H, 0A8H, 68H, 78H, 0B8H, 0B9H, 79H, 0BBH
DB 7BH, 7AH, 0BAH, 0BEH, 7EH, 7FH, 0BFH,7DH, 0BDH, 0BCH, 7CH, 0B4H, 74H, 75H, 0B5H
DB 77H, 0B7H, 0B6H, 76H, 72H, 0B2H, 0B3H,73H, 0B1H, 71H, 70H, 0B0H, 50H, 90H, 91H
DB 51H, 93H, 53H, 52H, 92H, 96H, 56H, 57H,97H, 55H, 95H, 94H, 54H, 9CH, 5CH
DB 5DH, 9DH, 5FH, 9FH, 9EH, 5EH, 5AH, 9AH,9BH, 5BH, 99H, 59H, 58H, 98H, 88H
DB 48H, 49H, 89H, 4BH, 8BH, 8AH, 4AH, 4EH,8EH, 8FH, 4FH, 8DH, 4DH, 4CH, 8CH
DB 44H, 84H, 85H, 45H, 87H, 47H, 46H, 86H,82H, 42H, 43H, 83H, 41H, 81H, 80H,40H
END      
此帖出自51单片机论坛

最新回复

好长。还是汇编。汇编我学的不怎么好啊。。。  详情 回复 发表于 2013-5-30 14:20
点赞 关注
 

回复
举报

133

帖子

52

TA的资源

纯净的硅(初级)

沙发
 
好长。还是汇编。汇编我学的不怎么好啊。。。
此帖出自51单片机论坛
 
个人签名51单片机交流群  20766859.欢迎大家的加入~
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表