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

📄 led3627g_v1.asm

📁 Led控制,这是一个不错的东东,希望对这方面的朋友有帮助
💻 ASM
字号:
;
;LED program for DGS3627G
;
;LED sequence:
;LED for copper
;Bit NO.	 1	             2	             3	            4
;Function	LNK/ACT100_24	LNK/ACT100_23	LNK/ACT100_22	LNK/ACT100_21
;Bit NO.	 5	             6	             7	            8
;Function	LNK/ACT1000_24	LNK/ACT1000_23	LNK/ACT1000_22	LNK/ACT1000_21
;
;LED for SFP
;Bit NO.	 9	             10	            11	            12
;Function	SFP24-A	        SFP24-G	        SFP23-A	        SFP23-G
;Bit NO.	13	             14	            15	            16
;Function	SFP22-A	        SFP22-G	        SFP21-A	        SFP21-G
;......
;Bit NO.	53	             54	            55	             56
;Function	SFP02-A	        SFP02-G	       SFP01-A	        SFP01-G
;
;LED for manager
;Bit NO.	 57	   58	  59   60    61	   62	 63	   64    65
;Function	7S-B1 7S-C1 7S-A2 7S-B2 7S-C2 7S-D2	7S-E2 7S-F2 7S-G2
;
;LED for XFP
;Bit NO.	 66	          67	       68
;Function	LNK/ACT_XFP2 LNK/ACT_XFP1 LNK/ACT_XFP0
;
;
LED_FE_END         equ     4
LED_COPPER_END	   equ     8   ;
LED_SFP_END        equ     32  ;8+24
LED_MANAGE_END     equ     41  ;8+24+9
LED_XFP_END        equ     44  ;8+24+9+3
LED_TOTAL_NUMBERS  equ     44  ;4+24+9+3
LED_TOTAL_BITS     equ     68  ;4*2+24*2+9+3

;Host fill this according DGS3627G_LED_PORTMAP
;DGS3627G_LED_PORTMAP[LED_TOTAL_BITS] = {
;  23,22,21,20,23,22,21,20,23,22,21,20,
;  19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,
;  0,1,2,3,4,5,6,7,8,
;  26,25,24,}; 
LED_PORTMAP        equ     0x60 

;Host update LED_LINK according link state
;bit0: 0=linkdown, 1=linkup; bit1:10/100M; bit2:1000M; bit3: 0=copper, 1=fiber
;bit4:XFP link; bit5:7 segment manage.
;one byte per port, total 27 bytes
LED_LINK           equ     0xA0

;local runtime database. one byte per port
LED_TIMER          equ     0xC0

;local global variables in this module
counter            equ     0xF8 
link_status        equ     0xFA    
phyport            equ     0xFB

; Symbolic names for the bits of the port status fields
;
RX                 equ     0x0     ; received packet
TX                 equ     0x1     ; transmitted packet
COLL               equ     0x2     ; collision indicator
SPEED_C            equ     0x3     ; 100 Mbps
SPEED_M            equ     0x4     ; 1000 Mbps
DUPLEX             equ     0x5     ; half/full duplex
FLOW               equ     0x6     ; flow control capable
LINKUP             equ     0x7     ; link down/up status
LINKEN             equ     0x8     ; link disabled/enabled status
ZERO               equ     0xE     ; always 0
ONE                equ     0xF     ; always 1

begin:
    ;initialize
    ld      A, 0
    ld      (counter), A
ledloop:
    ;Assign the first port
    ld      B, 0
    ld      (link_status), B
    add     A, LED_PORTMAP ; A= LED_PORTMAP + counter
    ld      A, (A)         ; port = LED_PORTMAP[counter]
    port    A
    ld      (phyport), A
    add     A, LED_LINK	  ; A = LED_LINK[phyport]
    call    Led_Link_Status
    inc     (counter)
    ld      A, (counter)
    cmp     A, LED_TOTAL_NUMBERS
    jnz     ledloop

sendto:
    send LED_TOTAL_BITS

Led_Link_Status:
    ld      B,(counter)
    ld     (link_status), (A)
COPPER:
    cmp     B, LED_COPPER_END  ; if (counter >= LED_GE_PORT_END) jmp SFP
    jnc     SFP 
    tst     (A), 3            ; if(copper port and sfp=1) led of copper turn off
    jc      LED_OFF_ONEBIT
COPPER_FE:
	cmp     B, LED_FE_END
	jnc     COPPER_GE
	tst     (A), 1
	jc      CHECK_LINK
	jmp     LED_OFF_ONEBIT
COPPER_GE:
	tst    (A), 2
	jc     CHECK_LINK
	jmp    LED_OFF_ONEBIT
SFP:
    cmp     B, LED_SFP_END    ; if (counter >= LED_SFP_END) jmp MANAGE
    jnc     MANAGE
    tst     (A), 3
    jc      CHECK_LINK
    jmp     LED_OFF_TWOBIT
MANAGE:
    cmp     B,LED_MANAGE_END   ; if(counter >= LED_MANAGE_END) jmp XFP
    jnc     XFP
    tst     (A),5
    jc      LED_ON_ONEBIT
    jmp     LED_OFF_ONEBIT
XFP:    
    cmp     B,LED_XFP_END
    jnc     LED_END         ; if (counter >= LED_XFP_END) jmp LED_END
    tst     (A), 4	    ; check xfp
    jc      CHECK_LINK
    jmp	    LED_OFF_ONEBIT
LED_END:
    ret

CHECK_LINK:
    tst    (A), 0
    jnc    LINK_DOWN
TRAFFIC:
    pushst  RX
    pushst  TX
    tor
    pop     
    jc      LINK_BLINK
    ld      A,(counter)
    add     A, LED_TIMER
    ld	    (A), 0    ;reset led timer
LINK_UP:
    ld      B, (link_status)
    tst     B, 3
    jc      LED_ON_GREEN   ;sfp link up
    jmp     LED_ON_ONEBIT
    
LINK_BLINK:
    ld      A, (counter)
    add     A, LED_TIMER
    inc     (A)
    ld      B,(A)
    cmp     B,2
    jc      LINK_DOWN
    cmp     B,3
    jc      LINK_UP
    ld      (A),0
    jmp     LINK_BLINK   

LINK_DOWN:
	ld      B, (link_status)
    tst     B, 3
    jnc     LED_OFF_ONEBIT
LED_OFF_TWOBIT:
    pushst    ONE
    pack
LED_OFF_ONEBIT:
    pushst    ONE
    pack
    ret 

LED_ON_ONEBIT:
    pushst    ZERO
    pack
    ret
    
LED_ON_GREEN:
    pushst    ONE
    pack
    pushst    ZERO
    pack
    ret
 

   
  
    
    

⌨️ 快捷键说明

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