📄 lcd.asm.asm
字号:
mov a, #06h ; 6
ajmp load_key_code
;
rd_id_5:
jb con2, rd_id_4
mov a, #05h ; 5
ajmp load_key_code
;
rd_id_4:
jb con3, no_key
mov a, #04h ; 4
ajmp load_key_code
;
next_row:
mov p0, #00000111b
orl column, #column_input
mov a, column
anl a, #screen_data
cjne a, #0fh, rd_id_a
ajmp no_key
;
rd_id_a:
jb con0, rd_id_3
mov a, #0ah ; A
ajmp load_key_code
;
rd_id_3:
jb con1, rd_id_2
mov a, #03h ; 3
ajmp load_key_code
;
rd_id_2:
jb con2, rd_id_1
mov a, #02h ; 2
ajmp load_key_code
;
rd_id_1:
jb con3, no_key ; 1
mov a, #01h
ajmp load_key_code
;
;================================================|
; RAM 清零.
;================================================|
ram_clear:
mov key_state, #00h
mov disp_para_tab, #00
mov count_data, #00
clr input_para_flag
clr need_sel_char
clr add_flag
clr add2_flag
clr run_cp_flag
clr run_ca_flag
clr f00
clr run_flag
clr rx_flag
clr selected_char_flag
clr disp_real_data
mov id_buf, #00
ret
;
;================================================|
; 存入键值。
;================================================|
load_key_code: ; 2.save key_code in key_code register
setb buzzer
mov dly_time, #20
mov key_code, a
setb cs_244
;
;------------------------------------------------|
;------------------------------------------------|
load_etr: ; 3. according to key_state, load entrance
;
mov a, key_state
rl a ; a*2
push acc
mov dptr, #sub_entrn_table
movc a, @a+dptr
mov b, a ; load high 8 bits addrss
pop acc
inc a ; load low 8 bits addrss
movc a, @a+dptr
mov dpl, a
mov dph, b
;
mov a, key_code
rl a
add a, dpl
mov dpl, a
mov a, dph
addc a, #00
mov dph, a
load_next_state:
clr a
movc a, @a+dptr
mov key_state, a ; load next state.
clr a
inc dptr
movc a, @a+dptr ; read subroutine entrance code
mov dptr, #sub_j_tab
mov b, a
rl a
add a, b
jmp @a+dptr
;
sub_j_tab:
ljmp sub_no_ack ; 0 state
ljmp sub_edit_prog ; 1 编制运行程序
ljmp sub_adj_time ; 2 调整系统时间
ljmp sub_jump_n ; 3 跳转到设定步执行
ljmp sub_compensate ; 4 设定补偿参数
ljmp sub_timing_data ; 5 查询系统状态
ljmp sub_start_time ; 6 上传系统的开机时间
ljmp sub_draw_curve ; 7 绘制历史数据曲线
ljmp sub_view_program ; 8 查看系统程序
ljmp sub_download_program ; 9 下载程序
ljmp sub_start_run ; a 开机
ljmp sub_no_ack ; b
ljmp sub_cancel ; c 取消
ljmp sub_affirm_save_prog ; d 确认
ljmp sub_return ; e 返回
ljmp sub_pause ; f 暂停
ljmp sub_input_prog_para ; 10h 输入程序参数
;
sub_entrn_table: ; index table of state sub_table entrance address
;
dw tb_0 ; state 0 table entrance address
dw tb_1 ; state 1
dw tb_2 ; state 2
dw tb_3 ; state 3
dw tb_4 ; state 4
dw tb_5 ; state 5
dw tb_6
dw tb_7
dw tb_8
dw tb_9
dw tb_a ; program menu
;
tb_0:
db 00h, 00h ;0
db 01h, 01h ;1 edit program.
db 02h, 02h ;2 adjust system time and date
db 03h, 03h ;3
db 04h, 04h ;4
db 0ah, 05h ;5
db 06h, 06h ;6
db 07h, 07h ;7
db 08h, 08h ;8
db 09h, 09h ;9
db 00h, 0ah ;10
db 00h, 0ah ;11
db 00h, 00h ;12
db 00h, 00h ;13
db 00h, 0eh ;14
db 00h, 00h ;15
;
tb_1:
tb_5:
db 05h, 10h ;0
db 05h, 10h ;1
db 05h, 10h ;2
db 05h, 10h ;3
db 05h, 10h ;4
db 05h, 10h ;5
db 05h, 10h ;6
db 05h, 10h ;7
db 05h, 10h ;8
db 05h, 10h ;9
db 05h, 0ah ;10
db 05h, 00h ;11
db 05h, 0ch ;12 cancel
db 01h, 0dh ;13 affirm, double click affirm
db 00h, 0eh ;14 return
db 05h, 00h ;15
;
tb_2:
db 02h, 02h ; state 2 table, adjust system clock.
db 02h, 02h ; 1
db 02h, 02h ; 2
db 02h, 02h ; 3
db 02h, 02h ; 4
db 02h, 02h ; 5
db 02h, 02h ; 6
db 02h, 02h ; 7
db 02h, 02h ; 8
db 02h, 02h ; 9
db 02h, 00h ; 10
db 02h, 00h ; 11
db 02h, 0ch ; 12 cancel
db 00h, 0dh ; 13 affire
db 00h, 0eh ; 14 . reture main menu
db 02h, 00h ; 15 .
;
tb_3:
db 03h, 03h ; state 2 table, adjust system clock.
db 03h, 03h ; 1
db 03h, 03h ; 2
db 03h, 03h ; 3
db 03h, 03h ; 4
db 03h, 03h ; 5
db 03h, 03h ; 6
db 03h, 03h ; 7 db 02h, 0dh ; state 2 table, adjust system clock.
db 03h, 03h ; 8
db 03h, 03h ; 9
db 03h, 03h ; 10 open machine
db 03h, 00h ; 11
db 03h, 0ch ; 12 cancel
db 00h, 0dh ; 13 affire
db 00h, 0eh ; 14 . reture main menu
db 03h, 00h ; 15
;
tb_4:
db 04h, 04h ; state 2 table, adjust system clock.
db 04h, 04h ; 1
db 04h, 04h ; 2
db 04h, 04h ; 3
db 04h, 04h ; 4
db 04h, 04h ; 5
db 04h, 04h ; 6
db 04h, 04h ; 7
db 04h, 04h ; 8
db 04h, 04h ; 9
db 04h, 0ah ; 10
db 04h, 00h ; 11
db 04h, 0ch ; 12 cancel
db 00h, 0dh ; 13 affire
db 00h, 0eh ; 14 . reture main menu
db 04h, 00h ; 15 .
;
tb_6:
tb_7:
tb_8:
tb_9:
tb_a:
db 06h, 00h ; state
db 06h, 00h ; 1
db 06h, 00h ; 2
db 06h, 00h ; 3
db 06h, 00h ; 4
db 06h, 00h ; 5
db 06h, 00h ; 6
db 06h, 00h ; 7
db 06h, 00h ; 8
db 06h, 00h ; 9
db 06h, 0ah ; 10
db 06h, 00h ; 11
db 06h, 00h ; 12
db 06h, 00h ; 13
db 00h, 0eh ; 14
db 06h, 00h ; 15
;
;
;================================================|
; 发送系统开机命令
;================================================|
sub_start_run:
jbc run_flag, sub_close_run
mov dptr, #start_command
lcall sub_send_command
jnb ri, $
mov a, sbuf
cjne a, #'X', fail_start_run
setb run_flag
lcall delay_flash_time
lcall disp_clear
ljmp sub_disp_real_data
;
fail_start_run:
ret
;
;================================================|
; 发送系统关机命令 +
;================================================|
sub_close_run:
mov dptr, #close_command
lcall sub_send_command
ret
;
;================================================|
; 发送系统暂停运行命令.
;================================================|
sub_pause:
mov dptr, #pause_command
lcall sub_send_command
ret
;
;================================================|
; 显示系统实时状态.
;================================================|
sub_timing_data:
lcall disp_select_code ; inquire system state
;
;
sub_disp_real_data:
lcall disp_id
setb disp_real_data
mov oxl, #0
mov oy, #0
lcall disp_system
mov count1, #4
mov dptr, #zheng_tab
lcall disp_chin_picture
lcall disp_run
lcall disp_general_run_data
mov r0, #data_buf
inc r0
inc count_data
mov a, @r0
cjne a, #28h, not_loop_command
ljmp disp_run_loop_para
;
not_loop_command:
mov a, count_data
add a, #3
mov count_data, a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -