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

📄 lcdtimer.asm

📁 8位1602的程序设计.有图和源程序.并且调试成功
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	    AJMP EXIT3
     EXIT2: CLR C
            MOV 05H,C                ;否则报警标志位为0
     EXIT3: RETI
 ;*************************
   INSERT1: JB P0.0,DINGSHI          ;外部中断1服务程序,用于选择调节时间还是调节定时时间
            CLR C                    ;p0.0为0时调节时间,p0.1为0时调节定时时间,两者都不为0无效
	    MOV 03H,C                ;调节时间时置调节标志位为0
	    MOV P1,#01H              ;输出调节时间提示信息
	    LCALL ENABLE
	    LCALL DELAY
	    MOV P1,#80H
	    LCALL ENABLE
	    LCALL DELAY
	    MOV DPTR,#STRING1
	    LCALL DISPLAY2           ;调用显示字符串子程序
	    JB 00H,NEXT2             ;把当前时间值转换到24#下显示在提示中
	    JNB 01H,NEXT2
	    MOV A,#12
	    ADD A,R2
	    MOV R2,A
	    CJNE R2,#24,NEXT2
	    MOV R2,#0
     NEXT2: MOV P1,#0C6H
            LCALL ENABLE
	    LCALL DELAY
	    MOV A,R2
	    MOV B,#10
	    DIV AB
	    JZ NEXT3
	    MOV 55H,R2
	    LCALL DISPLAY
	    AJMP NEXT4
     NEXT3: LCALL DISPLAY1
     NEXT4: MOV P1,#3AH
            LCALL EABLE1
	    LCALL DELAY
	    MOV 55H,R3
	    LCALL DISPLAY
	    MOV P1,#0FH              ;将光标格式改为闪烁格式
	    LCALL ENABLE
	    LCALL DELAY
	    JNB P0.0,$               ;等待进行时间调节
	    LCALL RESET              ;调用恢复时间显示子程序
	    AJMP QUIT
   DINGSHI: JB P0.1,QUIT             ;调节定时时间
            SETB C
	    MOV 03H,C                ;置调节标志位为1
	    MOV P1,#01H              ;输出调节定时时间提示信息
	    LCALL ENABLE
	    LCALL DELAY
	    MOV P1,#80H
	    LCALL ENABLE
	    LCALL DELAY
	    MOV DPTR,#STRING2
	    LCALL DISPLAY2
	    MOV P1,#0C6H             ;把当前的定时时间显示在提示信息中
	    LCALL ENABLE
	    LCALL DELAY
	    MOV A,R5
	    MOV B,#10
	    DIV AB
	    JZ NEXT5
	    MOV 55H,R5
	    LCALL DISPLAY
	    LCALL DELAY
	    AJMP NEXT6
     NEXT5: LCALL DISPLAY1
     NEXT6: MOV P1,#3AH
            LCALL EABLE1
	    LCALL DELAY
	    MOV 55H,R6
	    LCALL DISPLAY
	    MOV P1,#0FH
            LCALL ENABLE
	    LCALL DELAY
	    JNB P0.1,$               ;等待进行定时时间调节
	    LCALL RESET              ;调用恢复时间显示子程序
      QUIT: MOV P1,#0CH              ;恢复调节前的光标格式
            LCALL ENABLE
	    LCALL DELAY
	    RETI
 ;*************************
     RESET: MOV P1,#01H              ;恢复时间显示子程序,复原到调节前的计数进制和相应的标志位
            LCALL ENABLE
	    LCALL DELAY
	    JB 00H,LPP11             ;调节前为12#,则进行24#到12#的转换
	    CLR C
	    MOV A,#11
	    SUBB A,R2
	    JNC LPP2   
	    CLR C
	    MOV A,#12
	    SUBB A,R2
	    JNC LPP3   
	    MOV A,R2   
	    CLR C
	    SUBB A,#12
	    MOV R2,A
	    SETB C
	    MOV 01H,C
	    MOV 02H,C
	    AJMP LPP4
     LPP11: AJMP LPP1
      LPP3: SETB C
            MOV 02H,C
	    CLR C
	    MOV 01H,C
            AJMP LPP4
      LPP2: CLR C
            MOV 02H,C
	    MOV 01H,C
      LPP4: MOV P1,#0C4H
            LCALL ENABLE
	    LCALL DELAY
	    MOV A,R2
	    MOV B,#10
	    DIV AB
	    JZ LPP5
	    MOV 55H,R2
	    LCALL DISPLAY
	    AJMP LPP6
      LPP5: LCALL DISPLAY1
      LPP6: MOV P1,#3AH
            LCALL EABLE1
	    LCALL DELAY
	    MOV 55H,R3
	    LCALL DISPLAY
	    MOV P1,#3AH
	    LCALL EABLE1
	    LCALL DELAY
	    MOV 55H,R4
	    LCALL DISPLAY
	    MOV P1,#0CEH
	    LCALL ENABLE
	    LCALL DELAY
	    JB 02H,LPP7
	    MOV P1,#41H
	    LCALL EABLE1
	    LCALL DELAY
	    MOV P1,#4DH
	    LCALL EABLE1
	    LCALL DELAY
	    AJMP EXITR
      LPP7: MOV P1,#50H
            LCALL EABLE1
	    LCALL DELAY
	    MOV P1,#4DH
	    LCALL EABLE1
	    LCALL DELAY
	    AJMP EXITR
      LPP1: MOV P1,#0C4H             ;调节前为24#则直接将调节后的时间进行输出显示
            LCALL ENABLE
	    LCALL DELAY
	    MOV A,R2
	    MOV B,#10
	    DIV AB
	    JZ LPP8
	    MOV 55H,R2
	    LCALL DISPLAY
	    AJMP LPP9
      LPP8: LCALL DISPLAY1
      LPP9: MOV P1,#3AH
            LCALL EABLE1
	    LCALL DELAY
	    MOV 55H,R3
	    LCALL DISPLAY
	    MOV P1,#3AH
	    LCALL EABLE1
	    LCALL DELAY
	    MOV 55H,R4
	    LCALL DISPLAY
     EXITR: RET
 ;*************************
   INSERT0: JB P0.2,MINUTE           ;外部中断0服务程序,用于调节时间
            MOV P1,#0C6H             ;p0.2为0调节小时值,p0.3为0调节分钟值,否则无效
	    LCALL ENABLE
	    LCALL DELAY
	    JB 03H,HOURD             ;调节小时值时根据调节标志位选择调节时间小时值还是定时时间小时值
	    INC R2
	    CJNE R2,#24,GOON1
            MOV R2,#0
     GOON1: MOV A,R2
            MOV B,#10
	    DIV AB
	    JZ GOON2
	    MOV 55H,R2
	    LCALL DISPLAY
	    AJMP EXITINT0
     GOON2: LCALL DISPLAY1
            AJMP EXITINT0
     HOURD: INC R5
            CJNE R5,#24,GOON3
	    MOV R5,#0
     GOON3: MOV A,R5
            MOV B,#10
            DIV AB
	    JZ GOON4
	    MOV 55H,R5
	    LCALL DISPLAY
	    AJMP EXITINT0
     GOON4: LCALL DISPLAY1
            AJMP EXITINT0
    MINUTE: JB P0.3,EXITINT0         ;调节分钟值时根据调节标志位选择调节时间分钟值还是调节定时时间分钟值
            MOV P1,#0C9H
	    LCALL ENABLE
	    LCALL DELAY
	    JB 03H,MINUTED
	    INC R3
	    CJNE R3,#60,GOON5
	    MOV R3,#0
     GOON5: MOV 55H,R3
            LCALL DISPLAY
	    AJMP EXITINT0
   MINUTED: INC R6
            CJNE R6,#60,GOON6
	    MOV R6,#0
     GOON6: MOV 55H,R6
            LCALL DISPLAY
  EXITINT0: RETI
 ;*************************

    ENABLE: CLR RS                   ;控制命令写入生效子程序
            CLR RW
	    CLR E
	    NOP
	    NOP
	    SETB E
	    RET
 ;************************
   EABLE1:  SETB RS                  ;数据写入生效子程序
            CLR RW
	    CLR E
	    NOP
	    NOP
	    SETB E
	    RET
 ;************************
     DELAY: MOV 58H,#10              ;保证可靠写入延时子程序
      DEL1: MOV 59H,#255
            DJNZ 59H,$
	    DJNZ 58H,DEL1
	    RET
 ;*************************
    DELAY1: MOV 58H,#50              ;产生蜂鸣器驱动脉冲延时子程序
      DELA: MOV 59H,#255
     DELA1: DJNZ 59H,DELA1
	    DJNZ 58H,DELA
	    RET
 ;*************************
   DISPLAY: MOV A,55H               ;显示2位十进制数子程序
            MOV B,#10               ;将2位十进制数转换为非压缩BCD码再转换为LCD显示码
	    DIV AB
	    ADD A,#30H
	    MOV 60H,A
	    MOV A,B
	    ADD A,#30H
	    MOV 61H,A
	    MOV P1,60H
	    LCALL EABLE1
	    LCALL DELAY
	    MOV P1,61H
	    LCALL EABLE1
	    LCALL DELAY
	    RET
;*****************************
  DISPLAY1: MOV P1,#20H              ;第1位为空,第2位为数值的显示子程序
            LCALL EABLE1
	    LCALL DELAY
	    MOV A,B
	    ADD A,#30H
	    MOV P1,A
	    LCALL EABLE1
	    LCALL DELAY
	    RET
 ;****************************
  DISPLAY2: MOV A,R0                 ;显示字符串子程序
            PUSH ACC
	    MOV R0,#0
    AGAIN1: MOV A,R0
            MOVC A,@A+DPTR
	    JZ NET
	    MOV P1,A
	    LCALL EABLE1
	    LCALL DELAY
	    INC R0
	    AJMP AGAIN1
       NET: POP ACC
            MOV R0,A
	    RET
 TABLE: DB 20H,30H,3AH,30H,30H,3AH,30H,30H
 STRING1: DB 53H,65H,74H,20H,74H,69H,6DH,65H,28H,32H,34H,48H,29H,00H
 STRING2: DB 53H,65H,74H,20H,44H,69H,6EH,67H,73H,68H,69H,28H,32H,34H,48H,29H,00H
    END

⌨️ 快捷键说明

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