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

📄 红姆点焊机新程序1.asm

📁 点焊机控制器C51源码+SCH & DDB
💻 ASM
字号:
;这是红姆点焊机控制程序.还有500元开发费未付. 和600元后补.
;标志位      led12  11  10     9   8   7    6  5  4       3  2  led1    15  14  led13
;    26h        38h 37h 36h   3bh 3ah 39h  35h 34h 33h    32h 31h 30h   3eh 3dh 3ch 实时显示
;    4fh        48h 47h 46h   4bh 4ah 49h  45h 44h 43h    42h 41h 40h   4eh 4dh 4ch 备分保存
;合并单元 70h         6fh       6eh      6dh    6ch         6bh     6ah      69h
; 保有用标志位   加压           点焊        微压          自动工作时延时   自动工作时倒计数
; 继电器控制     p2.6           p2.5        p2.4           p2.3                p2.2
; 指示灯指示     p3.5           p3.6        p3.0           p1.7                p3.7
; 按键           p1.6 check     p1.5 SETB    P1.3 dec      p1.4 mov     p1.2 auto
;                p3.1设置指示灯 p3.4自动手动批示
        vsda     bit  p1.1
        vscl     bit  p1.0
        sla      equ  50h         ;市场读/写字节存放单元。
        slaw     equ  0a0h        ;写命令。
        slar     equ  0a1h        ;读命令。
        numbyt   equ  51h         ;要传送字节数存放单元。
        mtd      equ  60h         ;发送数据缓冲区首址。(单片机的RAM)
        mrd      equ  50h         ;接收数据缓冲区首址。(AT24C02的RAM 50h)计数值

        ORG     0000H
        jmp     start
        org     000bh
        jmp     wt0
        org     0013h
        reti
        org     001bh
        jmp     wt1
        SAVEFLAG                equ     26h ;3fH

        FLAG                    equ     20h
	    time1ms                 bit     0      ;0.5ms标志位
        time10ms                bit     1      ;工作基时计数器10mS
        time100ms               bit     2
        time500ms               bit     3
        okkey                   bit     4       ;充许设定参数键标志位。
        runing                  bit     5       ;工作准备标志位
        deconecounter           bit     6       ;自动时工作一次减计数一标志位
        
        flashL                  EQU     21h     ;闪显标志位低8位
        led1                    bit     0       ;第一位
        led2                    bit     1
        led3                    bit     2
        led4                    bit     3
        led5                    bit     4
        led6                    bit     5
        led7                    bit     6
        led8                    bit     7

        FLASHH                  EQU     22h     ;闪显标志位高7位
        led9                    bit     0
        led10                   bit     1
        led11                   bit     2
        led12                   bit     3
        led13                   bit     4
        led14                   bit     5
        led15                   bit     6       ;第15位
        workone_ce              bit     7       ;工作标志 =1时
        FLAG2                   EQU     27H     ;其它标志位
        atuo_run                bit     0       ;自动工作标志  位 =1
        delay_Ok                bit     1       ;自动延时到标志位 =1
        stop_work               bit     2


  start:MOV     SP,#75H
      	mov     R0,#2h
	   	mov     a, #0H
    	mov     R1,#126
   loop:mov     @R0,a
      	inc     R0
      	djnz    R1,loop
        mov     R0,#0                    ;将数据区清零
        MOV     TMOD,#11H                ;T0定时器方式1, T1=P3.5 计数器方式2
        MOV     TH0,#0d8h                ;0d8h=10ms ;重置计数器值。
        MOV     TL0,#0efh                ;0efh=10ms
      	MOV     TH1,#0fEh                ;0feh=0.5ms   ;0fCH=1ms 0f8h=2ms ;重置计数器值。
      	MOV     TL1,#0C0h                ;0c0h=0.5ms   ;18H=1ms  30h=2ms

      	SETB    EA                      ;充许TO AND T1中断。
      	SETB    ET0
      	setb    et1
      	mov     23h,#210                  ;键盘按防抖动延时100mS。
      	mov     24h,#14                  ;移位数标志单元。
      	MOV     25H,#6                  ;闪烁计数器。
      	Setb    TR1

      	call    vat24r
      	CALL    date_pass                ;数据传程序
      	CLR     (FLAG2).DELAY_OK         ;清延时标志位
      	MOV     26H,4FH
      	mov     a,26h
      	jz      to26h1
      	CLR     P3.4
      	setb    (flag2).atUo_run
      	jmp     mainprog
 to26h1:CLR     (flag2).atUo_run
        SETB    P3.4

        ;call   test                    ;调试用的程序
;以下是主程序。
;********************mainprog************************************
;****************************************************************
MAINPROG:call   dsp      	            ;调实时显示程序
      tk:call   key                     ;调用键盘程序
         jmp    mainprog                ;返转达主程序
         jmp    mainprog
         jmp    mainprog
;以上是主程序。
;********************mainprog************************************
;****************************************************************
key_mov: jnb    (flag).okkey,no_key_ret ;移位键盘
         call   dsp                     ;用显示来做为键延时用
         jb     p1.4,mov_keyok
         jmp    key_mov
