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

📄 lcd1602定时控制.asm

📁 一个定时控制器
💻 ASM
📖 第 1 页 / 共 2 页
字号:
RS  EQU P2.0
RW  EQU P2.1
E  EQU  P2.2
D0_D7  EQU  P0
BEEP BIT P3.7

ORG 0000H
AJMP READY
ORG 000BH
AJMP INT_0
ORG 001BH
AJMP INT_1


;30H-37H  循环显示
;3AH键值   3BH是否已进入设置状态
;40H-47H TIME0
;48H-4FH TIME1
;50H-57H TIME2
;58H-5FH TIME3
INT_READY:MOV IE,#8AH
			MOV TMOD,#11H
		    MOV TH0,#4CH
			MOV TL0,#00H
			MOV TH1,#00H
			MOV TL1,#00H
			SETB TR0
			SETB TR1
			RET

INT_0:MOV TH0,#4CH
	  MOV TL0,#00H
      PUSH ACC
      INC 38H
      MOV A,38H
	  CJNE A,#20D,INT_0_EXIT
	  MOV 38H,#00H
	  AJMP TIME_0
;************************************	  
INT_0_EXIT:
           POP ACC
           RETI	
;*************************************
TIME_0: MOV A,44H
	  CJNE A,#01H,TIME_1
      DEC 45H
	  MOV A,45H
	  CJNE A,#0FFH,CHECK0
	  MOV 45H,#59D
	  DEC 43H
	  MOV A,43H
      CJNE A,#0FFH,CHECK0
	  MOV 43H,#59D
	  DEC 42H
	  MOV A,42H
	  CJNE A,#0FFH,CHECK0
	  MOV 42H,#99D
CHECK0: MOV A,#00H
	  ADD A,45H
	  ADD A,43H
	  ADD A,42H
	  CJNE A,#00H,TIME_0_EXIT
	  MOV 44H,#00H
	  MOV C,00H
	  CPL C
	  MOV 00H,C
	  MOV P2.7,C
	  MOV A,41H
	  CJNE A,#01H,NO_BEEP0
	  MOV 64H,#01H
	  AJMP TIME_0_EXIT
NO_BEEP0:MOV 64H,#00H
TIME_0_EXIT:MOV A,3EH
           CJNE A,#01H,TIME_1
		   MOV R1,#40H
		   LCALL DISP_DATA_LOOP	
;************************************
TIME_1: MOV A,4CH
	  CJNE A,#01H,TIME_2
      DEC 4DH
	  MOV A,4DH
	  CJNE A,#0FFH,CHECK1
	  MOV 4DH,#59D
	  DEC 4BH
	  MOV A,4BH
      CJNE A,#0FFH,CHECK1
	  MOV 4BH,#59D
	  DEC 4AH
	  MOV A,4AH
	  CJNE A,#0FFH,CHECK1
	  MOV 4AH,#99D
CHECK1: MOV A,#00H
	  ADD A,4DH
	  ADD A,4BH
	  ADD A,4AH
	  CJNE A,#00H,TIME_1_EXIT
	  MOV 4CH,#00H
	  MOV C,01H
	  CPL C
	  MOV 01H,C
	  MOV P2.6,C
	  MOV A,49H
	  CJNE A,#01H,NO_BEEP1
	  MOV 64H,#01H
	  AJMP TIME_1_EXIT
NO_BEEP1:MOV 64H,#00H
TIME_1_EXIT:MOV A,3EH
           CJNE A,#02H,TIME_2
		   MOV R1,#48H
		   LCALL DISP_DATA_LOOP
		   AJMP TIME_2
	   	  
;************************************
TIME_2: MOV A,54H
	  CJNE A,#01H,TIME_3
      DEC 55H
	  MOV A,55H
	  CJNE A,#0FFH,CHECK2
	  MOV 55H,#59D
	  DEC 53H
	  MOV A,53H
      CJNE A,#0FFH,CHECK2
	  MOV 53H,#59D
	  DEC 52H
	  MOV A,52H
	  CJNE A,#0FFH,CHECK2
	  MOV 52H,#99D
CHECK2: MOV A,#00H
	  ADD A,55H
	  ADD A,53H
	  ADD A,52H
	  CJNE A,#00H,TIME_2_EXIT
	  MOV 54H,#00H
	  MOV C,02H
	  CPL C
	  MOV 02H,C
	  MOV P2.5,C
	  MOV A,51H
	  CJNE A,#01H,NO_BEEP2
	  MOV 64H,#01H
	  AJMP TIME_2_EXIT
NO_BEEP2:MOV 64H,#00H
TIME_2_EXIT:MOV A,3EH
           CJNE A,#03H,TIME_3
		   MOV R1,#50H
		   LCALL DISP_DATA_LOOP	  
;************************************
TIME_3: MOV A,5CH
	  CJNE A,#01H,EXIT_INT_0
      DEC 5DH
	  MOV A,5DH
	  CJNE A,#0FFH,CHECK3
	  MOV 5DH,#59D
	  DEC 5BH
	  MOV A,5BH
      CJNE A,#0FFH,CHECK3
	  MOV 5BH,#59D
	  DEC 5AH
	  MOV A,5AH
	  CJNE A,#0FFH,CHECK3
	  MOV 5AH,#99D
CHECK3: MOV A,#00H
	  ADD A,5DH
	  ADD A,5BH
	  ADD A,5AH
	  CJNE A,#00H,TIME_3_EXIT
	  MOV 5CH,#00H
	  MOV C,03H
	  CPL C
	  MOV 03H,C
	  MOV P2.4,C
	  MOV A,59H
	  CJNE A,#01H,NO_BEEP3
	  MOV 64H,#01H
	  AJMP TIME_3_EXIT
NO_BEEP3:MOV 64H,#00H
TIME_3_EXIT:MOV A,3EH
           CJNE A,#04H,EXIT_INT_0
		   MOV R1,#58H
		   LCALL DISP_DATA_LOOP
EXIT_INT_0:	AJMP INT_0_EXIT	  


;********************************************************
INT_1:PUSH ACC
      INC 3DH
	  MOV A,3DH
	  CJNE A,#50D,INT_1_EXIT
	  MOV 3DH,#00H
	  INC 3EH
	  MOV A,3EH
;****************************************
DISP_TIME0:CJNE A,#01H,DISP_TIME1
		   MOV R1,#40H
		   LCALL DISP_DATA_LOOP
		   AJMP INT_1_EXIT
;****************************************
DISP_TIME1:CJNE A,#02H,DISP_TIME2
           MOV R1,#48H
		   LCALL DISP_DATA_LOOP
		   AJMP INT_1_EXIT
;****************************************
DISP_TIME2:CJNE A,#03H,DISP_TIME3
		   MOV R1,#50H
		   LCALL DISP_DATA_LOOP
		   AJMP INT_1_EXIT

;****************************************
DISP_TIME3:CJNE A,#04H,CLR_TIME
            MOV R1,#58H
		   LCALL DISP_DATA_LOOP
		   AJMP INT_1_EXIT
;****************************************
CLR_TIME:MOV 3EH,#01H
         MOV A,3EH
		 AJMP DISP_TIME0
;****************************************
INT_1_EXIT:POP ACC
           MOV TH1,#00H
		   MOV TL1,#00H
		   RETI

;****************************************
DISP_DATA_LOOP:MOV R2,#8D
               MOV R0,#30H
LOOP0:          MOV A,@R1
               MOV @R0,A
			   INC R0
			   INC R1
			   DJNZ R2,LOOP0
			   RET

;*****************************************************************
READY:MOV A,#00111000B   ;功能设置指令,8位接口,显示2行,5×7字符
      LCALL WriteIR      ;调写指令寄存器子程序
      MOV A,#00001100B   ;显示开关控制指令,显示器开,光标开,光标闪烁
      LCALL WriteIR
      MOV A,#00000110B   ;输入方式设置指令,字符不动,光标自动右移一格
      LCALL WriteIR  
      MOV A,#00000001B  ;清屏指令,将DDRAM数据全部填入"空白"
      LCALL WriteIR
	  ;**************** 显示make of pp,time Time  Controller
	  MOV A,#10000000B
	  LCALL WRITEIR
      MOV DPTR,#DATA3
	  LCALL LCD_DISP
	  MOV A,#11000000B
	  LCALL WRITEIR
	  MOV DPTR,#DATA0
	  LCALL LCD_DISP
	  ;****************
	  MOV R4,#00H
      LCALL DELAY
	  
	  ;****************
	  
	  MOV 30H,#00H	 ;mode
	  MOV 31H,#00H	 ;beep
	  MOV 32H,#00H	 ;小时
	  MOV 33H,#00H	 ;分钟
	  MOV 34H,#00H   ;是否已开启
	  MOV 35H,#00H	 ;秒
	  MOV 36H,#3AH   ;冒号
	  MOV 37H,#01H   ;序号

	  MOV 38H,#00H	 ;定时器0计时
	  MOV 39H,#01H	 ;循环显示状态还是设置状态
	  MOV 3CH,#00H	 ;按键

	  MOV 3DH,#00H	; 定时器1计时
	  MOV 3EH,#01H  ;定时器1
	  MOV 3BH,#00H

	  MOV 60H,#40H
	  MOV SP,#70H

	  MOV R2,#32D
	  MOV R0,#40H
