哪位大侠可以帮我详细解释一下,下面这段程序!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
此帖出自
小平头技术问答
一周热门 更多>