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

📄 lll.asm

📁 此系统是本人做毕业设计时候的老东西了
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	ACALL DELAY
	ACALL DELAY		;	...
	ACALL DELAY
	ACALL DELAY
	ACALL DELAY		;	...
	ACALL DELAY
	MOV P0,#0CH		;	开显示
	ACALL ENABLE
	JNB CHECK,ERR4		;	等待键释放
	MOV 65H,#00H		;	检修完毕信号送65H
	MOV 64H,#9
	MOV 30H,#1
	MOV R0,#31H		;	一楼信号送R0
CLY:	MOV @R0,#00H		;	清除该信号
	INC R0			;	加1后送R0
	DJNZ 64H,CLY		;	自减循环8次
	AJMP MAIN
;=========================================
DISP:				;	显示子程序
	CJNE R2,#00H,DISP1	;	楼层信号判断
	Mov dptr,#table2	;	送向下显示代码
	SJMP DISP2		;	跳显示主程序
DISP1:	CJNE R2,#11H,DISP3	;	楼层信号判断
	Mov dptr,#table1	;	送向上显示代码
	SJMP DISP2		;	跳显示主程序
DISP3:	CJNE R2,#33H,DISP4
	MOV DPTR,#TABLE00	;	楼层信号判断
	AJMP DISP2
DISP4:	MOV DPTR,#TABLE3
DISP2:	MOV R1,#00H		;	送代码指针到R1
	Acall write1		;	调1602读数据子程序
	mov p0,#0c0h		;	显示位置设置
	Acall enable		;	调1602写数据子程序
	MOV A,30H		;	当前楼层信号送A
	CJNE A,#1,NT1		;	等于1显示1F
	SJMP DISP01
NT1:	CJNE A,#2,NT2		;	等于2显示2F
	SJMP DISP02
NT2:	CJNE A,#3,NT3		;	等于3显示3F
	SJMP DISP03
NT3:	CJNE A,#4,NT4		;	等于4显示4F
	SJMP DISP04
NT4:	CJNE A,#5,NT5		;	等于5显示5F
	SJMP DISP05
NT5:	CJNE A,#6,NT6		;	等于6显示6F
	SJMP DISP06
NT6:	CJNE A,#7,NT7		;	等于7显示7F
	SJMP DISP07
DISP01:	mov dptr,#table10	;	1楼显示代码首地址
	SJMP EXP
DISP02:	MOV DPTR,#TABLE20	;	2楼显示代码首地址
	SJMP EXP
DISP03:	MOV DPTR,#TABLE30	;	3楼显示代码首地址
	SJMP EXP
DISP04:	MOV DPTR,#TABLE40	;	4楼显示代码首地址
	SJMP EXP
DISP05:	MOV DPTR,#TABLE50	;	5楼显示代码首地址
	SJMP EXP
DISP06:	MOV DPTR,#TABLE60	;	6楼显示代码首地址
	SJMP EXP
DISP07:	MOV DPTR,#TABLE70	;	7楼显示代码首地址
	SJMP EXP		;	转显示主程序
				;	等于8显示8F
NT7:	CJNE A,#8,CHECKING
	MOV DPTR,#TABLE80	;	8楼显示代码首地址
	SJMP EXP
CHECKING:
	MOV DPTR,#TABLE100
EXP:	Acall write1		;	调1602读数据子程序
	mov p0,#0c2h		;	显示位置设置
	Acall enable		;	调1602写数据子程序
	MOV P0,#80H		;	显示位置
	ACALL ENABLE		;	调1602写数据子程序
	RET			;	返回
;=======================================
KEYBORDSCAN:			;	键盘扫描子程序
	JNB DOOR,COMP		;	首次判断
	AJMP L1			;	转扫描主程序
COMP:	ACALL DELAY		;	消斗
	JNB DOOR,COMP0		;	二次判断
L1:	JNB CHECK,CHECK1
	AJMP L2
CHECK1:	ACALL DELAY
	JNB CHECK,CHECK2
L2:	MOV 70H,#0F7H		;	开始扫描
	MOV 71H,#00H		;	00H送键盘信号寄存器
L3:	MOV A,70H		;	送扫描信号到A
	MOV P1,A		;	送扫描信号到P1口	
	MOV A,P1		;	读取P1口信息
	MOV 50H,A		;	暂存P1口信息
	SETB C			;	CY=1
	MOV 72H,#4		;	列扫描初值送72H单元
L4:	RLC A			;	带CY左移P1口信号
	JNC KEY			;	CY?=0
	INC 71H			;	CY=1,键盘信号寄存器加1
	DJNZ 72H,L4		;	子减72H单元内容
	MOV A,70H		;	扫描信号送到A
	SETB C			;	让CY=1
	RRC A			;	带CY右移扫描信号
	MOV 70H,A		;	暂存扫描
	JC L3			;	CY?=1
	AJMP KEYBORDSCAN1	;	CY=0退出扫描
KEY:	MOV R7,#10		;	CY=0,有键按下
D1:	MOV R6,#248		;	25MS延时消斗
	DJNZ R6,$               ;	25MS延时消斗 	                                                        
	DJNZ R7,D1		;	25MS延时消斗
	MOV A,71H		;	取键盘信号
	MOV DPTR,#TABLE		;	送键盘代码首地址到DPTR
	MOVC A,@A+DPTR		;	查表,求键值,送A
	AJMP DATASCAN		;	跳至键盘数据读取程序
;=============================
COMP0:	ACALL DELAY			;	门开关键
	JNB DOOR,$			;	等待键释放
	CJNE R2,#0FFH,KEYBORDSCAN10	;	判断电梯状态
	CPL MEN				;	停止时开启或关闭电梯门
	CPL 7FH
	MOV 31H,#00H			;	清除楼层请求指针信号
	AJMP KEYBORDSCAN10
CHECK2:	ACALL DELAY	
	JNB CHECK,$
	MOV A,65H
	CJNE A,#00H,KEYBORDSCAN10
	CLR JINGGAO
KEYBORDSCAN10:
	AJMP KEYBORDSCAN1		;	退出扫描
DATASCAN:				;	读取键盘数据
	CJNE A,#01H,COMP1		;	1号键
	MOV 21H,#1
	MOV 31H,#0FFH			
	AJMP KEYBORDSCAN1		;	退出扫描		
COMP1:	CJNE A,#02H,COMP3		;	2号键
	MOV 22H,#1			;	2楼信号指针送1
	MOV 32H,#0FFH			;	2楼请求信号送0FFH
	AJMP KEYBORDSCAN1		;	退出扫描
COMP3:	CJNE A,#03H,COMP4		;	3号键
	MOV 23H,#1			;	3楼信号指针送1
	MOV 33H,#0FFH			;	3楼请求信号送0FFH
	AJMP KEYBORDSCAN1		;	退出扫描
COMP4:	CJNE A,#04H,COMP5		;	4号键
	MOV 24H,#1			;	4楼信号指针送1
	MOV 34H,#0FFH			;	4楼请求信号送0FFH
	AJMP KEYBORDSCAN1		;	退出扫描
COMP5:	CJNE A,#05H,COMP6		;	5号键
	MOV 25H,#1			;	5楼信号指针送1
	MOV 35H,#0FFH			;	5楼请求信号送0FFH
	AJMP KEYBORDSCAN1		;	退出扫描
COMP6:	CJNE A,#06H,COMP7		;	6号键
	MOV 26H,#1			;	6楼信号指针送1
	MOV 36H,#0FFH			;	6楼请求信号送0FFH
	AJMP KEYBORDSCAN1		;	退出扫描
COMP7:	CJNE A,#07H,COMP8		;	7号键
	MOV 27H,#1			;	7楼信号指针送1
	MOV 37H,#0FFH			;	7楼请求信号送0FFH
	AJMP KEYBORDSCAN1		;	退出扫描
COMP8:	CJNE A,#08H,KEYBORDSCAN1	;	8号键
	MOV 28H,#1			;	8楼信号指针送1
	MOV 38H,#0FFH			;	8楼请求信号送0FFH
KEYBORDSCAN1:	
	RET				;	退出扫描
;=============================定时报警限制
TT0:	PUSH ACC			;	保护ACC	
	MOV TH0,#3CH			;	重置定时器初值
	MOV TL0,#0B0H
	DJNZ R3,OUT			;	循环指针自减1
	MOV R3,#50			;	减完后重置初值
	MOV A,65H			;	(65H)送到A
	CJNE A,#0FFH,KK			;	是否为0FFH
	AJMP UUUU			;	下行
KK:	JNB XIANWEI,CONT		;	电梯限位判断
	JNB XIANWEI,CONT
	JNB XIANWEI,CONT
	JNB XIANWEI,CONT
	CLR JINGGAO			;	=0发出警告
	CLR TR0				;	关闭定时器
	AJMP OUT			;	退出中断
CONT:	CJNE R2,#11H,UUU		;	当前运行状态判断
	INC 30H				;	上行将楼层信号加1
	MOV A,30H			;	信号送到A
	CJNE A,#9,OUT			; 	顶层判断
	MOV 30H,#8			;	重置初值
	SJMP OUT			;	退出中断
UUU:	CJNE R2,#00H,OUT		;	楼层运行状态判断
UUUU:	DEC 30H				;	下行将楼层信号减1
	MOV A,30H			;	信号送到A
	CJNE A,#0,OUT			;	极限判断
	MOV 30H,#1			;	重置初值
OUT: 	POP ACC				;	恢复ACC的内容
	RETI				;	退出中断
;======================================
ENABLE:					;	1602写数据子程序
	CLR RS				;	RS=0
	CLR RW 				;	RW=0
	CLR E 				;	E=0
	ACALL DELAY 			;	高脉冲到E
	SETB E 				;	E=1
	RET				;	退出
;=====================================
	WRITE1:				;	1602读数据子程序
	MOV R4,#00H			;	数据偏移地址送R4
A1:	MOV A,R4			;	转送到A
	MOVC A,@A+DPTR			;	查表
	ACALL WRITE2			;	调读数据子程序
	INC R4				;	偏移地址加1显示下1个代码
	CJNE A,#00H,A1			;	判断是否取完代码
	RET				;	退出
;=====================================	
WRITE2:	MOV P0,A			;	代码送P0
	SETB RS				;	RS=1
	CLR RW				;	RW=0
	CLR E				;	E=0
	ACALL DELAY			;	高脉冲送到E
	SETB E				;	E=1
	RET				;	退出
;====================================	;	延时子程序
DELAY:	MOV R7,#255
DD1:	MOV R6,#10
	DJNZ R6,$
	DJNZ R7,DD1
	RET
DELAY1:	MOV R7,#150			;	延时子程序1
DD2:	MOV R6,#255
	DJNZ R6,$
	DJNZ R7,DD2
	RET
;====================================
table1:  ;显示UP      
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,55h,50h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h;
table2:	;显示DOWN
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,44h,4Fh,57h,4Eh,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h;
table3:	;显示!!!!
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,21h,21h,21h,21h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h;
table10: ;显示1F
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,31h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h;
table20: ;显示2F
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,32h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00H
table30: ;显示3F
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,33h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00H
table40: ;显示4F
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,34h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00H
table50: ;显示5F
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,35h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00H
table60: ;显示6F
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,36h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00H
table70: ;显示7F
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,37h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00H
table80: ;显示8F
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,38h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00H
table00: ;显示ERR
db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,45h,52h,52h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h
TABLE: ;键盘代码8181727263635454
DB 08H,01H,08H,01H,07H,02H,07H,02H,06H,03H,06H,03H,05H,04H,05H,04H
TABLE100: ;显示CHECKING
DB 2Ah,2Ah,2Ah,2Ah,43h,48h,45h,43h,4Bh,49h,4Eh,47h,2Ah,2Ah,2Ah,2Ah,00h
END

⌨️ 快捷键说明

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