📄 1106.asm
字号:
CLR CLK
SETB CLK
call DELAY ;警报delay
call DELAY ;警报delay
MOV sign_larum ,#0 ; 警告器OFF
ajmp RESET ;总数已满停机 RESET
RET
integer_on: ;整袋输出有效
mov p0,#0ffh
clr clr_out ; setb clr_out ;1106
clr call_0ut ;警报ON
clr alarm_0ut ;警报ON
clr integer_out ;整袋输出 on
SETB run_out ;运行 off
SETB hole_OUT ;凿洞off
CLR CLK
SETB CLK
LCALL LAYER11
LCALL LAYER12
; ----delay
MOV R5,#50
DM2: MOV R6,#100
DM1: MOV R7,#250
DJNZ R7,$
DJNZ R6,DM1
DJNZ R5,DM2
mov p0,#0ffh
clr run_out ; 运行 on
setb integer_out ;整袋输出off
clr clr_out ; setb clr_out ;1106
setb call_0ut ;警报ON
setb alarm_0ut ;警报ON
SETB hole_OUT ;凿洞off
CLR CLK
SETB CLK
MOV sign_larum ,#0 ;警告器OFF
mov quantity_display,#00 ;等于批数记数清0
Ajmp start_m1 ;重新起动start_m1
stop_M1: ;停止
LCALL LAYER11
mov a, sign_test ;试验标记,
MOV sign_test,#00 ;试验=0停止
CJNE A,#0,STOP_2 ;试验标记,
ajmp KEY_M
STOP_2:
Ajmp RESET
KEY_return:
mov sp, #60h
ajmp KEY_M
ret
;-------------------------
;起动一步
SETUP:
CLR cw_out ;0
CLR CLK
SETB CLK
JNB high_in , KEY_return
NOP
NOP
nop
SETB cw_out ;1
CLR CLK
SETB CLK
call delay_m ;delay ;sp=fe
;-----还有100步吗--------------
CJNE r1,#1,NN1 ;=1 sp=fe
CJNE r4,#0,NN0
CJNE R0,#120,NN1 ;减速度设定/还有120步吗?
mov r4,#1 ;120+velocity=220
NN0:;减速度
INC DLY_C ;减速度
CJNE R3,#0,NN2 ;减速度设定10步吗?
mov a,r0
CJNE a, seek,NN4 ;减速度设定还有10步吗?
mov R3,#1
AJMP NN2
NN1:;加速度
DEC DLY_C ;加速度
MOV A,DLY_C
CJNE A, velocity,NN4 ;稳定速度
INC DLY_C
AJMP NN4
NN2:
MOV A, photoelectric ;光电装置有无效
CJNE A,#11H,NN4
;光电极性
mov a, polarity
CJNE A, #0BH,NN3
jb phototube_in, NN4 ;正向性+
mov sign_search,#00 ;搜索寻色标清0
JMP hole_motion
NN3:
jnb phototube_in, NN4 ;反向性-
mov sign_search,#00h ;搜索寻色标清0
AJMP hole_motion
NN4:
ret
;--------------------
delay_m:
mov r6,dly_c
dd1: mov r7,#2 ;R7=2
djnz r7,$
djnz r6,dd1
RET
delay_1s:
MOV R5,postpone
Ds2: MOV R6,#100
Ds1: MOV R7,#250
DJNZ R7,$
DJNZ R6,Ds1
DJNZ R5,Ds2
RET
;******************************
;**主要的键盘处理程序**
;******************************
;----------------------------------------
;键值处理, 起动/点进/点退/试切/寻标/设定
;----------------------------------------
disposal: ;(查键盘是否有按下)
acall key1
disposal_1:
mov p1,#01111111B
acall key2 ;-查键值-
jb acc.3, test_enter ;试切
jb acc.2, seek_enter ;寻标
jb acc.1, enactment_enter ;设定
jb acc.0, advance_enter ;点进
mov p1,#11101111B
acall key2 ;-查键值-
jb acc.0, recede_enter ;点退
jb acc.1, eliminate ; 清除
jb acc.2, cease ;停止
jb acc.3, setup_M ;起动电机
mov p3,#0ffh
jnb repair_in, repair
AJMP disposal
RET
advance_enter:
ajmp KEY_advance
recede_enter:
ajmp KEY_recede
repair:
lcall DELAY
ajmp repair_1
cease:
ajmp RESET
eliminate :
ajmp eliminate_1
setup_M: ;起动电机
LJMP start_m1
enactment_enter:;设定进入
LCALL LAYER4 ;显示第4层设定
MOV sign_LAYER,#03H
MOV sign_KEY, #80H
LJMP examine
seek_enter: ;寻标进入
LCALL LAYER3 ;显示第3层寻标
MOV sign_LAYER, #02H
MOV sign_KEY, #80H
LJMP examine
test_enter: ;试切进入
LCALL LAYER2 ;显示第2层
MOV sign_LAYER, #01H
MOV sign_KEY, #80H
AJMP examine
RET
eliminate_1:
CJNE R0,#3,eliminate_4
mov total_display ,#00
mov r0,#4
lcall LAYER12
lcall delay
ajmp disposal
eliminate_4:
CJNE R0,#02,eliminate_3
MOV DAT1,#019H ;设定光标位置
MOV DAT2,#0DH ;设定光标位置
MOV COM, #21H ;设定光标
LCALL PR1
mov r0,#3
lcall delay
ajmp disposal
eliminate_3:
CJNE R0,#01,eliminate_2
mov quantity_display ,#00
mov r0,#2
lcall LAYER11
lcall delay
ajmp disposal
eliminate_2:
MOV DAT1,#0AH ;设定光标位置
MOV DAT2,#0DH ;设定光标位置
MOV COM, #21H ;设定光标
LCALL PR1
MOV COM, #0A1H ;光标形状设置
LCALL PR12
mov r0,#1
lcall delay
ajmp disposal
repair_1:
mov sign_repair,#1
lcall LAYER_repair
lcall DELAY
ajmp disposal
recede:
clr cw_out ;0
CLR CLK
SETB CLK
NOP
NOP
nop
SETB cw_out ;1
CLR CLK
SETB CLK
lcall DELAY0
ret
DELAY0:
mov r6,#80
Md1: mov r7,#10 ;R7=2
djnz r7,$
djnz r6,Md1
RET
;------------------------------
;----检查键盘--------
;-----------------------------
KEY_advance: ;点进 advance
LCALL LAYER11
LCALL LAYER_advance
MOV P0, #0ffH ;PW-初始化
clr clR_out ;setb clr_out ;1106
setb ccw_out
CALL recede
mov p0,#0ffh ;PW恢复
CLR clr_out
CLR CLK
SETB CLK
ajmp recede_advance
KEY_recede: ;点退
LCALL LAYER11
LCALL LAYER_recede
MOV P0, #0ffH ;PW初始化
clr clR_out ; setb clr_out ;1106
clr ccw_out
CALL recede
MOV P0, #0ffH ;PW恢复
CLR clr_out
CLR CLK
SETB CLK
ajmp recede_advance
recede_advance: ;(查键盘是否有按下)
; acall key1
mov p1,#01111111B
acall key2 ;-查键值-
jb acc.0, KEY_advance ;点进
mov p1,#11101111B
acall key2 ;-查键值-
jb acc.0, KEY_recede ;点退
jb acc.2, cease_2 ;停止
AJMP recede_advance
cease_2:
ajmp RESET
RET
;-------------------
;----检查键盘--------
;--------------------
examine: ;检查
mov p1,#00001111b ;--送查键值
acall key2
jnz examine ;等键盘释放
examine_1:
acall key1 ;(查键盘是否有按下
mov p1,#10111111B ;--送查键值
acall key2 ;--查键值
jb acc.1, key_assignments_11 ;-
jb acc.2, key_assignments_12 ;ok
jb acc.3, key_assignments_13 ;+
mov p1,#11011111B ;--送查键值
acall key2 ;--查键值
jb acc.0, key_assignments_20 ;右
jb acc.1, key_assignments_21 ;下
jb acc.2, key_assignments_22 ;上
jb acc.3, key_assignments_23 ;左
mov p1,#11101111B ;--送查键值
acall key2 ;--查键值
jb acc.1, key_assignments_31 ;清零
jb acc.2, key_assignments_32 ;停止
AJMP examine;检查
key_assignments_11: ;-
MOV R2, sign_LAYER
assignments_DEC_1:
CJNE R2,#01H, assignments_DEC_2
AJMP deal_decrease_1
assignments_DEC_2:
CJNE R2,#02H, assignments_DEC_3
AJMP deal_decrease_2
assignments_DEC_3:
CJNE R2,#03H, assignments_DEC_1
AJMP deal_decrease_3
key_assignments_13: ;+
MOV R2, sign_LAYER
assignments_ADD_1:
CJNE R2,#01H, assignments_ADD_2
AJMP deal_adding_1
assignments_ADD_2:
CJNE R2,#02H, assignments_ADD_3
AJMP deal_adding_2
assignments_ADD_3:
CJNE R2,#03H, assignments_ADD_1
AJMP deal_adding_3
key_assignments_20: ;右
MOV A ,sign_KEY
RL A
RL A
AJMP deal
key_assignments_21: ;下
MOV A ,sign_KEY
RL A
AJMP deal
key_assignments_22: ;上
MOV A ,sign_KEY
RR A
AJMP deal
key_assignments_23: ;左
MOV A ,sign_KEY
RR A
RR A
AJMP deal
key_assignments_31: ;清零
AJMP to_clear
key_assignments_32: ;停止
AJMP RESET
key_assignments_12: ;ok
MOV DAT1,#02H ;设定光标位置
MOV DAT2,#0DH ;设定光标位置
MOV COM, #21H ;设定光标
LCALL PR1
MOV COM, #0A7H ;光标形状设置
LCALL PR12
LCALL DELAY
LCALL DELAY
mov a, sign_LAYER ; #01H
cjne a,#1,test_no
mov sign_test,#1
test_no:mov a, sign_LAYER
cjne a,#2,seek_no
mov a, polarity ;极性
CJNE A, #0BH,reverse
jnb phototube_in , seek_no ;正向性+
mov p1,#11101111B ;--查询停止键值--
jnb P1.2,seek_no
MOV P0, #0ffH ;pw-00
clr clR_out ;setb clR_out ;CLR
setb ccw_out ;CCW
CALL recede
JMP test_no
reverse:
jb phototube_in, seek_no ;反向性-
mov p1,#11101111B ;--查询停止键值--
jnb P1.2, seek_no
MOV P0, #0ffH ;pw-00
clr clR_out ;setb clR_out ;CLR
setb ccw_out ;CCW
CALL recede
JMP test_no
seek_no:
AJMP RESET
RET
;------------------------------
;查键盘(查键盘是否有按下)
;------------------------------
key1:
mov p1,#0FH ;00001111
MOV A, P1
ORL A, #0F0H ;11110000
CPL A
jz key1_1 ;没按下key1
Lcall DL12MS
MOV A, P1
ORL A, #0F0H ;11110000
CPL A
RET
key1_1:
mov p3,#0ffh
jb repair_in, key1
RET
KEY2: ;--查键值------
;Lcall DL12MS
MOV A, P1
ORL A, #0F0H ;11110000
CPL A
RET
;------------------------
;进入2,3,4,层光标位置处理
;------------------------
deal:
JB ACC.0, enter_girth ;进入周长
JB ACC.1, enter_velocity ;进入速度
JB ACC.2, enter_extent ;进入长度
JB ACC.3, enter_withdraw ;进入退料
SWAP A
AJMP deal;处理
enter_girth: ;进入周长光标
MOV DAT1,#0CH ;设定光标位置
MOV DAT2,#06H ;设定光标位置
MOV COM, #21H ;设定光标
LCALL PR1
MOV COM, #0A1H ;光标形状设置
LCALL PR12
MOV sign_KEY,#01H
AJMP examine ;检查
enter_velocity: ;进入速度光标
MOV DAT1,#0CH ;设定光标位置
MOV DAT2,#0AH ;设定光标位置
MOV COM, #21H ;设定光标
LCALL PR1
MOV COM, #0A1H ;光标形状设置
LCALL PR12
MOV sign_KEY,#02H
AJMP examine ;检查
enter_extent:;进入长度光标
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -