📄 t1.asm
字号:
kax_time_tem equ 24h ;
kax_count_tem equ 25h
par_group equ 26h
read_ads equ 27h ;读取EEPRO的开始地址放此
times_up bit 19h ;时间到标志
tf_250ms bit 1ah
tf_500ms bit 1bh
tf_test_sign bit 1ch
part_stad bit 1dh
move_stad bit 1eh ;
action_stad bit 1fh
;************* 按键I/O口定义
MENU_ADD BIT P0.0 ;菜单加
MENU_DEL BIT P0.1
CFIRM BIT P0.2 ;确认
PAR_ADD BIT P2.0 ;参数加
PAR_DEL BIT P2.1
;************************
l_act equ p2.7
r_act equ p3.3
low_batten equ p2.2
arlarm equ p3.0
;********输出引脚定义****************
ka0 equ p3.6 ;1800v高压检测电流
ka1 equ p3.7 ;90V低压启动检测电流
ka2 equ p3.2 ;1档运转
ka3 equ p1.3 ;2档运转
ka4 equ p1.4 ;3档运转
ka5 equ p1.5 ;左/右工位选择
red_lam1 equ p1.6 ;强电高压电流异常
red_lam2 equ p1.7 ;低压启动电流异常
red_lam3 equ p2.3 ;1档运转电流异常
red_lam4 equ p2.4 ;2档运转电流异常
red_lam5 equ p2.5 ;3档运转电流异常
gre_lam1 equ p2.6 ;检测完成指示
;*********显示数据的存放地址
menu_shi equ 3ah ;菜单十位
menu_ge equ 3bh
par_qian equ 3ch ;参数千位
par_bai equ 3dh
par_shi equ 3eh
par_ge equ 3fh
;******40h-5fh******分配参数存放空间*************************
ka0_time equ 40h
ka0_i_msb equ 41h
ka0_i_lsb equ 42h
ka1_time equ 43h
ka1_i_msb equ 44h
ka1_i_lsb equ 45h
ka1_count equ 46h
ka2_time equ 47h
ka2_imin_msb equ 48h
ka2_imin_lsb equ 49h
ka2_imax_msb equ 4ah
ka2_imax_lsb equ 4bh
ka3_time equ 4ch
ka3_imin_msb equ 4dh
ka3_imin_lsb equ 4eh
ka3_imax_msb equ 4fh
ka3_imax_lsb equ 50h
ka4_time equ 51h
ka4_imin_msb equ 52h
ka4_imin_lsb equ 53h
ka4_imax_msb equ 54h
ka4_imax_lsb equ 55h
;************eeprom bus**************************
SCL EQU p3.4
SDA EQU p3.1;p3.5
RW_BIT BIT 18H ;eeprom读写控制位(23H 用作标志位18H-1FH)
addrs_wr equ 21h ;
dat_wr equ 22h ;
;******* MAX186 A/D S_BUS ************
CS BIT P0.6
SSTRB BIT P0.4
SDOUT BIT P0.3
SCLK BIT P0.7
SDIN BIT P0.5
ad_chanel equ 20h
dat_msb equ 38h
dat_lsb equ 39h
chanel_0 equ 10001110b
chanel_1 equ 11001110b
;*********** MAX7219 BUS ***************************
CLK EQU P1.2
LOAD EQU P1.1
DIN EQU P1.0
;*************判断菜单为0时标志位***************
CHOOSE EQU 28H
;*******************************************
ORG 0000H
LJMP begin
ORG 000BH
LJMP TIMER0
ORG 001BH
LJMP COUNT_FULL
ORG 0030H
begin:
MOV 0A6H,#00H ;CLOSE WDT
MOV 8EH,#08H ;RESET PIN IS INPUT ONLY
MOV PCON,#00H
MOV IE,#00H
MOV IP,#02H
mov sp,#60h ;STACK IN 60H-7FH
setb MENU_ADD ;菜单加
setb MENU_DEL
setb CFIRM ;确认
setb PAR_ADD ;参数加
setb PAR_DEL
setb arlarm
setb red_lam1 ;close signal
setb red_lam2
setb red_lam3
setb red_lam4
setb red_lam5
setb gre_lam1
setb ka0
setb ka1
setb ka2
setb ka3
setb ka4
setb ka5
clr action_stad ;默认状态左共位
setb rw_bit
mov addrs_wr,#0ffh
lcall eeprom
mov par_group,dat_wr
mov a,par_group
cjne a,#01h,no_1
mov read_ads,#00h
sjmp readpa
no_1:cjne a,#02h,no_2
mov read_ads,#20h
sjmp readpa
no_2:cjne a,#03h,no_3
mov read_ads,#40h
sjmp readpa
no_3:cjne a,#04h,no_4
mov read_ads,#60h
sjmp readpa
no_4:cjne a,#05h,no_5
mov read_ads,#80h
sjmp readpa
no_5:cjne a,#06h,no_6
mov read_ads,#0a0h
sjmp readpa
no_6:cjne a,#07h,no_7
mov read_ads,#0c0h
sjmp readpa
no_7:cjne a,#08h,no_8
mov read_ads,#0e0h
sjmp readpa
no_8:
mov par_group,#01h
mov read_ads,#00h
readpa:lcall read_par ;读第一组参数
mov ad_chanel,#chanel_0;通道0
mov dat_msb,#00h
mov dat_lsb,#00h
clr move_stad
MOV TMOD,#51H ;初始化定时器
clr tr1
mov th1,#0ffh
mov tl1,#0F0h
setb et1
SETB ET0 ;开定T0中断允许位
clr tr0
mov th0,#3Ch ;set the timer
mov tl0,#0B0h
setb tr0
setb ea
mov menu_shi,#00h
mov menu_ge,#01h
mov par_qian,#00h
mov par_bai,#00h
mov a,ka0_time
anl a,#0f0h
swap a
mov par_shi,a
mov a,ka0_time
anl a,#0fh
mov par_ge,a
lcall INI7219
lcall DISP_menu
clr red_lam1 ;close signal
clr red_lam2
clr red_lam3
clr red_lam4
clr red_lam5
clr gre_lam1
setb rs0
mov r5,#00h
mov r6,#00h
mov r7,#01h
clr rs0
clr times_up
waitsie:jnb times_up,waitsie
setb red_lam1 ;close signal
setb red_lam2
setb red_lam3
setb red_lam4
setb red_lam5
setb gre_lam1
sta:mov menu_shi,#00h
mov menu_ge,#01h
mov par_qian,#00h
mov par_bai,#00h
mov a,ka0_time
anl a,#0f0h
swap a
mov par_shi,a
mov a,ka0_time
anl a,#0fh
mov par_ge,a
START: lcall INI7219
lcall DISP_menu
SETB MENU_ADD
MOV C,MENU_ADD
JC SHEZHIJIAN ;不按,查询设置递减键
LCALL DELAY ;消抖
SETB MENU_ADD
MOV C,MENU_ADD
JC SHEZHIJIAN
LCALL SHEZHIADD ;调用设置增加子程序
RE:SETB MENU_ADD
MOV C,MENU_ADD
JNC RE
LJMP START
SHEZHIJIAN:SETB MENU_DEL
MOV C,MENU_DEL
JC QUEDING ;不按,查询确定键
LCALL DELAY ;消抖
SETB MENU_DEL
MOV C,MENU_DEL
JC QUEDING
LCALL SHEZHIDEL ;调用设置递减子程序
RE1:SETB MENU_DEL
MOV C,MENU_DEL
JNC RE1
LJMP START
QUEDING:SETB CFIRM
MOV C,CFIRM
JC CANSHUJIA ;不按,查询参数增加键
LCALL DELAY ;消抖
SETB CFIRM
MOV C,CFIRM
JC CANSHUJIA
LCALL REFORM ;调用确认子程序
RE2:SETB CFIRM
MOV C,CFIRM
JNC RE2
ljmp START
CANSHUJIA:SETB PAR_ADD
MOV C,PAR_ADD
JC CANSHUJIAN ;不按,查询参数递减键
LCALL DELAY ;消抖
SETB PAR_ADD
MOV C,PAR_ADD
JC CANSHUJIAN
MOV CHOOSE,#01H
LCALL CANSHUADD ;调用参数增加子程序
RE3:SETB PAR_ADD
MOV C,PAR_ADD
JNC RE3
LJMP START
CANSHUJIAN:SETB PAR_DEL
MOV C,PAR_DEL
JC XINGCHENGL ;不按,查询行程开关1
LCALL DELAY ;消抖
SETB PAR_DEL
MOV C,PAR_DEL
JC XINGCHENGL
MOV CHOOSE,#01H
LCALL CANSHUDEL ;调用参数递减子程序
RE4:SETB PAR_DEL
MOV C,PAR_DEL
JNC RE4
LJMP START
XINGCHENGL:jnb l_act,check_net ;行程开关和低压启动查询
lcall delay
lcall delay
jnb l_act,check_net
jb r_act,scan_key
ljmp test_l
check_net:jnb r_act,check_net1
lcall delay
lcall delay
jnb r_act,check_net1
jb l_act,scan_key
ljmp test_r
check_net1:jnb low_batten,scan_key
lcall delay
lcall delay
jnb low_batten,scan_key
ljmp low_test
scan_key:LJMP START
test_l:setb ka5 ;行程开关1接通,关KA5
clr action_stad;左工位工作状态
setb rs0
mov r5,#00h
mov r6,#0fh
mov r7,#01h
clr rs0
clr times_up
waitsig:jnb times_up,waitsig
sjmp test_star
test_r:clr ka5 ;行程开关2接通,接通KA5
setb action_stad;右工位工作状态
setb rs0
mov r5,#00h
mov r6,#0fh
mov r7,#01h
clr rs0
clr times_up
waitsiq:jnb times_up,waitsiq
test_star:nop
setb red_lam1 ;close signal
setb red_lam2
setb red_lam3
setb red_lam4
setb red_lam5
setb gre_lam1
;***********************************
;******漏电流检测*******************
;***********************************
mission1:nop
mov a,ka0_time
cjne a,#00h,dodo
ljmp mission3
dodo:setb rs0
mov r5,#00h
mov r6,#0ah
mov r7,#01h
clr rs0
clr times_up
waitsix:jnb times_up,waitsix
clr ka0
nop
nop
mov a,ka0_time
anl a,#0fh
mov 30h,a ;个位
mov a,ka0_time
anl a,#0f0h
swap a
mov b,#10
mul ab
add a,30h
setb rs0
mov r5,#00h
mov r6,#00h
mov r7,a
clr rs0
clr times_up ;时间标志
clr tf_250ms
ek:clr ka0
mov menu_ge,#01h ;part1
mov menu_shi,#00h
lcall INI7219
lcall DISP_part
jb tf_250ms,ad_ma
jnb times_up,chesign
setb ka0 ;合格
lcall delay
ljmp mission3
chesign:jb low_batten,cdj
jb action_stad,cr
jb l_act,ssic
ljmp cancel
ssic:jnb r_act,ek
ljmp cancel
cr:jb r_act,ssid
ljmp cancel
ssid:jnb l_act,ek
ljmp cancel
cdj:lcall delay
jnb low_batten,chesign
ljmp low_test
;**************************************************
;********A/D转换并换算出相应电流值的BCD码R4/R5
;**************************************************
ad_ma:mov ad_chanel,#chanel_0
lcall adf ;转换出电流值BCD码
;**********************************************************************
;***********************************************************************
; 比较电流是否超设定值
;***********************************************************************
mov a,r4
anl a,#0f0h
swap a
mov par_qian,a
mov a,r4
anl a,#0fh
mov par_bai,a
mov a,r5
anl a,#0f0h
swap a
mov par_shi,a
mov a,r5
anl a,#0fh
mov par_ge,a
mov menu_ge,#01h ;part1
mov menu_shi,#00h
lcall INI7219
lcall DISP_part
mov a,r4
cjne a,ka0_i_msb,pan
mov a,r5
cjne a,ka0_i_lsb,netp
sjmp ok ;i=ka0_i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -