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

📄 dx61030j.asm

📁 电动广告灯箱控制器程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	AJMP	fjia_21
fjia_20:	MOV	A, 40h
	CJNE	A, #0bH, fjia_20_1
	MOV	A, 3aH	                                    ;时间
	NOP
	ADD	A, #01H
	DA	A
	MOV	3aH, A
	AJMP	fjia_21
fjia_20_1:	MOV	A, 40h
	CJNE	A, #0cH, fjia_21
	MOV	A, 3cH	                                    ;时间
	NOP
	ADD	A, #01H
	DA	A
	MOV	3cH, A
	;AJMP	fjia_21
fjia_21:
	nop
	ret
;**************************************************
;分减键处理
fenjian:	nop
	MOV	A, 40H
	CJNE	A, #00H, JIANF0
	;手动下处理
   ;******
JIANF0:	
       ;jnb	01h, JIANF12
	MOV	A, 40H
	CJNE	A, #01H, JIANF1
	MOV	R7, 24H
	LCALL	JIANY
	MOV	24H, R7
;JIANF12:	
        LJMP	JIANF11
JIANF1:	MOV	A, 40H
	CJNE	A, #02H, JIANF2
	MOV	R7, 26H
	LCALL	JIANY
	MOV	26H, R7
	LJMP	JIANF11
JIANF2:	MOV	A, 40H
	CJNE	A, #03H, JIANF3
	MOV	R7, 2AH
	LCALL	JIANY
	MOV	2AH, R7
	LJMP	JIANF11
JIANF3:	MOV	A, 40H
	CJNE	A, #04H, JIANF4
	MOV	R7, 2CH
	LCALL	JIANY
	MOV	2CH, R7
	LJMP	JIANF11
JIANF4:	MOV	A, 40H
	CJNE	A, #05H, JIANF5
	MOV	R7, 2EH
	LCALL	JIANY
	MOV	2EH, R7
	LJMP	JIANF11
JIANF5:	MOV	A, 40H
	CJNE	A, #06H, JIANF6
	MOV	R7, 30H
	LCALL	JIANY
	MOV	30H, R7
	LJMP	JIANF11
JIANF6:	MOV	A, 40H
	CJNE	A, #07H, JIANF7
	MOV	R7, 32H
	LCALL	JIANY
	MOV	32H, R7
	LJMP	JIANF11
JIANF7:	MOV	A, 40H
	CJNE	A, #08H, JIANF8
	MOV	R7, 34H
	LCALL	JIANY
	MOV	34H, R7
	LJMP	JIANF11
JIANF8:	MOV	A, 40H
	CJNE	A, #09H, JIANF9
	MOV	R7, 36H
	LCALL	JIANY
	MOV	36H, R7
	LJMP	JIANF11
JIANF9:	MOV	A, 40H
	CJNE	A, #0aH, JIANF10
	MOV	R7, 38H
	LCALL	JIANY
	MOV	38H, R7
	LJMP	JIANF11
JIANF10:	MOV	A, 40H
	CJNE	A, #0bH, JIANF10_1
	MOV	R7, 3AH
	LCALL	JIANY
	MOV	3AH, R7
	AJMP	JIANF11
JIANF10_1:	MOV	A, 40H
	CJNE	A, #0cH, JIANF11
	MOV	R7, 3cH
	LCALL	JIANY
	MOV	3cH, R7
	;AJMP	JIANF11
JIANF11:	nop
	ret
;******************************************************************
;数据监控
shujujk:nop
        mov   a,24h
        cjne  a,#60h,sjjk1
        mov   24h,#00h
sjjk1:  mov   a,25h
        cjne  a,#24h,sjjk2
        mov   25h,#00h
        ;***
sjjk2:  mov   a,2ah
        cjne  a,#60h,sjjk3
        mov   25h,#00h
sjjk3:  mov   a,2bh
        cjne  a,#24h,sjjk4
        mov   2bh,#00h
        ;***
sjjk4:  mov   a,2ch
        cjne  a,#60h,sjjk5
        mov   2ch,#00h
sjjk5:  mov   a,2dh
        cjne  a,#24h,sjjk6
        mov   2dh,#00h
        ;***
sjjk6:  mov   a,2eh
        cjne  a,#60h,sjjk7
        mov   2eh,#00h
sjjk7:  mov   a,2fh
        cjne  a,#24h,sjjk8
        mov   2fh,#00h
        ;***
sjjk8:  mov   a,30h
        cjne  a,#60h,sjjk9
        mov   30h,#00h
sjjk9:  mov   a,31h
        cjne  a,#24h,sjjka
        mov   31h,#00h
        ;***
sjjka:  mov   a,32h
        cjne  a,#60h,sjjkb
        mov   32h,#00h
sjjkb:  mov   a,33h
        cjne  a,#24h,sjjkc
        mov   33h,#00h
        ;***
sjjkc:  mov   a,34h
        cjne  a,#60h,sjjkd
        mov   34h,#00h
sjjkd:  mov   a,35h
        cjne  a,#24h,sjjke
        mov   35h,#00h
        ;***
sjjke:  mov   a,36h
        cjne  a,#60h,sjjkf
        mov   36h,#00h
sjjkf:  mov   a,37h
        cjne  a,#24h,sjjk10
        mov   37h,#00h
        ;***
sjjk10:  mov   a,38h
        cjne  a,#60h,sjjk11
        mov   38h,#00h
sjjk11:  mov   a,39h
        cjne  a,#24h,sjjk12
        mov   39h,#00h
        ;***
sjjk12:  mov   a,3ah
        cjne  a,#60h,sjjk13
        mov   3ah,#00h
sjjk13:  mov   a,3bh
        cjne  a,#60h,sjjk14
        mov   3bh,#00h
        ;***
sjjk14: nop
        ret
;*********************************************
;画面移动判断
hmydpd:nop
       jnb  11h,exthm                                       ;电机运行后才执行此程序
hmloop:lcall	DELALL	                                    ;调用长延迟程序
       jb   shan,chongq                                     ;检测到光标信号-重起
       jb   xia, chongq                                     ;检测到光标信号-重起
       jb   tin, chongq                                     ;检测到光标信号-重起
       clr  11h                                             ;电机成功启动清标志
       sjmp exthm
chongq:setb  zang                                            ;暂停电机
       lcall	DELALL	                                    ;调用长延迟程序
       lcall	DELALL	                                    ;调用长延迟程序
       clr     zang                                            ;启动电机
       lcall	DELALL	                                    ;调用长延迟程序
       sjmp     hmloop
exthm: nop
       ret
;*********************************
;根据大时间程序处理后的标志来开总开和灯开
zonden:	nop
	jnb	0dh, zk1	                            ;总开1标志(大时间比较)
	clr	zong	                                    ;打开总开指示灯
	sjmp	gbzx	                                    ;转入光标执行,控制电机
zk1:	jnb	0fh, zk2	                            ;总开2标志(大时间比较)
	clr	zong	                                    ;打开总开指示灯
	sjmp	gbzx	                                    ;转入光标执行,控制电机
zk2:	setb	zong	                                    ;关闭总开指示
       ;*********
gbzx:	nop
       ;*********
	jnb	0ch, zd1	                            ;总开1标志(大时间比较)
	clr	deng	                                    ;打开总开指示灯
	sjmp	gbzd	                                    ;转入光标执行,控制电机
zd1:	jnb	0eh, zd2	                            ;总开2标志(大时间比较)
	clr	deng	                                    ;打开总开指示灯
	sjmp	gbzd	                                    ;转入光标执行,控制电机
zd2:	setb	deng	                                    ;关闭总开指示
       ;*********
gbzd:	nop
	ret
;*************************************
;检测光标,并执行程序
gbzhix:	jb	zang, x3	                            ;电机运行时检测光标
	NOP	                                            ;上光标
	jnb	shan, x1
	setb	zang	                                    ;停止电机
	lcall	DELALL	                                    ;调用长延迟程序
	lcall	DELALL	                                    ;调用长延迟程序
	lcall	DELALL	                                    ;调用长延迟程序
	clr	diao	                                    ;确定方向
	mov	3ah, #00h	                            ;展示时间清零
	mov	3bh, #00h	                            ;展示时间清零
	mov	60h, #00h	                            ;清除单画超时积存器
	mov	61h, #00h	                            ;清除严重超时积存器
	clr	01h	                                    ;清除单画超时标志
	clr	02h	                                    ;清除严重超时标志(强制停机标志)
	mov	48h, #0f0h	                            ;电机向上运行
	acall	baocunsx	                            ;保存上下信息
x1:	nop	                                            ;下光标
	jnb	xia, x2
	setb	zang	                                    ;停止电机
	lcall	DELALL	                                    ;调用长延迟程序
	lcall	DELALL	                                    ;调用长延迟程序
	lcall	DELALL	                                    ;调用长延迟程序
	setb	diao	                                    ;确定方向
	mov	3ah, #00h	                            ;展示时间清零
	mov	3bh, #00h	                            ;展示时间清零
	mov	60h, #00h	                            ;清除单画超时积存器
	mov	61h, #00h	                            ;清除严重超时积存器
	clr	01h	                                    ;清除单画超时标志
	clr	02h	                                    ;清除严重超时标志(强制停机标志)
	mov	48h, #0fh	                            ;电机向下运行
	acall	baocunsx	                            ;保存上下信息
x2:	nop	                                            ;暂停光标
	jnb	tin, x3
	setb	zang	                                    ;停止电机 
	mov	3ah, #00h	                            ;展示时间清零
	mov	3bh, #00h	                            ;展示时间清零
	mov	60h, #00h	                            ;清除单画超时积存器
	mov	61h, #00h	                            ;清除严重超时积存器
	clr	01h	                                    ;清除单画超时标志
	clr	02h	                                    ;清除严重超时标志(强制停机标志)
x3:	nop
	RET
;**********************************************
 ;小时间比较程序;38h__3ah///39h__3bh  
bijiaox:	jnb	zang, exbjx	                    ;为0,电机在运行不比较
            ;(电机启动识别光标时应停止此程序)!!!!!!!!!
	nop
	mov	a, 38h
	xrl	a, 3ah
	jnz	bjx1	                                    ;两数字不等->acc不为0 转
	nop	                                            ;两数字等->acc为0 
	mov	a, 39h
	xrl	a, 3bh
	jnz	bjx1	                                    ;两数字不等->acc不为0 转
        ;
	acall	qddj	                                    ;启动电机
bjx1:	nop
	clr	cy	                                    ;为了程序的稳定,可在此加比较大小程序!
	mov	a, 39h
	cjne	a, 3bh, bjx2
	sjmp	bjx3	                                    ;时相等,继续比较
bjx2:	jnc	exbjx	                                    ;时没到,退出 
            ;
	acall	qddj	                                    ;启动电机
	sjmp	exbjx	                                    ;exit
bjx3:	clr	cy
	mov	a, 38h
	cjne	a, 3ah, bjx4
            ;
	acall	qddj	                                    ;启动电机
	sjmp	exbjx	                                    ;exit
bjx4:	jnc	exbjx	                                    ;exit
            ;
	acall	qddj	                                    ;启动电机
exbjx:	nop
           ;电机启动后根据需要延迟051105
	ret
  ;*********启动电机,延迟
qddj:	nop
	clr	zang	                                    ;启动电机  :!!!!!
	nop
	cpl	wdt	                                    ;为喂狗
	lcall	DELALL	                                    ;调用长延迟程序
           ;
	cpl	wdt	                                    ;为喂狗
	lcall	DELALL	                                    ;调用长延迟程序
	cpl	wdt	                                    ;为喂狗
	lcall	DELALL	                                    ;调用长延迟程序
	cpl	wdt	                                    ;为喂狗
	;lcall	DELALL	                                    ;调用长延迟程序
	;cpl	wdt	                                    ;为喂狗
	;lcall	DELALL	                                    ;调用长延迟程序
	;nop
	nop
	ret
 ;*********************************************
 ;读秒跳程序,画面展示寄存器记数,
miaojs:	nop
	mov	a, 24h	                                    ;秒地址
	xrl	a, 2fh	                                    ;与上次秒比较
	jz	done	                                    ;相等推出
            ;**
	;lcall	banding	                                    ;电机上下即时存储
	jnb	zang, bbj	                            ;p1.6为0,电机在运行不比较
	nop
            ;在大时间之外识别到软超,电机运行(p1.6为1)
            ;不比较大时间,导致大时间到后总开不开。
	lcall	bijiaod	                                    ;大时间比较                                ;大时间比较
            ;
bbj:	                                                    ;lcall	djyxjk	                                    ;电机连续运行时间监控                                ;电机启动计时,30秒停电机
	nop	                                            ;并设置标志16h_不执行小时间比较 0702
      ;****************************************************************
      ;原来采用时间延迟释放光标改为遇到白释放光标!!
	nop
	jb	zang, mjs1	                            ;电机不运行退出	                            ;电机停止转
	inc	49h
	mov	a, 49h
	cjne	a, #03h, mjs1
	setb	15h	                                    ;启动两秒再推程序
	mov	49h, #00h
      ;*****************************************************************
mjs1:	mov	a, 3ah	                                    ;加展示计数
	add	a, #01h
	da	a
	mov	3ah, a
	cjne	a, #60h, done
	mov	3ah, #00h	                            ;
	mov	a, 3bh	                                    ;
	add	a, #01h
	da	a
	mov	3bh, a	                                    ;
	cjne	a, #60h, done
	mov	3bh, #00h
done:	nop
	mov	a, 24h
	mov	2fh, a	                                    ;转存秒数据
	ret
 ;**************************************
 ;电机上下与标志绑定,电机上下运行即使存储 
 ;由秒跳调用         
baocunsx:	nop

banding:	nop
	MOV	SLA, #0d0h
	MOV	SUBA, #20H	                            ;指定存储地址26H电机正反标志
	MOV	NUMBYTE, #1	                            ;写入一字节数据
	jnb	diao, banding1
	mov	a, #0fh
	sjmp	banding2
banding1:	nop
	mov	a, #0f0h
banding2:	nop
	MOV	MTD, a	                                    ;写入的数据装入MTD缓冲区
	LCALL	IWRNBYTE	                            ;保存调头状态-->DS1307
	NOP
        ;;;; 
	lcall	DELEY20MS
	lcall	DELEY20MS
	ret
;**************************************************
;电机运行监控  61h(s)   16h(b)   0702  
;电机连续运行计时,超过30秒强制停止        
djyxjk:	nop	                                            ;电机启动计时,30秒停电机
	nop
	ret
;***********************************************
 ;数据恢复
shujuhuifu:	nop
	MOV	SLA, #0d0h
	MOV	SUBA, #08H
	MOV	NUMBYTE, #08
	LCALL	IRDNBYTE
            ;zhuanyi 
	mov	a, 50h
	mov	27h, a
	mov	a, 51h
	mov	28h, a
	mov	a, 52h
	mov	29h, a
	mov	a, 53h
	mov	2ah, a
	mov	a, 54h
	mov	2bh, a
	mov	a, 55h
	mov	2ch, a
	mov	a, 56h
	mov	2dh, a
	mov	a, 57h
	mov	2eh, a
            ;
	MOV	SLA, #0d0h
	MOV	SUBA, #10H
	MOV	NUMBYTE, #08
	LCALL	IRDNBYTE
            ;zhuanyi
	mov	a, 50h
	mov	30h, a
	mov	a, 51h
	mov	31h, a
	mov	a, 52h
	mov	32h, a
	mov	a, 53h
	mov	33h, a
	mov	a, 54h
	mov	34h, a
	mov	a, 55h
	mov	35h, a
	mov	a, 56h
	mov	36h, a
	mov	a, 57h
	mov	37h, a
            ;
	MOV	SLA, #0d0h
	MOV	SUBA, #18H
	MOV	NUMBYTE, #08
	LCALL	IRDNBYTE
	mov	a, 50h
	mov	38h, a
	mov	a, 51h
	mov	39h, a
            ;
	MOV	SLA, #0d0h
	MOV	SUBA, #20H	                            ;上下存储
	MOV	NUMBYTE, #08
	LCALL	IRDNBYTE
	mov	a, 50h
	mov	48h, a	                                    ;48h上下标志寄存器
	nop
	ret
 
;提取时间
;***************************
sjtq:	nop
	mov	a, 50h
	mov	24h, a
	clr	cy
	rlc	a	                                    ;循环左移
	jnc	sjtqjx
           ;初始化控制寄存器
	MOV	SLA, #0d0h
	MOV	SUBA, #07H	                            ;指定存储地址10H
	MOV	NUMBYTE, #1	                            ;写入一字节数据
	MOV	MTD, #90H	                            ;写入的数据装入MTD缓冲区
	LCALL	IWRNBYTE
           ;初始化秒寄存器,启动ds1307
	MOV	SLA, #0d0h
	MOV	SUBA, #00H	                            ;指定存储地址10H
	MOV	NUMBYTE, #1	                            ;写入一字节数据
	MOV	MTD, #00H	                            ;写入的数据装入MTD缓冲区
	LCALL	IWRNBYTE
sjtqjx:	mov	a, 51h
	mov	25h, a
	mov	a, 52h
	mov	26h, a
	ret
;**********************************************
 ;大时间比较程序 ;27h  ;2bh  ;30h  ;34h(电机启动识别光标时应停止此程序)
                 ;28h  ;2ch  ;31h  ;35h
                 ;29h  ;2dh  ;32h  ;36h
                 ;2ah  ;2eh  ;33h  ;37h
                 ;deng1/ji1/ deng2/ ji2   
                 ;0ch  /0dh/  0eh / 0fh 	    
bijiaod:	nop
bjdzc:	nop
            ;deng1时间段判断
	mov	a, 27h
	mov	4ah, a
	mov	a, 28h
	mov	4bh, a	                                    ;转移数据
	sjmp	bjd0	                                    ;启动提前一分/05/05/07
            ;
bjdloop1:	nop
	mov	a, 4ah
	add	a, #01h

⌨️ 快捷键说明

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