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

📄 twp.asm

📁 64字图文屏源程序精品
💻 ASM
📖 第 1 页 / 共 2 页
字号:
COUNT1  EQU     22H
COUNT2  EQU     23H
COUNT3  EQU     24H
YJ1     EQU     25H
YJ2     EQU     26H
DAT     EQU     27H
RLD1    EQU     28H
muteM   EQU     10h                 ;静音键            闹铃开/关
timerT  EQU     0Ch                 ;菜单键            进入/退出设置状态
leftL   EQU     46h                 ;左移键
rightR  EQU     47h                 ;右移键
upU     EQU     19h                 ;增加键
downD   EQU     1dh                 ;减少键
d_off   EQU     16H                 ;显示键            LED数码管显示/关闭
recall  EQU     44H                 ;日历键            DS1302初始化操作
;HT1380
BitCnt	EQU	48H	;数据位计数器
ByteCnt	EQU	49H	;数据字节计数器
Command	EQU	4AH	;命令字节地址
RcvDat	EQU	4BH	;接收数据缓冲区
XmtDat	EQU	53H	;发送数据缓冲区
k_ON    EQU     P1.4
ALE     EQU     P1.1
RST 	BIT     P1.2
DAT2 	BIT 	P1.5                ;阳极数据
DAT1    BIT     P1.6                ;阴极数据
STBOE	BIT	P1.7
CLK1	BIT	P3.3                ;阴极数据CK
CLK2	BIT	P3.5                 ;阳极数据CK
WR1     EQU     P3.6
RD1     EQU     P3.7
A139    EQU     P2.7
B139    EQU     P2.6
	ORG	0000H
	AJMP	START
        ORG     0003H
        LJMP 	INT 	        ;转中断服务子程序
	ORG	000BH		;定时器T0的入口
	RETI
	ORG	0013H
	RETI
	ORG	001BH
	RETI
	ORG	0023H
	RETI
	ORG	 0030H
START:	MOV	 TMOD,#20H	;T1方式2,T0方式1
        MOV      PSW,#00H
        MOV      SP,#60H
        SETB 	 EA 	       ;开CPU中断
	SETB 	 IT0 	       ;设定INT0触发方式
	SETB 	 EX0 	       ;INT0请求中断
        ACALL	 Write_Enable
	ACALL	 HT1380
        MOV      COUNT1,#00H
        MOV      COUNT2,#80H
        MOV      COUNT3,#00H
        MOV      RLD1,#00H
        LCALL    ZH128
MAIN:   LCALL    DISP
        LCALL    DELAY
        INC      RLD1
        MOV      A,RLD1
        CJNE     A,#05,MAIN1
        MOV      RLD1,#00H
        MOV      A,COUNT3
        CJNE     A,#47H,RRS1
        LCALL    RR00
RRS1:   MOV      A,COUNT3
        CJNE     A,#46H,MAIN1
        LCALL    RL00
MAIN1:  SJMP     MAIN

;存到62128子程序
ZH128:  MOV     DPTR,#TAB
        MOV     R0,#100
        MOV     R1,#06
ZH1280: MOV     A,#00H
        MOVC    A,@A+DPTR
        MOV     DAT,A
        LCALL   ST128WR
        INC     DPTR
        DJNZ    R0,ZH1280
        DJNZ    R1,ZH1280
        RET
HT1380: PUSH	ACC
;秒
	MOV	A,4BH
	ANL	4BH,#0FH
	MOV	33H,4BH
	SWAP	A
	ANL	A,#0FH
	MOV	32H,A
;分
	MOV	A,4CH
	ANL	4CH,#0FH
	MOV	41H,4CH
	SWAP	A
	ANL	A,#0FH
	MOV	40H,A
;时
	MOV	A,4DH
	ANL	4DH,#0FH
	MOV	25H,4DH
	SWAP	A
	ANL	A,#0FH
	CJNE	A,#00H,SI11
	MOV	A,#0AH
SI11:	MOV	24H,A
;日
	MOV	A,4EH
	ANL	4EH,#0FH
	;MOV	32H,4EH
	SWAP	A
	ANL	A,#0FH
	CJNE	A,#00H,RI11
	MOV	A,#0AH
RI11:	MOV	35H,A
;月
	MOV	A,4FH
	ANL	4FH,#0FH
	MOV	38H,4FH
	SWAP	A
	ANL	A,#0FH
	CJNE	A,#00H,YE11
	MOV	A,#0AH
YE11:	MOV	3BH,A
;年
NIAN:	MOV	A,51H
	ANL	51H,#0FH
	MOV	3EH,51H
	SWAP	A
	ANL	A,#0FH
	MOV	41H,A
	POP	ACC
	RET 


;628128读子程序
ST128RD:MOV     P0,DPL       ;低六位地址信号
        SETB    ALE
        NOP
        CLR     ALE
        MOV     P2,DPH
        MOV     A,DPH
        RR      A
        RR      A
        ANL     A,#3FH       ;屏蔽最高两位
        SETB    A139
        MOV     P0,A         ;高2位地址
        SETB    B139
        CLR     A139
        SETB    WR1
        CLR     RD1          ;读信号
        SETB    CLK1
        SETB    CLK1
        CLR     P3.0         ;开628128
        MOV     DAT,P0       ;数据信号
        SETB    DAT1
        SETB    P3.0
        RET
;628128写子程序
ST128WR:PUSH    ACC
        MOV     P0,DPL       ;低六位地址信号
        SETB    ALE
        NOP
        CLR     ALE
        MOV     P2,DPH
        MOV     A,DPH
        RR      A
        RR      A
        ANL     A,#3FH       ;屏蔽最高两位
        SETB    A139
        MOV     P0,A         ;高2位地址
        SETB    B139
        CLR     A139
        CLR     WR1
        SETB    RD1          ;读信号
        CLR     P3.0           ;开628128
        MOV     P0,DAT         ;数据信号
        SETB    DAT1
        SETB    P3.0
        POP     ACC
        RET


DISP:   MOV     PSW,#00H
        MOV     R2,#08H         ;半字
        MOV     R3,#02H         ;一字
        MOV     R4,#16          ;字数
        MOV     R5,#16          ;一屏
        MOV     COUNT1,#00H
        MOV     COUNT2,#00H
DISP1:  LCALL   ZJZH1
LOOP:   LCALL   ST128RD
        MOV     A,DAT
LOOP1:  RLC     A
        JC      LOOP2
        CLR     DAT1
        AJMP    LOOP3
LOOP2:  SETB    DAT1
LOOP3:  CLR     CLK1
        NOP
        SETB    CLK1
        DJNZ    R2,LOOP1
        MOV     R2,#08H
        INC     DPTR
        DJNZ    R3,LOOP
        MOV     R3,#02H
        LCALL   ZJZH
        DJNZ    R4,LOOP
        MOV     R4,#16 ;字数
        INC     COUNT1
        SETB    STBOE
        ACALL   YJ00
        CLR     STBOE
        SETB    STBOE
        ACALL   DELAY
        CLR     STBOE
        DJNZ    R5,DISP1
        RET

YJ00:   PUSH     DPH
        PUSH     DPL
        MOV      R0,#08H
        MOV      R1,#02H
YJ01:   MOV      DPTR,#TAB1
        MOV     A,COUNT2
        MOVC    A,@A+DPTR
YJ02:   RLC     A
        JC      YJ03
        CLR     DAT2
        AJMP    YJ04
YJ03:   SETB    DAT2
YJ04:   CLR     CLK2
        NOP
        SETB    CLK2
        DJNZ    R0,YJ02
        MOV     R0,#08H
        INC     COUNT2
        DJNZ    R1,YJ01
        SETB    STBOE
        POP     DPL
        POP     DPH
        RET

DIS_OFF:SJMP    $

;遥控器
INT:  CLR EA
      PUSH   ACC
      PUSH   PSW
      PUSH   DPH
      PUSH   DPL
      CLR    RS0
      SETB   RS1
      MOV    R6,#10D   ;
SB:   ACALL  YS1
      JB     P3.2,EXIT
      DJNZ   R6, SB
      JNB    P3.2, $   ;
      ACALL  YS2
      JB     P3.2,EXIT
      MOV    R1,#1AH   ;
      MOV    R2,#4D
PP:   MOV    R3,#8D
JJJJ: JNB    P3.2,$
      ACALL  YS1
      MOV    C,P3.2
      JNC    UUU
      JB     P3.2,$
UUU:  MOV    A,@R1
      RRC    A
      MOV    @R1,A
      DJNZ   R3,JJJJ
      INC    R1
      DJNZ   R2,PP
;-------------------------------------
      MOV  A,1AH      ;
      XRL  A,#40h     ;判断1AH的值是否等于遥控器低8位地址(40h)
      JNZ  EXIT       ;
      MOV  A,1bH
      XRL  A,#0bfh    ;再判断高8位地址是否正确(0bfh)
      JNZ  EXIT
      MOV  A,1CH
      CPL  A
      XRL  A,1DH      ;将1CH的值取反后和1DH比较 不同则无效丢弃(核对数据是否准确)
      JNZ  EXIT
      LCALL DO        ;相应按键的处理
EXIT: SETB EA
      POP  DPL
      POP  DPH
      POP  PSW
      POP  ACC
      RETI

DO:     MOV     A,1CH
        MOV     COUNT3,A
        CJNE    A,#TIMERT,REDO  ;代码不是设置/退出键
        RET
REDO:   CJNE    A,#MUTEM,REDO1  ;不是设置键的处理REDO1,2,3,4...
        LJMP    MUTE            ;MUTE?
REDO1:  CJNE    A,#D_OFF,DO_SET2
        LJMP    DIS_OFF         ;关闭显示
DO_SET2:JB      0CH,SET2        ;时间设置的处理
        RET

SET2:   CJNE    A,#UPU,SET2A
        LJMP    INC1            ;+加(^)
SET2A:  CJNE    A,#DOWND,SET2B
        LJMP    DEC2            ;- 减
SET2B:  CJNE    A,#RIGHTR,SET2C
        LJMP    RIGHT           ;RIGHT右移(>)
SET2C:  CJNE    A,#LEFTL,SET2D
        LJMP    LEFT            ;LEFT左移(<)
SET2D:  CJNE    A,#RECALL,SET2EXT ;DS1302初始化
        LJMP    SET1302
SET2EXT:RET
;--------------------delay-----------------------
YS1:  MOV    70H,#16D   ;延时1
D1:   MOV    71H,#46D
      DJNZ   71H,$
      DJNZ   70H,D1
      RET
YS2:  MOV    70H,#50   ;延时2
D2:   MOV    71H,#80
      DJNZ   71H,$
      DJNZ   70H,D2
      RET
;------------------------------MUTE--------------
MUTE:   setb    k_ON
        ;CPL     06H              ;静音
        ;CLR     08H
        RET
INC1:
DEC2:
RIGHT:
LEFT:
SET1302: RET

ZJZH:   CLR     C
        MOV     A,DPL   ;换字转换
        ADD     A,#30
        MOV     DPL,A
        MOV     A,#00H
        ADDC    A,DPH
        MOV     DPH,A
        RET
ZJZH1:  CLR     C
        MOV     DPTR,#TAB  ;换行转换
        MOV     A,COUNT1
        MOV     B,#2
        MUL     AB
        ADD     A,DPL
        MOV     DPL,A
        MOV     A,#00H
        ADDC    A,DPH

⌨️ 快捷键说明

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