⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t1.asm

📁 风扇电机
💻 ASM
📖 第 1 页 / 共 3 页
字号:
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 + -