📄 1厂1主控.asm
字号:
FASS BIT P3.5
DATA1 BIT P2.5
SLK1 BIT P2.4
DATA2 BIT P2.3
SLK2 BIT P2.2
DATA3 BIT P2.1
SLK3 BIT P2.0
CS BIT P1.6 ;(1)
SCK BIT P3.2 ;(6)
SI BIT P2.6 ;(5)
SO BIT P1.7 ;(2)
;在中断接受中,判断窗口是否大于99,如果小于99,判断是否等于08或者13,不等于的情况下,看除以5,余数是否为0,这样排除不是窗口外的数据。
;海尔电子看板程序,用x5045的01-06存储“开始”(30.31H)“停止”(32.33H)“缺料”(34.35H)“质量异常”(36.37H)“设备故障”(38.39H)“提位呼叫”(3A.3BH)的信息
;程序流程,开始在x5045读取数据,并将16进制数据转换为10进制数据进行显示,并在主程序中进行清狗
;主程序中循环检测光电对射管的信号,无信号超过停止时间时,停止信号加1,(先读取,加1再存取,并显示)
;在串口程序中接受到数据以后,先对相应的问题读取并加1存取,把问题按键的序号在相应的数码管上闪烁显示,1分钟,5秒亮,5秒停,循环10次
;定时器中断:做一个1秒的定时,在定时器中设定标志位,
;用到的地址单元,30-3B显示存储,40-45读取x5045数据,54-5B显示缓存,5C-5F闪烁次数记录50H存取停止时间.51H无通过产品时间
ORG 0000H
AJMP MAIN
ORG 000BH ;定时器1,用于记录1s时间
LJMP INNT0
ORG 0023H
LJMP TRAX
ORG 0040H
MAIN: MOV SP,#60H
MOV P1,#00H
; LCALL BEEP
CLR A
MOV R0,#5FH
LCALL RST_DOG
CLRROM:MOV @R0,A
DJNZ R0,CLRROM
LCALL WRSR
MOV TMOD,#21H ;定时器0工作在方式1,基数为10ms
MOV TH0,#0D8H ;3CH ;
MOV TL0,#090H ;0B0H ;;"0F0"
MOV TH1,#0F3H ;工作在方式一,且SMOD=1时,此时的波特率为4800。
MOV TL1,#0F3H
MOV SCON,#0F0H ;工作方式3,多级通讯格式,SM2 置1只允许接受地址信息
;SM2为“1”时多级通信方式,RB2为地址/数据标志位。
;SM为“0”接受的为数据
MOV PCON,#80H
CLR EA
SETB ES
SETB ET0
SETB TR0
CLR ET1
SETB TR1
CLR RI
CLR FASS
LCALL RST_DOG
LCALL DEL100MS
SETB P1.0
LCALL DUQU1
LCALL DIS1
LCALL DIS2
LCALL DIS3
LCALL DEL100MS
LCALL DIS1
LCALL DIS2
LCALL DIS3
LCALL DEL10S
CLR RI
SETB EA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
AAA: LCALL RST_DOG
SETB P3.4
JNB P3.4,WU ;J检测是否有产品通过,超过10s无产品通过,停止次数不累加21h.0为1时为停止一次
LCALL DEL100MS
JNB P3.4,WU
SETB 20H.2 ;在此检测是否是有状态变换,有状态变换是清0
JNB 20H.1,WU1
CLR 20H.1 ;清为低,及无通过是的标志
; SETB 20H.2 ;执通过产品的标志
MOV 4CH,#0
MOV 4BH,#0
CLR P1.1
SETB P1.0
LCALL DEL100MS
LCALL DIS1
LCALL DIS2
LCALL DIS3
AJMP WU1
WU: SETB 20H.1
JNB 20H.2,WU1
CLR 20H.2
; SETB 20H.1
MOV 4CH,#0
MOV 4BH,#0
CLR P1.1
SETB P1.0
LCALL DEL100MS
LCALL DIS1
LCALL DIS2
LCALL DIS3
WU1: JNB 20H.0,AAA
CLR 20H.0
MOV A,2EH
CJNE A,#01H,NOBEEP
INC 2FH
MOV A,2FH
CJNE A,#08,NOBEEP
MOV 2EH,#00H
MOV 2FH,#00H
SETB P3.3
NOBEEP:MOV A,4BH
CJNE A,#01H,HH
AJMP IGXU
HH: INC 4CH
MOV A,4CH
CJNE A,50H,IGXU ;等于设定的停止值时,记录停止一次
LCALL RST_DOG
MOV 4CH,#0
MOV 3EH,#01H
LCALL ADD1
; LCALL RST_DOG
; LCALL DUQU1
; LCALL RST_DOG
MOV R0,3FH
LCALL VIHY
MOV 30H,R2
MOV 31H,R1
LCALL RST_DOG
MOV 4BH,#1 ;停止为发生状态变换以前,不重新记录停止时间
SETB P1.1 ;打开背景灯
CLR P1.0
LCALL DEL100MS
LCALL DIS1
LCALL DIS2
LCALL DIS3
MOV 26H,#58H
MOV 27H,#05H
MOV 28H,#99
LCALL FSUU
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IGXU:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;在主程序中检测
;闪烁程序,分4个子程序控制下边4组数码管的闪烁,用21H.1-21H.4标示,为高时闪烁
;闪烁时数据存放在54-5A中
UJHO1:MOV A,47H
CJNE A,#01H,UJHO2;
;JNB 21H.1,UJHO2 ;缺料 用21h.1 22h.1标示,5ch 累计
SETB P1.2
JNB 22H.1,LD1
CPL 22H.1
MOV 37H,#0AH
MOV 36H,#0AH
; LCALL DIS2
; LCALL DEL100MS
; LCALL DIS2
AJMP UJR1
LD1: MOV 37H,57H
MOV 36H,56H
CPL 22H.1
; LCALL DIS2
; LCALL DEL100MS
; LCALL DIS2
UJR1: INC 5CH
MOV A,5CH
CJNE A,#30H,URET1
MOV 5CH,#0
CLR 21H.1
MOV 47H,#0
LCALL DUQU1
; LCALL DIS2
; LCALL DEL100MS
; LCALL DIS2
CLR P1.2
URET1: ;AJMP AAA
UJHO2: MOV A,48H
CJNE A,#01H,UJHO3
;JNB 21H.2,UJHO3 ;质量异常,22H.2 21H.1 5DH
SETB P1.3
JNB 22H.2,LD2
CPL 22H.2
MOV 34H,#0AH
MOV 35H,#0AH
; LCALL DIS2
; LCALL DEL100MS
; LCALL DIS2
AJMP UJR2
LD2: MOV 35H,55H
MOV 34H,54H
CPL 22H.2
; LCALL DIS2
; LCALL DEL100MS
; LCALL DIS2
UJR2: INC 5DH
MOV A,5DH
CJNE A,#30H,URET2
MOV 5DH,#0
CLR 21H.2
LCALL DUQU1
; LCALL DIS2
; LCALL DEL100MS
; LCALL DIS2
CLR P1.3
MOV 48H,#0
URET2:
UJHO3:MOV A,49H
CJNE A,#01H,UJHO4 ;JNB 21H.3,UJHO4 ;设备故障
SETB P1.4
JNB 22H.3,LD3
CPL 22H.3
MOV 3AH,#0AH
MOV 3BH,#0AH
; LCALL DIS3
; LCALL DEL100MS
; LCALL DIS3
AJMP UJR3
LD3: MOV 3AH,5AH
MOV 3BH,5BH
CPL 22H.3
; LCALL DIS3
; LCALL DEL100MS
; LCALL DIS3
UJR3: INC 5EH
MOV A,5EH
CJNE A,#30H,URET3
MOV 5EH,#0
CLR 21H.3
LCALL DUQU1
; LCALL DIS3
; LCALL DEL100MS
; LCALL DIS3
CLR P1.4
MOV 49H,#0
URET3:
UJHO4:
MOV A,4AH
CJNE A,#01H,URET4
;JNB 21H.4,URET4 ;提位呼叫
SETB P1.5
JNB 22H.4,LD4
CLR 22H.4
MOV 39H,#0AH
MOV 38H,#0AH
; LCALL DIS3
; LCALL DEL100MS
; LCALL DIS3
AJMP UJR4
LD4: MOV 39H,59H
MOV 38H,58H
SETB 22H.4
; LCALL DIS3
; LCALL DEL100MS
; LCALL DIS3
UJR4: INC 5FH
MOV A,5FH
CJNE A,#30H,URET4
MOV 5FH,#0
CLR 21H.4
LCALL DUQU1
; LCALL DIS3
; LCALL DEL100MS
; LCALL DIS3
CLR P1.5
MOV 4AH,#0
URET4:LCALL DIS1
LCALL DIS2
LCALL DIS3
AJMP AAA
;给计算机发送需要采集的信号
;4800,s,8,1
;3位数据,58H(通讯校检),01-05H故障类型(05超节拍)00-99H,故障公位
FSUU: CLR EA
SETB FASS
MOV R1,#26H
FS1: MOV A,@R1
MOV SBUF,A
JNB TI,$
CLR TI
INC R1
MOV A,R1
NOP
NOP
NOP
CJNE A,#29H,FS1
CLR FASS
SETB EA
RET
;=============================================
BEEP: CLR P3.3
;LCALL DEL100mS
MOV 2EH,#01H
MOV 2FH,#00H
;SETB P3.3
RET
; =========================================
;串口中断
TRAX: CLR EA
CLR ES
;CLR RI
PUSH PSW
PUSH DPH
PUSH DPL
PUSH A
CLR RI
CLR TI
MOV R1,#51H
MOV A,SBUF ;3A3B3C3DH为接收到数序号的备份,校验正确后再送出显示
CJNE A,#58H,TRAX0
NOP
NOP
NOP
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -