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

📄 shijian.asm

📁 该程序是时间显示程序,一般可以使用LCD显示.
💻 ASM
字号:
    
     SEC     EQU      50H
     MIN     EQU      51H
     HOUR    EQU      52H
     COM     EQU      20H
     DAT     EQU      21H
   LCD_PORT  EQU      P1
     RS      EQU      P3.0
     RW      EQU      P3.1
     E       EQU      P3.2
       ORG  0000H
       LJMP MAIN
       ORG 000BH
       LJMP CLOCK
       ORG 0100H
     
MAIN:  
       MOV SP,#60H
       MOV P1,#0FFH
       MOV P2,#0FFH
       MOV SEC,#00H
       MOV MIN,#58H
       MOV HOUR,#21H
       MOV 53H,#00H
       MOV TMOD,#01H
       MOV TH0,#3CH
       MOV TL0,#0B0H
       LCALL INT  ;初始化液晶
       SETB ET0
       SETB EA
START: SETB TR0
       LCALL KEY
       LCALL DISPLAY
       LJMP START
INT:   MOV COM,#3CH
       LCALL LCD_W_CMD
       MOV COM,#0CH
       LCALL LCD_W_CMD
       MOV COM,#01H
       LCALL LCD_W_CMD
       MOV COM,#06H
       LCALL LCD_W_CMD
       MOV COM,#80H
       LCALL LCD_W_CMD
	 RET
LCD_W_CMD:PUSH ACC
LCD_W_CMD_A:LCALL LCD_R_STAT
           JNB  ACC.7,LCD_W_CMD_B
	   LCALL PUB_DELAY_100US
	   SJMP   LCD_W_CMD_A
LCD_W_CMD_B:CLR  RW
            LCALL  PP
	    CLR   RS
	    LCALL PP
	    SETB  E
	    LCALL PP
	    MOV   A,COM
	    MOV   LCD_PORT,A
	    LCALL PP
	    CLR   E
	    LCALL PP
	    SETB  RW
	    POP   ACC
	    RET
LCD_W_DAT:  PUSH  ACC
LCD_W_DAT_A:LCALL LCD_R_STAT
            JNB   ACC.7,LCD_W_DAT_B
	    LCALL PUB_DELAY_100US
	    SJMP  LCD_W_DAT_A
LCD_W_DAT_B:CLR   RW
            LCALL PP
	    SETB  RS
	    LCALL PP
	    SETB  E
	    LCALL PP
	    MOV   A,DAT
	    MOV   LCD_PORT,A
	    LCALL  PP
	    CLR   E
	    LCALL PP
            SETB  RW
	    POP   ACC
	    RET
LCD_R_STAT:SETB RW
           LCALL PP
	   CLR   RS
	   LCALL PP
	   SETB  E
	   LCALL PP
	   MOV   A,LCD_PORT
	   LCALL PP
	   CLR   RW
	   RET
      KEY: PUSH ACC
           JB P2.0,KEY1
           LCALL DELAY
           MOV SEC,#00H
           LJMP OUT
      KEY1:JB P2.1,KEY2
           LCALL DELAY
           MOV A,MIN
           ADD A,#01H
           DA A
           MOV MIN,A
           CJNE A,#60H,OUT
           MOV MIN,#00H
           LJMP OUT
      KEY2:JB P2.2,OUT
           LCALL DELAY
           MOV A,HOUR
           ADD A,#01H
           DA A
           MOV HOUR,A
           CJNE A,#24H,OUT
           MOV HOUR,#00H
           LJMP OUT
     OUT: 
           POP ACC
           RET
PUB_DELAY_100US:PUSH  ACC
                CLR   A
   PD5_0:    INC   A
             CJNE   A,#23,PD5_0
	     POP    ACC
	     RET
    PP:      NOP
             NOP
	     NOP
	     RET

DISPLAY:
         MOV       R1,#12            ;显示shenzhen
         MOV       COM,#80H          ;液晶显示第一行
         LCALL     LCD_W_CMD
         MOV       DPTR,#TAB1
         MOV       R3,#00H
    LCD1:MOV       A,R3
         MOVC      A,@A+DPTR
         MOV      DAT,A
         LCALL    LCD_W_DAT
        
         INC      R3 
         DJNZ     R1,LCD1           ;显示shenzhen结束
	 MOV       COM,#0C4H        ;显示时钟,液晶显示第二行
	 LCALL     LCD_W_CMD
	 MOV       R0,#HOUR
	 MOV       R6,#02H
   DIS1: MOV       A,@R0
         SWAP      A
	 ANL       A,#0FH
	 LCALL     LCD
	 MOV       A,@R0
	 ANL       A,#0FH
	 LCALL     LCD
	 MOV       DAT,#3AH
	 LCALL     LCD_W_DAT
	 DEC       R0
	 DJNZ      R6,DIS1
	 MOV       R0,#SEC
	 MOV       A,@R0
	 SWAP      A
	 ANL       A,#0FH
	 LCALL     LCD
	 MOV       A,@R0
	 ANL       A,#0FH
	 LCALL     LCD
	 RET
   LCD:
         MOV       DPTR,#TAB
	 MOVC      A,@A+DPTR
	 MOV       DAT,A
	 LCALL     LCD_W_DAT
	 LCALL     DELAY
	 RET
   TAB:  DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
   TAB1: DB "    SHENZHEN    "
   CLOCK:CLR EA
         PUSH PSW
         PUSH ACC
         SETB RS1
         INC 53H
         MOV A,53H
         CJNE A,#20,BACK1
         MOV 53H,#00H
    BACK0:MOV A,SEC
         ADD A,#01H
         DA A
         MOV SEC,A
         CJNE A,#60H,BACK1
         MOV SEC,#00H
         MOV A,MIN
         ADD A,#01H
         DA A
         MOV MIN ,A
         CJNE A,#60H,BACK1
         MOV MIN,#00H
         MOV A,HOUR
         ADD A,#01H
         DA A
         MOV HOUR,A
         CJNE A,#24H,BACK1
         MOV HOUR,#00H
     BACK1:POP ACC
         POP PSW
         CLR RS1
         SETB EA
         RETI
    DELAY: SETB RS0
           MOV   R6,#00H
           MOV   R7,#00H
  DELAY1:  NOP
           DJNZ R7,DELAY1
	   DJNZ R6,DELAY1
	   CLR RS0
	   RET
  
         END
         

⌨️ 快捷键说明

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