DATA_LOOP:MOV @R0,#00H
          INC R0
		  DJNZ R2,DATA_LOOP

	  MOV 46H,#3AH
	  MOV 47H,#01H

	  MOV 4EH,#3AH
	  MOV 4FH,#02H

	  MOV 56H,#3AH
	  MOV 57H,#03H

	  MOV 5EH,#3AH
	  MOV 5FH,#04H


	  MOV A,#00000001B  ;清屏指令,将DDRAM数据全部填入"空白"
      LCALL WriteIR
	  LCALL INT_READY
	  
	  
	 
;*************************	  
MAIN:LCALL DISP
     LCALL KEY
	 LCALL KEY1
	 MOV A,64H
	 CJNE A,#01H,MAIN
	 MOV 64H,#00H
	 ACALL BEEP_BL
	 ACALL BEEP_BL
	 ACALL BEEP_BL
	 ACALL BEEP_BL
	 AJMP MAIN
;*************************
;----------------------------------------------
;蜂鸣器响一声子程序
;----------------------------------------------
BEEP_BL:
           MOV  R6,#50
  BL1:     CALL  DEX1
           CPL  BEEP
           DJNZ  R6,BL1
           MOV  R5,#10
           CALL  DELAY2
           RET
 DEX1:     MOV  R7,#180
 DEX2:     NOP
           DJNZ  R7,DEX2
           RET
DELAY2:                    ;延时R5×10MS
           MOV  R6,#50
DELAY1:    MOV  R7,#100
           DJNZ  R7,$
           DJNZ  R6,DELAY1
           DJNZ  R5,DELAY2
           RET
;----------------------------------------------------
KEY1:MOV P1,#0FFH
    MOV A,P1
	ANL A,#00001111B
	CJNE A,#00001111B,KEY1_PANDUAN
KEY1_EXIT: RET
KEY1_PANDUAN:MOV 3AH,A
          MOV R4,#15D
          LCALL DELAY
		  MOV A,P1
		  ANL A,#00001111B
		  CJNE A,3AH,KEY1_EXIT
		  LCALL KEY1_CHULI
		  LCALL BEEP_BL
		  RET
KEY1_CHULI:CJNE A,#00001110B,KEY1_2
		   MOV 44H,#00H
		   MOV C,00H
		   CPL C
		   MOV 00H,C
		   MOV P2.7,C
KEY1_2:	   CJNE A,#00001101B,KEY1_3
		   MOV 4CH,#00H
		   MOV C,01H
		   CPL C
		   MOV 01H,C
		   MOV P2.6,C
KEY1_3:    CJNE A,#00001011B,KEY1_4
		   MOV 54H,#00H
		   MOV C,02H
		   CPL C
		   MOV 02H,C
		   MOV P2.5,C
KEY1_4:    CJNE A,#00000111B,KEY1_CHULI_EXIT
		   MOV 5CH,#00H
		   MOV C,03H
		   CPL C
		   MOV 03H,C
		   MOV P2.4,C
KEY1_CHULI_EXIT: RET

;********************************************
DISP:
     MOV A,#10000000B
	 LCALL WRITEIR
     MOV A,37H
	 ADD A,#48D
	 LCALL WRITEDDR		;显示序号

	 MOV A,#10000010B  
     LCALL WriteIR
	 MOV DPTR,#DATA1
	 LCALL LCD_DISP
	 MOV A,30H
	 ADD A,#48D
	 LCALL WRITEDDR	   ;显示“mode:0/1"

	 MOV A,#10001001B  
     LCALL WriteIR
	 MOV DPTR,#DATA2
	 LCALL LCD_DISP
	 MOV A,31H
	 ADD A,#48D
	 LCALL WRITEDDR	   ;显示“beep:0/1"

	 MOV A,#11000010B
	 LCALL WRITEIR
	 MOV A,32H
	 MOV B,#10D
	 DIV AB
	 ADD A,#48D
	 LCALL WRITEDDR
	 MOV A,B
	 ADD A,#48D
	 LCALL WRITEDDR

	 MOV A,36H
	 LCALL WRITEDDR

	 MOV A,33H
	 MOV B,#10D
	 DIV AB

⌨️ 快捷键说明

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