求解释单片机通讯程序

2019-03-24 18:44发布

哪位大侠可以帮我详细解释一下,下面这段程序!ORG 0000H       LJMPMAIN;       ORG0023H       LJMPPCTX;        ORG0100HMAIN:   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,$;               RETDELAY1S: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, 0C0HDB 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01HDB 0C0H,80H, 41H, 00H, 0C1H,81H, 40H, 001H, 0C0H,080H, 041H, 001H, 0C0H,080H, 041HDB 00H, 0C1H, 081H, 040H, 001H, 0C0H, 080H, 041H, 00H, 0C1H, 081H, 040H, 00H, 0C1H, 081HDB 040H, 01H, 0C0H, 080H, 041H, 00H, 0C1H, 081H, 040H, 01H, 0C0H, 080H, 041H, 01H, 0C0HDB 080H, 041H, 00H, 0C1H, 081H, 040H, 00H, 0C1H, 081H, 040H, 01H, 0C0H, 080H, 041H, 01HDB 0C0H,080H, 041H, 00H, 0C1H,081H, 40H, 01H, 0C0H,80H, 41H, 00H, 0C1H,81H, 40HDB 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81HDB 40H, 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 01H, 0C0HDB 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01HDB 0C0H,80H, 41H, 01H, 0C0H,80H, 41H, 00H, 0C1H,81H, 40H, 01H, 0C0H,80H, 41HDB 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81HDB 40H, 01H, 0C0H, 80H, 41H, 01H, 0C0H, 80H, 41H, 00H, 0C1H, 81H, 40H, 01H, 0C0HDB 80H, 41H, 00H, 0C1H, 81H, 40H, 00H, 0C1H, 81H, 40H, 01H, 0C0H, 80H, 41H, 01HDB 0C0H,80H, 41H, 00H, 0C1H,81H, 40H, 00H, 0C1H,81H, 40H, 01H, 0C0H,80H, 41HDB 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,09HDB 08H, 0C8H, 0D8H, 18H, 19H, 0D9H, 1BH, 0DBH, 0DAH, 1AH, 1EH,0DEH, 0DFH, 1FH, 0DDHDB 1DH, 1CH, 0DCH, 14H, 0D4H, 0D5H, 15H,0D7H, 17H, 16H, 0D6H, 0D2H, 12H, 13H, 0D3HDB 11H, 0D1H, 0D0H, 10H, 0F0H, 30H, 31H, 0F1H, 33H, 0F3H,0F2H, 32H, 36H, 0F6H, 0F7HDB 37H, 0F5H, 35H, 34H, 0F4H,3CH, 0FCH, 0FDH, 3DH, 0FFH, 3FH, 3EH, 0FEH, 0FAH, 3AHDB 3BH, 0FBH, 39H, 0F9H, 0F8H,38H, 28H, 0E8H, 0E9H, 29H, 0EBH, 2BH, 2AH, 0EAH, 0EEHDB 2EH, 2FH, 0EFH, 2DH, 0EDH, 0ECH, 2CH,0E4H, 24H, 25H, 0E5H, 27H, 0E7H, 0E6H, 26HDB 22H, 0E2H, 0E3H, 23H, 0E1H, 21H, 20H,0E0H, 0A0H, 60H, 61H, 0A1H, 63H, 0A3H, 0A2HDB 62H, 66H, 0A6H, 0A7H,67H, 0A5H, 65H, 64H, 0A4H, 6CH, 0ACH, 0ADH, 6DH, 0AFH, 6FHDB 6EH, 0AEH, 0AAH, 6AH, 6BH, 0ABH, 69H, 0A9H, 0A8H, 68H, 78H, 0B8H, 0B9H, 79H, 0BBHDB 7BH, 7AH, 0BAH, 0BEH, 7EH, 7FH, 0BFH,7DH, 0BDH, 0BCH, 7CH, 0B4H, 74H, 75H, 0B5HDB 77H, 0B7H, 0B6H, 76H, 72H, 0B2H, 0B3H,73H, 0B1H, 71H, 70H, 0B0H, 50H, 90H, 91HDB 51H, 93H, 53H, 52H, 92H, 96H, 56H, 57H,97H, 55H, 95H, 94H, 54H, 9CH, 5CHDB 5DH, 9DH, 5FH, 9FH, 9EH, 5EH, 5AH, 9AH,9BH, 5BH, 99H, 59H, 58H, 98H, 88HDB 48H, 49H, 89H, 4BH, 8BH, 8AH, 4AH, 4EH,8EH, 8FH, 4FH, 8DH, 4DH, 4CH, 8CHDB 44H, 84H, 85H, 45H, 87H, 47H, 46H, 86H,82H, 42H, 43H, 83H, 41H, 81H, 80H,40HEND       此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
bintimes
1楼-- · 2019-03-25 03:38
好长。还是汇编。汇编我学的不怎么好啊。。。

一周热门 更多>