?? test.asm
字號:
;/* local global variables in this module.prefer less variables. */
inc_flag equ 0xc0
digital_num equ 0xc1 ;/*set digital number,bit 7 is number 10 seg, bit 6-0 is number 0-9 seg*/
;port_number equ 0xc2 ;/*light port number*/
port_number equ 59 ;/*light port number*/
;start_port equ 0xc3 ;/*start test port number,27 for 3400-28,1 for 3400-52 */
start_port equ 29 ;/*start test port number,27 for 3400-28,1 for 3400-52 */
;end_fe_number equ 0xc4 ;/*end fe phy port,29 for 3400-28,53 for 3400-52*/
end_fe_number equ 29 ;/*end fe phy port,29 for 3400-28,53 for 3400-52*/
;port_type equ 0xc5 ;/*GE/FE flag*/
port_type equ 0xc5 ;/*GE/FE flag*/
ge_comba_flag equ 0xc6 ;/*bit 0 for first port ,1-show status,0-off this port led*/
ge_port_count equ 0xc7 ;/*3400-28 have 4 ge port led, 3400-52 have 6 ge port led and 2 padding port*/
ge_port_map equ 0xc8 ;/*8 bytes array,3400-28 is {1,2,4,5}, 3400-52 is {4,5,4,5,1,2,1,2}*/
digital_data equ 0xd0 ;/*0-0xd0,1-0xd1,...*/
;/* const variables*/
RX equ 0x0 ; received packet
TX equ 0x1 ; transmitted packet
COLL equ 0x2 ; collision indicator
SPEED_L equ 0x3 ; 100 Mbps
SPEED_H 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
increase_flag_couter:
inc (inc_flag)
ld a,(inc_flag)
cmp a,8
jnz start_function
ld a,0
ld (inc_flag),a ;clear counter
increase_port_number:
inc (port_number)
ld a,(port_number)
cmp a,61
jnz increase_stack_number
ld a,(start_port)
ld (port_number),a
increase_stack_number:
inc (digital_num)
ld a,(digital_num)
cmp a,21
jnz start_function
ld a,0
ld (digital_num),a
start_function:
;first padding non-used bit for 3400-28
ld b,0
Padding_loop:
inc b
cmp b,(start_port)
jz next_step
call set_led_off
jmp Padding_loop
next_step:
;second set fe port status
set_fe_port:
ld b,5
ld a,0
ld (port_type),a ;set FE port status
fe_loop:
inc b
port b
call set_port_status
cmp b,(end_fe_number)
jnz fe_loop
set_ge_port:
ld b,0
ld a,1
ld (port_type),a ;set FE port status
ge_loop:
ld a,ge_port_map
add a,b
ld a,(a)
port a
ld a,(ge_comba_flag)
tst a,b
jnc comba_off_port
call set_port_status
ge_loop_tmp:
inc b
cmp b,(ge_port_count)
jnz ge_loop
jmp digital_led
comba_off_port:
call set_led_off
jmp ge_loop_tmp
digital_led:
;set digital number
call set_digital
send 120
;{sub routine for digital number set
set_digital:
ld a,(digital_num)
add a,digital_data
ld b,(a)
ld a,0
number_loop:
tst b,a
push CY
pack
inc a
cmp a,8
jnz number_loop
ret
;}end sub routine for digital number set
;{sub routine for port status set
set_port_status:
pushst LINKUP
jc set_link_up
jmp set_led_off;link down
set_link_up:
pushst RX
pushst TX
tor
pop
jnc set_led_on
;blink
ld a,(inc_flag)
tst a,2
jnc set_led_on
jmp set_led_off
set_led_on:
ld a,(port_type)
cmp a,1
jnz set_fe_speed
jmp set_ge_speed
set_ge_speed:
pushst SPEED_H ; 1000 Mbps
jc set_led_green
jmp set_led_yellow
set_fe_speed:
pushst SPEED_L ; 100 Mbps
jc set_led_green
jmp set_led_yellow
set_led_off:
ld a,(port_number)
cmp a,58
jz set_led_green
cmp a,60
jz set_led_yellow
ld a,0xff
jmp set_led_bit_from_ra
set_led_green:
ld a,0x55
jmp set_led_bit_from_ra
set_led_yellow:
ld a,0xaa
jmp set_led_bit_from_ra
set_led_bit_from_ra:
tst a,0
push CY
pack
tst a,1
push CY
pack
ret
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -