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

📄 ttt.asm

📁 键盘时钟程序 已经测试通过
💻 ASM
字号:
 OE EQU P3.0
DIR EQU P3.7
E EQU P3.5
RS EQU P2.1
RW EQU P2.0
ORG 0000H
AJMP MAIN
MAIN:
ACALL KEY1
CJNE A,#08H,CLOCK
ACALL ROT8
;时钟程序************************************************
CLOCK:
         AJMP   MAIN1
         ORG     001BH
         AJMP    SERVE
MAIN1:    MOV     TMOD,#10H
         MOV     20H,#0AH       ;中断次数
         CLR     A
         MOV     30H,A          ;时单元置零
         MOV     31H,A          ;分单元置零
         MOV     32H,A          ;秒单元置零
         MOV     B,#0AH
         SETB    ET1
         SETB    EA
         MOV     TH1,#3CH
         MOV     TL1,#0B0H
         SETB    TR1
         SJMP    $

SERVE:   PUSH   PSW
         PUSH   ACC
         MOV    TH1,#3CH
         MOV    TL1,#0B0H
         DJNZ   20H,RETUNT
         MOV    20H,#0AH

         MOV    A,#01H
         ADD    A,32H            ;秒位加1
         MOV    32H,A
         ACALL   DISPLAY
         MOV    A,32H
         CJNE   A,#60,RETUNT
         MOV    32H,#00H

         MOV    A,#01H
         ADD    A,31H
         MOV    31H,A
         ACALL   DISPLAY
         MOV    A,31H
         CJNE   A,#60,RETUNT
         MOV    31H,#00H

         MOV    A,#01H
         ADD    A,30H
         MOV    30H,A
         ACALL   DISPLAY
         MOV    A,30H
         CJNE   A,#24,RETUNT
         MOV    30H,#00H

RETUNT:  POP    ACC
         POP    PSW
         RETI
;************************************************************************************************************
DISPLAY:    ACALL    SET0
            SETB E

            MOV  A,#01H
            ACALL WRCOM
             CLR E
             SETB E
            MOV  A,#00H
            ACALL WR_DATA
              CLR E


            ACALL    DELAY            ;延时
            SETB E
            MOV      A,#30H           ;功能设置,8位接口,1行显示,5*7点阵
            ACALL WRCOM
            CLR E
            SETB E
            MOV A,#00H
             ACALL WR_DATA
             CLR E
             SETB E


            ACALL    DELAY

            MOV      A,#0EH           ;开显示,有光标,有闪烁
             ACALL WRCOM
             CLR E
              SETB E
            MOV      A,#00H
            ACALL WR_DATA
           CLR E


            ACALL    DELAY
              ;PA口地址
              SETB E
            MOV      A,#06H          ;显示移位,AC为增量方式
            ACALL WRCOM
            CLR E
            SETB E
            MOV      A,#00H
            ACALL WR_DATA
            CLR E



;*******************************************************************************************************显示时位

            ACALL    DELAY
            MOV      B,#0AH
            MOV      A,30H
            DIV      AB
            CLR      PSW.6
            DA       A
            ADD      A,#30H
            SETB E
            ACALL WR_DATA
             CLR E
          SETB E
            MOV  A,#00H
            ACALL WR_DATA
            CLR E

            ACALL    DELAY

            MOV      A,B
            DA       A
            ADD      A,#30H
            SETB E
          ACALL WR_DATA
          CLR E
           SETB E       ;FEFF SHUJU
            MOV      A,#00H
           ACALL WR_DATA
           CLR E

;****************************************************************************************显示短线
            ACALL   DELAY
            SETB E
            MOV      A,#2DH
            ACALL WR_DATA
           CLR E

            MOV      A,#00H
           ACALL WR_DATA
           CLR E
;*********************************************************************显示分位
            ACALL    DELAY
            MOV      B,#0AH
            MOV      A,31H
            DIV      AB
            DA       A
            ADD      A,#30H
            SETB E
           ACALL WR_DATA
           CLR E
           SETB E

            MOV      A,#00H
            ACALL WR_DATA
            CLR E


            ACALL    DELAY

            MOV      A,B
            DA       A
            ADD      A,#30H
            SETB E
            ACALL WR_DATA
            CLR E
            SETB E                    ;7EFF SHUJU
            MOV      A,#00H
            ACALL WR_DATA
            CLR E


;********************************************************************************************显示短线
            ACALL     DELAY
            SETB E
            MOV      A,#2DH
            ACALL WR_DATA
            CLR E
              ;选通lcd
            MOV      A,#00H
            SETB E
            ACALL WR_DATA
            CLR E
;**********************************************************************显示秒位
            ACALL    DELAY
            MOV      B,#0AH
            MOV      A,32H            ;8的ASCII码
            DIV      AB
            DA     A
            ADD      A,#30H
            SETB E
            ACALL WR_DATA

            CLR E
            SETB E     ;选通lcd
            MOV      A,#00H
            ACALL WR_DATA
            CLR E

            ACALL    DELAY

            MOV      A,B
            DA       A
            ADD      A,#30H
            SETB E
            ACALL WR_DATA
            CLR E
            SETB E      ; 选通lcd的数据寄存器
            MOV A,#00H
            ACALL WR_DATA
            CLR E
            RET

    
;*************************************************************************************************

;设定下8255的工作方式

SET0:      MOV      A,#80H
           MOV      DPTR,#0FF7FH
           MOVX     @DPTR,A
           RET

;延时
  DELAY:     MOV       R1,#01H
TT:     MOV       R2,#0F9H
SS:     NOP
           NOP
           DJNZ      R2,SS
           DJNZ      R1,TT
          RET
;********************************************
ROT8:     
MAIN2:
;SS:
;CLR OE
;SETB DIR
;MOV P0,#55H
;MOV P0,#0
;JMP SS
MOV     A,#80H
MOV     DPTR,#0FF7FH
MOVX    @DPTR,A
CLR OE
SETB DIR
MOV A,#38H
SETB E
CALL WRCOM
CLR E
SETB E

 MOV A,#38H

CALL WRCOM
CLR E

SETB E
MOV A,#38H

CALL WRCOM
CLR E

SETB E
MOV A,#38H

CALL WRCOM
CLR E

SETB E
MOV A,#38H

CALL WRCOM
CLR E


MOV A,#38H
SETB E
CALL WRCOM
CLR E


MOV A,#38H
SETB E
CALL WRCOM
CLR E
;初始化---------------------------------------------
MOV A,#30H;8位2行5x7点阵
CALL WRCOM
CLR E
SETB E
MOV A,#0CH;显示器开、光标开、闪烁开
CALL WRCOM
CLR E
SETB E
MOV A,#1CH
CALL WRCOM
CLR E
SETB E
MOV A,#06H;文字不动,光标自动右移
CALL WRCOM
CLR E
SETB E
MOV A,#01H
CALL WRCOM
CLR E
;写命令--------------------------------------------------------
;ACALL CLRER
;SETB E
;MOV	A,#'8'
;CALL	WR_DATA
;CLR E
;CALL	DL1S


START:
 MOV R4,#00H
FIRST:
 ACALL CLRER
 ACALL ADDRESS
 ACALL WRITE_8
 ACALL DLNS
 CJNE R4,#08H,FIRST
MOV R4,#40H
SECOND:

ACALL CLRER
 ACALL ADDRESS
 ACALL WRITE_8
 ACALL DLNS
 CJNE R4,#48H,SECOND
 ACALL START
DLNS:
        MOV     R5,#33H
FLAG7:	MOV	R7,#0AH
FLAG8:	MOV	R6,#0F9H
FLAG9:	NOP
	NOP
	DJNZ	R6,FLAG9
	DJNZ	R7,FLAG8
        DJNZ    R5,FLAG7
	RET
CLRER:
SETB E
MOV A,#01H
ACALL WRCOM
CLR E
RET
;****************************
ADDRESS:
 SETB E
MOV A,#80H
ADD A,R4
CALL WRCOM
CLR E
RET
;***************************
WRITE_8:
SETB E
MOV A,#'8'
ACALL WR_DATA
CLR E
INC R4
RET
;*******************************

WRCOM:
CLR OE
SETB DIR
CLR RS
CLR RW
MOV DPTR,#0FF7CH
MOVX @DPTR,A
ACALL DL5MS
RET
;写数据----------------------------------
WR_DATA:
CLR OE
SETB DIR
SETB RS
CLR RW
SETB E
MOV DPTR,#0FF7CH
MOVX @DPTR,A
ACALL DL5MS
RET
;YANSHI-------------------------------------
DL5MS:
 	MOV	R7,#0AH
LOOP8:	MOV	R6,#0F9H             ;F9
LOOP9:	NOP
	NOP
	DJNZ	R6,LOOP9
	DJNZ	R7,LOOP8
	RET
DL1S:
	MOV	R5,#03H
LOOP3:	MOV	R7,#0FFH
LOOP1:	MOV	R6,#0F9H
LOOP2:	NOP
	NOP
	DJNZ	R6,LOOP2
	DJNZ	R7,LOOP1
	DJNZ	R5,LOOP3
	RET
KEY1:
      ACALL KS1
      JNZ LK1
      AJMP KEY1
KS1:
      MOV DPTR,#0FF7DH
      MOV A,#00H
      MOVX @DPTR,A
      MOV DPTR,#0FF7EH
      MOVX A,@DPTR
      CPL A
      ANL A,#0FH
      RET
LK1:
      ACALL T12MS
      ACALL KS1
      JNZ LK2
      AJMP KEY1
LK2:
      MOV R2,#0FEH
      MOV R4,#00H
LK4:
      MOV DPTR,#0FF7DH
      MOV A,R2
      MOVX @DPTR,A
      INC DPTR
      INC DPTR
      MOVX A,@DPTR
      JB ACC.0,LONE
      MOV A,#00H
      AJMP LKP
LONE:
      JB ACC.1,LTWO
      MOV A,#08H
      AJMP LKP
LTWO:
      JB ACC.2,LTHI
      MOV A,#10H
      AJMP LKP
LTHI:
      JB ACC.3,NEXT
      MOV A,#18H
LKP:
      ADD A,R4
      PUSH ACC
LK3:
      ACALL KS1
      JNZ LK3
      POP ACC
      RET
NEXT:
      MOV A,R2
      INC R4
      JNB ACC.7,KND
      CPL A
      AJMP LK4
KND:
      AJMP KEY1

T12MS:
      MOV R6,#18H
TM:
      MOV R7,#0FFH
TM7:
      DJNZ R7,TM7
      DJNZ R6,TM
      RET
      END











⌨️ 快捷键说明

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