⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 测试_24lc16.asm

📁 测试24CXX系列存取速度的源码!可用于测试元器件性能用!
💻 ASM
字号:
;//////////////////////////////////////////////
;////////////----24LC16测试板----//////////////
;//////////////////////////////////////////////
;---------------定义区-------------------------
;//////////////////////////////////////////////
B1          BIT  P1.7
B2          BIT  P1.6
RED         BIT  P1.4
SCL         BIT  P0.5
SDA         BIT  P0.3
LED_A       BIT  P0.0
LED_B       BIT  P0.1
LED_C       BIT  P0.2
LED_D       BIT  P0.4
LED_E       BIT  P0.6
LED_F       BIT  P0.7
LED_G       BIT  P1.2
LED_DP      BIT  P1.3
;//////////////////////////////////////////////
;------------------主程序----------------------
;//////////////////////////////////////////////
            ORG      0000H
            LJMP     MAIN
            ORG      0050H
MAIN:       CLR      RED
            MOV      SP,#40H
            MOV      A,#00H
LOP:        LCALL    DISB1
            LCALL    DISB2
            INC      A
            CJNE     A,#200,LOP
            MOV      30H,#0AFH
            MOV      R3,#16
            LCALL    W2416_CHAR
            MOV      TMOD,#10H
            MOV      TH1,#00H
            MOV      TL1,#00H
            SETB     EA
            SETB     ET1
            SETB     TR1                 
            LCALL    REW2416
            MOV        R3,#16
            MOV        30H,#0AFH
            LCALL     W2416_CHAR 
            CLR      EA
            CLR      TR1
            MOV      R3,#0
            MOV      R4,#0
            MOV      R5,#0
            LJMP     CHANGE
;///////////////////////////////////////////////
;-----------------子程序------------------------
;///////////////////////////////////////////////
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;-------------------------写第一个扇区-----------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
W2416_CHAR:
	LCALL     START_I2C
	MOV       R1,#0A0H
	CALL      WI2C
	MOV       R1,#00H
	CALL      WI2C
REW:	MOV       R1,30H
	CALL      WI2C
        DJNZ      R3,REW
	CALL      STOP_I2C
	RET

START_I2C:
	SETB SCL
	SETB SDA
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR SDA
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR SCL
	NOP
	NOP
	RET
STOP_I2C:
	CLR SDA
	NOP
	SETB SCL
	NOP
	NOP
	NOP
	NOP
	SETB SDA
	NOP
	NOP
	NOP
	NOP
	CLR SCL
	NOP
	NOP
	RET

WI2C:	MOV R0,#8
	MOV A,R1
	CLR C
LOOP1:	RLC A
	MOV SDA,C
	NOP
	SETB SCL
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR SCL
	DJNZ R0,LOOP1
	NOP
	NOP
	NOP
	NOP
        SETB SDA
	SETB SCL
	NOP
	NOP
	NOP
	NOP
	NOP
SSSS1:  MOV  C,SDA
        JC   SSSSS
        CLR SCL
        RET
SSSSS:  MOV  C,SDA
        JC   QQQQ
        CLR SCL
       RET
QQQQ:   SJMP  W2416_CHAR
;STANDBY: MOV C,SDA
;         JC STANDBY
;	 CLR SCL
;	 RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;第二次写 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
REW2416:   LCALL     START_I2C
	   MOV       R1,#0A2H
	   CALL      WI2C1
           RET
WI2C1:	MOV R0,#8
	MOV A,R1
	CLR C
LOOP11:	RLC A
	MOV SDA,C
	NOP
	SETB SCL
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR SCL
	DJNZ R0,LOOP11
	NOP
	NOP
	NOP
	NOP
        SETB SDA
	SETB SCL
	NOP
	NOP
	NOP
	NOP
	NOP

SSS1:  MOV  C,SDA
      JC   SSSS
      RET
SSSS: MOV  C,SDA
      JC   QQQ
      RET
QQQ: SJMP  REW2416
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DSS:    MOV  60H,R5
        MOV  50H,R4
        LJMP  LP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CHANGE:      MOV   R7,TL1
             MOV   R6,TH1
REDEC:       INC   R3                           ;R3来计算0.1MS
             CJNE  R3,#100,III
             MOV   R3,#0
             INC   R4                           ;r4是0.1ms的标志位
             CJNE  R4,#10,III
             MOV   R4,#0                        ;r5是1ms 的标志位
             INC   R5
III:         DJNZ  R7,REDEC
             DJNZ  R6,YYY
             LJMP  DSS
YYY:         MOV   R7,#00H
             SJMP  REDEC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISB1:      SETB      B1
            CLR       B2
            CLR     LED_A
            CLR     LED_B
            CLR     LED_C
            CLR     LED_D
            CLR     LED_E
            CLR     LED_F
            SETB    LED_G
            SETB    LED_DP
            MOV     R0,#05H
DELAY1:     MOV     R1,#0FFH
DELAY:      NOP
            NOP
            DJNZ    R1,DELAY
            DJNZ    R0,DELAY1
            RET

DISB2:      SETB      B2
            CLR       B1
            CLR     LED_A
            CLR     LED_B
            CLR     LED_C
            CLR     LED_D
            CLR     LED_E
            CLR     LED_F
            SETB    LED_G
            CLR      LED_DP
            MOV      R0,#05H
DELAY2:     MOV      R1,#0FFH
DELAY3:     NOP
            NOP
            DJNZ     R1,DELAY3
            DJNZ     R0,DELAY2
            RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LP:         MOV     R4,#00
PL:         LCALL   DIB11                    ;最后停止程序
            LCALL   DIB22
            INC     R4
            CJNE    R4,#200,PL
            LJMP    LP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DIB11:      SETB     B1                    ;最后显示程序
            CLR      B2
            MOV      A,50H
            MOV     DPTR,#TAB
	    MOVC    A,@A+DPTR
            RLC      A
            MOV     LED_DP,C
            RLC      A
            MOV     LED_G,C
            RLC      A
            MOV     LED_F,C
            RLC      A
            MOV     LED_E,C
            RLC      A
            MOV     LED_D,C
            RLC      A
            MOV     LED_C,C
            RLC      A
            MOV     LED_B,C
            RLC      A
            MOV     LED_A,C
            MOV     R6,#05H
DEEAY1:     MOV     R7,#00H
DEEAY:      NOP
            NOP
            DJNZ    R7,DEEAY
            DJNZ    R6,DEEAY1
            RET

DIB22:      SETB     B2
            CLR      B1
            MOV      A,60H
            MOV     DPTR,#TAB
	    MOVC    A,@A+DPTR
            RLC      A
            MOV     LED_DP,C
            RLC      A
            MOV     LED_G,C
            RLC      A
            MOV     LED_F,C
            RLC      A
            MOV     LED_E,C
            RLC      A
            MOV     LED_D,C
            RLC      A
            MOV     LED_C,C
            RLC      A
            MOV     LED_B,C
            RLC      A
            MOV     LED_A,C
            CLR     LED_DP                         ;加小数点
            MOV     R6,#05H
DEAYY1:     MOV     R7,#0FFH
DEAYY:      NOP
            NOP
            DJNZ    R7,DEAYY
            DJNZ    R6,DEAYY1
            RET

TAB:	    DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -