📄 led.asm
字号:
PEDATDIR .SET 7095H
led1 .set 6000h
led2 .set 8000h
led3 .set 0a000h
.bss confirm,1
.bss key_read_time,1
.bss key_temp,1
.bss point_flag,1
.bss led_pos,1
.bss pos,1
.bss flash_num,1
.bss show_num,1
.bss flash_code,1
.bss led_send_flag,1
.bss temp_high,1
.bss temp_low,1
.bss buffer,1
.bss led_data,1
.bss set_data,1
.bss count_value,1
.bss count_value2,1
.bss led01,1
.bss led02,1
.bss led03,1
.bss led04,1
.bss led05,1
.bss led06,1
.bss ledcode01,1
.bss ledcode02,1
.bss ledcode03,1
.bss ledcode04,1
.bss ledcode05,1
.bss ledcode06,1
.bss ledcodeflash01,1
.bss ledcodeflash02,1
.bss ledcodeflash03,1
.bss ledcodeflash04,1
.bss ledcodeflash05,1
.bss ledcodeflash06,1
.bss Temp1,1
.bss neg_flag,1
.bss neg_flag_1,1
.def _led_show
.global _led_show
;===========================================================
;键盘程序
;===========================================================
;===========================================================
;读键盘,E1=MODE;E2=SHIFT;E3=+,E4=-,E5=SET
;===========================================================
key_read:
setc SXM
ldpk key_read_time
lacc key_read_time
add #1
sacl key_read_time
sub #200
bnz ret_key
READKEY:
LDP #PEDATDIR>>7
LACC PEDATDIR
and #003Eh
ldpk key_temp
sacl key_temp
sub #03Eh
bnz have_key
call getcode
splk #0,key_read_time
b ret_key
have_key:
splk #-4000,key_read_time ;每个按键需要处理时间200ms,在这200ms内不相应其他键值
lacc key_temp
and #002h
bz key_s1 ;模式键
lacc key_temp
and #04h
bz key_s2 ;移位键
lacc key_temp
and #08h
bz key_s3 ;+键
lacc key_temp
and #010h
bz key_s4 ;+键
lacc key_temp
and #020h
bz key_s5 ;确定键
b ret_key
ret_key:
ret
;===========================================================
;键处理程序
;===========================================================
;================
;mode key
;================
key_s1:
lacc confirm
add #10h
sacl confirm
sub #30h
bnz led_mode_select
splk #0,confirm
led_mode_select:
lacc confirm
bz start_state
sub #10h
bz mode_show
sub #10h
bz mode_set
splk #0,confirm
b led_mode_select
start_state:
splk #0,point_flag
splk #0,led_pos
splk #19h, led01 ;p
splk #0fh, led02 ;S
splk #018h, led03 ;d
splk #01ah, led04 ;_
splk #0Ch, led05 ;H
splk #017h, led06 ;T
b ret_key
mode_show:
splk #0,point_flag
splk #1,led_pos
splk #0ah,led01 ;_
splk #0ah,led02 ;show__;_
splk #11h,led03 ;0
splk #11h,led04 ;0
splk #0ch,led05 ;H
splk #0fh,led06 ;S
b ret_key
mode_set:
splk #0,point_flag
splk #1,led_pos
splk #0ah,led01 ;_
splk #0ah,led02 ;_
splk #011h,led03 ;set__;0
splk #017h,led04 ;T
splk #0bh,led05 ;E
splk #0fh,led06 ;S
b ret_key
;====================
;+ key
;====================
key_s3:
lacc confirm
bz ret_key
sub #11h
bz ret_key
lacc led_pos ;led_pos=1 =low bit
sub #1
bz led01_add
sub #1
bz led02_add
sub #1
bz led03_add
sub #1
bz led04_add
sub #1
bz led05_add
sub #1
bz led06_add
splk #1h,led_pos
b ret_key
led01_add:
lacc led01
add #1
sacl led01
sub #0ah
blz ret_key
splk #0,led01
b ret_key
led02_add:
lacc led02
add #1
sacl led02
sub #0ah
blz ret_key
splk #0,led02
b ret_key
led03_add:
lacc led03
add #1
sacl led03
sub #0ah
blz ret_key
splk #0,led03
b ret_key
led04_add:
lacc led04
add #1
sacl led04
sub #0ah
blz ret_key
splk #0,led04
b ret_key
led05_add:
lacc led05
add #1
sacl led05
sub #0ah
blz ret_key
splk #0,led05
b ret_key
led06_add:
lacc led06
sub #17
bz aabb
splk #17,led06
b ret_key
aabb:
splk #20,led06
b ret_key
;====================
;- key
;====================
key_s4:
lacc confirm
bz ret_key
sub #11h
bz ret_key
lacc led_pos ;led_pos=1 =low bit
sub #1
bz led01_add_1
sub #1
bz led02_add_1
sub #1
bz led03_add_1
sub #1
bz led04_add_1
sub #1
bz led05_add_1
sub #1
bz led06_add_1
splk #1h,led_pos
b ret_key
led01_add_1:
lacc led01
SUB #1
sacl led01
bgez ret_key
splk #9,led01
b ret_key
led02_add_1:
lacc led02
SUB #1
sacl led02
bgez ret_key
splk #9,led02
b ret_key
led03_add_1:
lacc led03
SUB #1
sacl led03
bgez ret_key
splk #9,led03
b ret_key
led04_add_1:
lacc led04
SUB #1
sacl led04
bgez ret_key
splk #9,led04
b ret_key
led05_add_1:
lacc led05
SUB #1
sacl led05
bgez ret_key
splk #9,led05
b ret_key
led06_add_1:
lacc led06
sub #17
bz efgh
splk #17,led06
b ret_key
efgh:
splk #20,led06
b ret_key
;=======================
;shift key
;=======================
key_s2:
lacc confirm
bz ret_key
sub #11h
bz ret_key
lacc confirm
sub #21h
bz shift_all
shift_two:
lacc led_pos
add #1
sacl led_pos
sub #3
blz ret_key
splk #1,led_pos
b ret_key
shift_all:
lacc led_pos
add #1
sacl led_pos
sub #7
blz ret_key
splk #1,led_pos
b ret_key
;==========================
;set key
;==========================
key_s5:
lacc confirm
bz ret_key
sub #10h
bz show_mode
lacc confirm
sub #11h
bz ret_key
lacc confirm
sub #20h
bz set_mode
lacc confirm
sub #21h
bz set_value
b ret_key
;=========================
;show_mode
;=========================
show_mode:
lacc led01
add led02,3
add led02,1
sacl led_data
;call value_show
splk #0,led_pos
splk #11h,confirm
b ret_key
value_show:
lacc show_num
add #1
sacl show_num
sub #0400H
bgz show_value
ret
show_value:
splk #1,show_num
lacc confirm
sub #11h
bz show_value_on
ret
show_value_on:
lacc led_data
sub #1
bz value_no1_show
sub #1
bz value_no2_show
sub #1
bz value_no3_show
sub #1
bz value_no4_show
sub #1
bz value_no5_show
sub #1
bz value_no6_show
ret
value_no1_show:
ldpk _current_uqref
lacc _current_uqref
bgez value_no1_aa
ldpk neg_flag_1
splk #1,neg_flag_1
b value_no1_bb
value_no1_aa:
ldpk neg_flag_1
splk #0,neg_flag_1
value_no1_bb:
ldpk _current_uqref
lacc _current_uqref
abs
ldpk buffer
sacl buffer
call chd
ret
value_no2_show:
ldpk _isq
lacc _isq
bgez value_no2_aa
ldpk neg_flag_1
splk #1,neg_flag_1
b value_no2_bb
value_no2_aa:
ldpk neg_flag_1
splk #0,neg_flag_1
value_no2_bb:
ldpk _isq
lacc _isq
abs
ldpk buffer
sacl buffer
call chd
ret
value_no3_show:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -