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

📄 hex.asm

📁 这是基于单片机的专用定时器的设计。使用汇编语言来编写
💻 ASM
📖 第 1 页 / 共 3 页
字号:
ZHLI2:  MOV  A,XSSS    ;设置日期时间
XSSS1:  CJNE  A,#01H,XSSS2     ;设置年的高位
  	MOV  XSSS,#02H
  	MOV  A,YEAR
  	ANL  A,#0FH
  	ADD  A,52H
  	MOV  YEAR,A
  	MOV  DS1302ADDR,#8CH  ;写入DS1302年的值的命令码
  	MOV  DS1302DATA,YEAR  ;写入DS1302年的值
  	LCALL  WRITE
  	MOV  A,53H      ;显示年的值
  	LCALL  DISPABLE
 	RET
XSSS2:  CJNE  A,#02H,XSSS3  ;设置年的低位
  	MOV  XSSS,#03H
  	MOV  A,YEAR
  	ANL  A,#0F0H
  	ADD  A,54H
  	MOV  YEAR,A
  	MOV  DS1302ADDR,#8CH
  	MOV  DS1302DATA,YEAR
  	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
   	MOV  A,#14H     ;光标右移1位
   	LCALL   ENABLE
        RET
XSSS3:  CJNE  A,#03H,XSSS4  ;设置月的高位
  	MOV  A,52H
  	CJNE  A,#00H,MON1   ;月的高位只能是0或1,是其它值无效
  	JMP  MONT
MON1:  	CJNE  A,#10H,MON2
MONT: 	MOV  A,MONTH
  	ANL  A,#0FH
  	ADD  A,52H
  	MOV  MONTH,A
	MOV  DS1302ADDR,#88H  ;写入DS1302月的值的命令码
  	MOV  DS1302DATA,MONTH  ;写入DS1302月的值
  	LCALL  WRITE
  	MOV  A,53H      
  	LCALL  DISPABLE       ;显示月的值
  	MOV  XSSS,#04H
 	MON2:RET
XSSS4:  CJNE  A,#04H,XSSS5  ;设置月的低位
	MOV  A,MONTH
	ANL  A,#0F0H
	CJNE  A,#00H,MJM1  ;判断月的高位为0还是1,为0时,月的低位不能为0,为0无效
	MOV  A,54H
	CJNE  A,#00H,MOT1
	JMP  MOOUT 
	MJM1: MOV A,54H
	CJNE  A,#00H,MJM2   ;月的高位为1,低位只能为0、1、2,为其它值无效
    	JMP  MOT1
MJM2:	CJNE  A,#01H,MJM3
    	JMP  MOT1
MJM3:	CJNE  A,#02H,MOOUT    
MOT1:  	MOV  A,MONTH
  	ANL  A,#0F0H
  	ADD  A,54H
  	MOV  MONTH,A
  	MOV  DS1302ADDR,#88H  	;写入DS1302月的值的命令码
  	MOV  DS1302DATA,MONTH 	;写入DS1302月的值
  	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
  	MOV  A,#14H
   	LCALL   ENABLE   	 ;光标右移1位
   	MOV  XSSS,#05H
MOOUT:     RET
XSSS5:  CJNE  A,#05H,XSSS6   	 ;设置日的高位
    	MOV A,52H
 	CJNE  A,#00H,JSS61   	;日的高位只能是0、1、2、3,为其它值无效
 	JMP  JSS64
JSS61:	CJNE  A,#10H,JSS62
	JMP  JSS64
JSS62:	CJNE  A,#20H,JSS63
	JMP  JSS64
JSS63:	CJNE  A,#30H,JSSOUT
JSS64:  MOV  A,DAY
  	ANL  A,#0FH
  	ADD  A,52H
  	MOV  DAY,A
   	MOV  DS1302ADDR,#86H  	 ;写入DS1302日的值的命令码
 	 MOV  DS1302DATA,DAY  	;写入DS1302月的值
  	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
  	MOV  XSSS,#06H
JSSOUT: RET
XSSS6:  CJNE  A,#06H,XSSS7  	;设置日的低位
  	MOV  A,DAY
  	ANL  A,#0F0H
  	CJNE  A,#00H,RI3   	;当日的高位为0,低位不能为0
	MOV  A,54H
	CJNE  A,#00H,SDDT
	JMP   DSOUT
RI3: 	CJNE  A,#30H,SDDT  	;当日的高位为3,低位只能为0、1
	MOV  A,54H
	CJNE  A,#00H,AFJ1
	JMP  SDDT
AFJ1:	CJNE  A,#01H, DSOUT
SDDT: 	MOV  A,DAY
  	ANL  A,#0F0H
  	ADD  A,54H
  	MOV  DAY,A
     	MOV  DS1302ADDR,#86H
  	MOV  DS1302DATA,DAY
  	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
   	MOV  A,#0C0H   		;跳到液晶显示器的第二行第一个地址显示时间
   	LCALL   ENABLE
   	MOV  XSSS,#07H
DSOUT:	RET
XSSS7:  CJNE  A,#07H,XSSS8   	;设置时的高位
 	MOV  A,52H
 	CJNE  A,#00H,FGJ1  	;时的高位只能为0、1、2
 	JMP  YUI
FGJ1:	CJNE  A,#10H,FGJ2
	JMP  YUI
FGJ2:	CJNE  A,#20H,YUOUT
YUI:  	MOV  A,HR
  	ANL  A,#0FH
  	ADD  A,52H
  	MOV  HR,A
  	MOV  DS1302ADDR,#84H   	;写入DS1302时的值的命令码
  	MOV  DS1302DATA,HR 	;写入DS1302时的值
  	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
  	MOV  XSSS,#08H
YUOUT:	RET
XSSS8:  CJNE  A,#08H,XSSS9  	;设置时的低位
 	MOV  A,DAY
 	ANL  A,#0F0H
 	CJNE  A,#20H,LYU      	;当时的高位为2,低位只能是0、1、2、3,为其它值无效
 	MOV  A,54H
 	CJNE  A,#00H,LKK1
 	JMP  LYU
LKK1:	CJNE  A,#01H,LKK2
	JMP  LYU
LKK2:	CJNE  A,#02H,LKK3
	JMP  LYU
LKK3:	CJNE  A,#03H,LKK4
LYU:  	MOV  A,HR
  	ANL  A,#0F0H
  	ADD  A,54H
  	MOV  HR,A
  	MOV  DS1302ADDR,#84H	;写入DS1302时的值的命令码
  	MOV  DS1302DATA,HR 	;写入DS1302时的值
  	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
 	MOV  A,#14H   		;光标右移1位
   	LCALL   ENABLE
    	MOV  XSSS,#09H
LKK4:	RET
XSSS9:  CJNE  A,#09H,XSSSA   	;设置分的高位
  	MOV A,52H
	CJNE  A,#00H,TYT1   	 ;分的高位只能是0、1、2、3、4、5
	JMP WER
TYT1:	CJNE  A,#10H,TYT2
	JMP WER
TYT2:	CJNE  A,#20H,TYT3
	JMP WER
TYT3:	CJNE  A,#30H,TYT4
	JMP WER
TYT4:	CJNE  A,#40H,TYT5
	JMP WER
TYT5:	CJNE  A,#50H,TYTOUT
WER: 	MOV  A,MIN
  	ANL  A,#0FH
  	ADD  A,52H
  	MOV  MIN,A
   	MOV  DS1302ADDR,#82H	;写入DS1302分的值的命令码
  	MOV  DS1302DATA, MIN	;写入DS1302分的值
  	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE		;显示输出分的值
  	MOV  XSSS,#0AH
TYTOUT:	RET
XSSSA:  CJNE  A,#0AH,XSSSB 	;设置分的低位
  	MOV  XSSS,#0BH
  	MOV  A,MIN
  	ANL  A,#0F0H
  	ADD  A,54H
  	MOV  MIN,A
    	MOV  DS1302ADDR,#82H
  	MOV  DS1302DATA, MIN
  	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
 	MOV  A,#14H     	;光标右移1位
   	LCALL   ENABLE
 	RET
XSSSB:  CJNE  A,#0BH,XSSSC	;设置秒的高位
	MOV A,52H
	CJNE  A,#00H,MIAO1   	 ;秒的高位只能是0、1、2、3、4、5
	JMP MIAOR
MIAO1:	CJNE  A,#10H,MIAO2
	JMP MIAOR
MIAO2:	CJNE  A,#20H,MIAO3
	JMP MIAOR
MIAO3:	CJNE  A,#30H,MIAO4
	JMP MIAOR
MIAO4:	CJNE  A,#40H,MIAO5
	JMP MIAOR
MIAO5:	CJNE  A,#50H,MIAOUT
MIAOR: 	MOV  A,SEC
 	ANL  A,#0FH
  	ADD  A,52H
  	MOV  SEC,A
  ;	MOV  DS1302ADDR,#80H	;写入DS1302秒的值的命令码
  ;	MOV  DS1302DATA, SEC    ;写入DS1302秒的值
  ;	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
	MOV  XSSS,#0CH
MIAOUT:RET
XSSSC:  CJNE  A,#0CH,XSSSD	;设置秒的低位
  	MOV  XSSS,#0DH
  	MOV  A,SEC
  	ANL  A,#0F0H
  	ADD  A,54H
  	MOV  SEC,A
  ;	MOV  DS1302ADDR,#80H
  ;	MOV  DS1302DATA, SEC
  ;	LCALL  WRITE
  	MOV  A,53H
  	LCALL  DISPABLE
  	MOV  A,#0CBH   		;星期显示的地址
   	LCALL   ENABLE
       	RET
XSSSD:	MOV  XSSS,#01H
 	MOV  A,54H
  	INC  A
  	MOV  WEEK,A
     	MOV  DS1302ADDR,#8AH	;写入DS1302星期的值的命令码
  	MOV  DS1302DATA, WEEK	;写入DS1302星期的值
  	LCALL  WRITE
  	LCALL  WEEKCHL		;调用星期处理子程序
  	LCALL  DISPWEEK  	;调用星期显示子程序
   	MOV  A,#82H  		 ;跳到年地址的高位
   	LCALL   ENABLE
     	RET 
DELAY:	MOV   R6,#14H		 ;延时10MS
DDF:	MOV   R5,#248
	DJNZ  R5,$
	DJNZ  R6,DDF
	    RET
;自定义字库		
WENZI:  MOV A,#40H            ;位6、7为表示字符发生器地址设置,位3、4、5表示字符存放在CGRAM地址低三位
	LCALL  ENABLE           ;定义年字,存于00H
	MOV A,#08H
	LCALL DISPABLE
	MOV A,#41H
	LCALL  ENABLE
	MOV A,#0FH
	LCALL DISPABLE
	MOV A,#42H
	LCALL  ENABLE
	MOV A,#12H
	LCALL DISPABLE
	MOV A,#43H
	LCALL  ENABLE
	MOV A,#0FH
	LCALL DISPABLE
	MOV A,#44H
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#45H
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#46H
	LCALL  ENABLE
	MOV A,#02H
	LCALL DISPABLE
	MOV A,#47H
	LCALL  ENABLE
	MOV A,#00H
	LCALL DISPABLE

	MOV A,#48H       ;定义月字,存于01H
	LCALL  ENABLE
	MOV A,#0FH
	LCALL DISPABLE
	MOV A,#49H
	LCALL  ENABLE
	MOV A,#09H
	LCALL DISPABLE
	MOV A,#4AH
	LCALL  ENABLE
	MOV A,#0FH
	LCALL DISPABLE
	MOV A,#4BH
	LCALL  ENABLE
	MOV A,#09H
	LCALL DISPABLE
	MOV A,#4CH
	LCALL  ENABLE
	MOV A,#0FH
	LCALL DISPABLE
	MOV A,#4DH
	LCALL  ENABLE
	MOV A,#09H
	LCALL DISPABLE
	MOV A,#4EH
	LCALL  ENABLE
	MOV A,#13H
	LCALL DISPABLE
	MOV A,#4FH
	LCALL  ENABLE
	MOV A,#00H
	LCALL DISPABLE

	MOV A,#50H      ;定义日字,存于02H
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#51H
	LCALL  ENABLE
	MOV A,#11H
	LCALL DISPABLE
	MOV A,#52H
	LCALL  ENABLE
	MOV A,#11H
	LCALL DISPABLE
	MOV A,#53H
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#54H
	LCALL  ENABLE
	MOV A,#11H
	LCALL DISPABLE
	MOV A,#55H
	LCALL  ENABLE
	MOV A,#11H
	LCALL DISPABLE
	MOV A,#56H
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#57H
	LCALL  ENABLE
	MOV A,#00H
	LCALL DISPABLE

	MOV A,#58H       ;定义分字,存于03H
	LCALL  ENABLE
	MOV A,#0CH
	LCALL DISPABLE
	MOV A,#59H
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#5AH
	LCALL  ENABLE
	MOV A,#11H
	LCALL DISPABLE
	MOV A,#5BH
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#5CH
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#5DH
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#5EH
	LCALL  ENABLE
	MOV A,#1AH
	LCALL DISPABLE
	MOV A,#5FH
	LCALL  ENABLE
	MOV A,#00H
	LCALL DISPABLE

	MOV A,#60H      ;定义禾字,存于04H
	LCALL  ENABLE
	MOV A,#0EH
	LCALL DISPABLE
	MOV A,#61H
	LCALL  ENABLE
	MOV A,#04H
	LCALL DISPABLE
	MOV A,#62H
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#63H
	LCALL  ENABLE
	MOV A,#0EH
	LCALL DISPABLE
	MOV A,#64H
	LCALL  ENABLE
	MOV A,#0EH
	LCALL DISPABLE
	MOV A,#65H
	LCALL  ENABLE
	MOV A,#11H
	LCALL DISPABLE
	MOV A,#66H
	LCALL  ENABLE
	MOV A,#04H
	LCALL DISPABLE
	MOV A,#67H
	LCALL  ENABLE
	MOV A,#00H
	LCALL DISPABLE

	MOV A,#68H       ;定义少字,存于05H
	LCALL  ENABLE
	MOV A,#04H
	LCALL DISPABLE
	MOV A,#69H
	LCALL  ENABLE
	MOV A,#04H
	LCALL DISPABLE
	MOV A,#6AH
	LCALL  ENABLE
	MOV A,#0EH
	LCALL DISPABLE
	MOV A,#6BH
	LCALL  ENABLE
	MOV A,#15H
	LCALL DISPABLE
	MOV A,#6CH
	LCALL  ENABLE
	MOV A,#02H
	LCALL DISPABLE
	MOV A,#6DH
	LCALL  ENABLE
	MOV A,#04H
	LCALL DISPABLE
	MOV A,#6EH
	LCALL  ENABLE
	MOV A,#18H
	LCALL DISPABLE
	MOV A,#6FH
	LCALL  ENABLE
	MOV A,#00H
	LCALL DISPABLE

	MOV A,#70H      ;定义开字,存于06H
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#71H
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#72H
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#73H
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#74H
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#75H
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#76H
	LCALL  ENABLE
	MOV A,#12H
	LCALL DISPABLE
	MOV A,#77H
	LCALL  ENABLE
	MOV A,#00H
	LCALL DISPABLE

	MOV A,#78H       ;定义关字,存于07H
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#79H
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#7AH
	LCALL  ENABLE
	MOV A,#04H
	LCALL DISPABLE
	MOV A,#7BH
	LCALL  ENABLE
	MOV A,#04H
	LCALL DISPABLE
	MOV A,#7CH
	LCALL  ENABLE
	MOV A,#1FH
	LCALL DISPABLE
	MOV A,#7DH
	LCALL  ENABLE
	MOV A,#0AH
	LCALL DISPABLE
	MOV A,#7EH
	LCALL  ENABLE
	MOV A,#11H
	LCALL DISPABLE
	MOV A,#7FH
	LCALL  ENABLE
	MOV A,#00H
	LCALL DISPABLE
             RET
	     END

⌨️ 快捷键说明

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