| ??? 08/06/00 23:35 Read: times |
#4186 - DS1821 SUB-PROGRAM |
ORG 0000H
LJMP MAIN ORG 000BH AJMP DS1821 CRC EQU 60H ORG 30H ... ³õʼ»¯³ÌÐò £»´ÓÂÔ ... ; MOV 40H,#02H ; MOV 3FH,#1CH ; MOV 3EH,#0B8H ; MOV 3DH,#01H ; MOV 3CH,#00H ; MOV 3BH,#00H ; MOV 3AH,#00H ... MAIN: ACALL KEYBOARD £»´ÓÂÔ ACALL DISPLAY £»´ÓÂÔ ... ORL PCON.0,#01H AJMP MAIN DS1821£ºÑ¹ÈëÐèÒª±£»¤µÄ¹¤×÷¼Ä´æÆ÷ ÅжÏʱ¼ä>1Ã룿·ñÔò³ÌÐòÌø³ö¡£ ACALL RESET1 ;READ SERAIL NUMBER MOV R7,#33H ACALL WRBYT MOV R1,#40H ;RESULT IN 40H 41H 42H 43H 44H 45H MOV R3,#08H ACALL RDBYTS MOV R2,#40H ;PLACE HIGH STRAT ADDRESS MOV R3,#07H ACALL CRC4 ;CRC4 CHECK ;READ SCRATCHPAD MOV R7,#0BEH ;PLACE COMMAND BYTE ACALL WRBYT MOV R7,#0BEH ;PLACE COMMAND BYTE ACALL WRBYT MOV R1,#50H ;RESULT IN 40H 41H 42H 43H 44H 45H MOV R3,#08H ACALL RDBYTS µ¯À´Ñ¹ÈëµÄ¹¤×÷¼Ä´æÆ÷ RETI ;*********************************************** ;CRC4 CHECK R2=LOW ADDRESS,R3=NUMBER OF BYTES ;*********************************************** CRC4: MOV A,R2 MOV R0,A MOV CRC,#00H CRC0: MOV A,@R0 DO_CRC: PUSH ACC PUSH B PUSH ACC MOV B,#08H CRC_LOOP: XRL A,CRC RRC A MOV A,CRC JNC ZERO XRL A,#18H ZERO: RRC A MOV CRC,A POP ACC RR A PUSH ACC DJNZ B,CRC_LOOP POP ACC POP B POP ACC INC R0 DJNZ R3,CRC0 RET RESET1: NOP SETB P1.0 NOP NOP NOP CLR P1.0 ACALL DE600 ACALL DE60 ACALL DE60 SETB P1.0 ACALL DE30 MOV C,P1.0 ;JNC RESET1 ACALL DE60 MOV C,P1.0 JC RESET1 ;ACALL DE600 RET ;********************************* ;R0=TIMES DELAY TIME=5+R0*3 us ;********************************* DELAY: NOP DJNZ R0,DELAY DEEND: RET ;********************************* ;DELAY 60us 2+1+2+16*3+2=55 ;********************************* DE60: MOV R0,#10H ACALL DELAY RET ;********************************* ;DELAY 50us 2+1+2+13*3+2=46 ;********************************* DE50: MOV R0,#0DH ACALL DELAY RET ;********************************* ;DELAY 30us 2+2+1+2+7*3=28 ;********************************* DE30: MOV R0,#07H ACALL DELAY RET ;********************************* ;DELAY 600us 2+1+2+148*3+2=550 ;********************************* DE600: MOV R0,#96H ACALL DELAY RET ;********************************* ;DELAY 8us 2+1+2+2=7 ;********************************* DE8: NOP NOP NOP RET ;******************************** ;WRITE 1 ;******************************** WR1: SETB P1.0 ACALL DE8 CLR P1.0 ACALL DE8 NOP SETB P1.0 SETB P1.0 ACALL DE8 ACALL DE50 ACALL DE30 RET |