mov_keyok:
         mov    a,24h
         jz     mov24h_14
         dec    24h
         jmp    checktab
mov24h_14:
         mov    24h,#14
checktab:call   IS_bit_n
no_key_ret:
         ret
;******************************
key_dec:jnb     (flag).okkey,no_dec_ret ;减一键盘
        call    dsp                     ;用显示来做为键延时用
        jb      p1.3,dec_keyok
        jmp     key_dec
dec_keyok:
      call   dec_key_program           ;调用减一键盘处理程序。
no_dec_ret:
       ret
;以下是键盘程序
    key:jnb    p1.5,key_setb          ;设定进入退出键
        jnb    p3.2,work_key          ;工作启动键盘  在设定参数时不能启动工作
        jnb    p1.6,key_check         ;自动检测加压头位
        jnb    p1.2,key_autowork      ;自动手动工作切换键,此标志位有掉电保存的。
        jnb    p1.3,key_dec           ;减一键盘
        jnb    p1.4,key_mov           ;移位键盘
 keyret:ret
;-------------工作启动键盘
 work_key:
        jb    (flag).okkey,no_work
        call  dsp                    ;用显示来做为键延时用
        jb    p3.2,work_keyok
        jmp   work_key
 work_keyok:
        setb  (flag).runing          ;键盘准备工作OK
        clr   (flag2).stop_work
        setb   p3.7                   ;指示灯不亮
        setb   p2.2                   ;继电器不输出
        setb  tr0
no_work:RET
;-------------设定键盘----------------------------------
key_setb:
        call  dsp
        jb    p1.5,key_setbok
        jmp   key_setb
key_setbok:
        call  date_pass
        CPL   (flag).okkey           ;在高时为可进入设定在低时为设定退出存数据。
        cpl   p3.1                   ;设置指示灯
        jb    (flag).okkey,key_setret
        call  resetkey
        call  vat24w
        call  vat24r
        setb  (flag).runing          ;清启动标志位
        mov   21h,#0                 ;闪显标志清零
        mov   22h,#0                 ;闪显标志清零
        mov   24h,#14                ;移位计数器
        ret
key_setret:
        mov  21h,#0                 ;闪显标志清零
        mov  22h,#0                 ;闪显标志清零
        setb (flashl).led1          ;进入设定键盘第一位闪显示标志位
        mov  24h,#14                ;24H=15是第一位 14是第二位
        clr  (FLAG).RUNING
        ret
;-------------自检加压键盘
key_check:
        jnb   (flag).okkey,key_checkok_ret ;没进键盘设置时无效
        call  dsp
        jb    p1.6,key_checkok
        jmp   key_check
key_checkok:
        cpl   p3.5
key_checkok_ret:
        ret
;-------------自动手动切换键盘
key_autowork:
        jnb  (flag).okkey,NO_ret ;没进键盘设置时无效
        call dsp
        jb   p1.2,key_atuoworkok
        jmp  key_autowork
key_atuoworkok:
        cpl   p3.4
        jnb    p3.4,mov26_1
        mov   26h,#0
        clr   (flag2).atuo_run
        MOV   46H,#0
        ret
 mov26_1:mov  26h,#1
        MOV   46H,#1
        setb  (flag2).atuo_run
 NO_ret:ret
;p0.0 A  P0.1 B P0.2 C P0.3 D
CODE_TAB:DB 00h,01h,02h,03h,04h         ;0,1,2,3,4 ;74LS47的BCD码 0-9无小数点
         DB 05H,06H,07H,08H,09H,0ah,0bh ;5,6,7,8,9,a,b,c,d,e,f
         db 0ch,0dh,0eh,0fh             ;在输出到I/O时要变成低8位的数
;p0.4 A  P0.5 B P0.6 C P0.7 D  ;位选代码
BITS_TAB:DB 02h,01h,00h,05h,04h,03h,0eh,0dh ;第一位到第8位选代码在输出到I/O时要变成高8位的数
         DB 0ch,0bh,0ah,09h,08h,07h,06h     ;第九位到第15位选代码
;以下是全自动时的倒计数器
auto_delay:
RET
        setb  p3.0
        setb  p2.4
        jnb   (flag).time100ms,autoret
        clr   (flag).time100ms
        mov   a,30h
        jz    to31h
        dec   30h
        jmp   autoret
  to31h:mov   a,31h
        jz    to32h
        MOV   30H,#9
        dec   31h
        jmp   autoret
  to32h:mov   a,32h
        jz    ys_over
        MOV   31H,#9
        dec   32h
autoret:ret
ys_over:cpl   p2.3
        cpl   p1.7
        mov   30h,40h
        mov   31h,41h
        mov   32h,42h
        ret
        ret
sys_rest:                 ;工作一次复位信息
       call  resetkey2    ;工作一次复位信息
       call  date_pass    ;工作一次复位信息
       jmp   wt0ret
;以下是定时中断程序。
;用WT0来做基时为10mS的定时器

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -