📄 红姆点焊机新程序1.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 + -