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

📄 33-0 万年历时钟程序.asm

📁 keiluvision 3的单片机汇编语言程序 非常有用!! 是关于万年历时钟的控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	MOV  	A,#0
	MOVC	A,@A+DPTR
	CALL	LCDWRITE
	INC	YPOS
	INC	DPTR
	CLR	A
	MOVC	A,@A+DPTR
	CALL	LCDWRITE
	DEC	YPOS
	INC	DPTR
	CALL	CUSORNEXT
	MOV	A,XPOS
	JNZ	PAC_LAX
	INC	YPOS
PAC_LAX:
	DJNZ	R7,PAC_PA
	RET
;=========================================================================
LCDFILL:                        ;LCD整屏显示A的内容
        MOV     R7,A
        MOV     YPOS,#0
LFL_PB: MOV     XPOS,#0
LFL_PA: MOV     A,R7
        LCALL   LCDWRITE        ;定位并写数据
        LCALL   CUSORNEXT       ;加行或者列
        MOV     A,XPOS;列
        JNZ     LFL_PA          ;XPOS<128则循环(128列)
        MOV     A,YPOS
        JNZ     LFL_PB;行         ;YPOS<8则循环(8页)
        RET

;======================================================================
DIS_TU:  MOV     YPOS,#0        ;从0行开始
LFL_PB1: MOV     XPOS,#0        ;从0列开始
LFL_PA1: MOV     A,#00h
        movc    a,@a+dptr
        LCALL    LCDWRITE        ;定位并写数据
        LCALL    CUSORNEXT       ;行或者列加一
        INC      DPTR
        MOV      A,XPOS           ;
        JNZ     LFL_PA1          ;XPOS<128则循环(128列)
        MOV     A,YPOS
        JNZ     LFL_PB1          ;YPOS<8则循环(8页)
        RET

;======================================================================
LCDWRITE:                    ;定位并写数据子程序
        CALL    LCDPOS       ;内部写数指针定位
        CALL    LCDWD        ;写数据/分左右屏
        RET
;======================================================================
CUSORNEXT:
	ANL	YPOS,#7        ;页码
	INC	XPOS           ;列码
	MOV	A,XPOS
	JNB	ACC.7,CNT_LAX  ;小于128
	MOV	XPOS,#0        ;清列码
	INC	YPOS           ;加一行
	MOV	A,YPOS
	ANL	A,#0F8H        ;大于8则结束
	JZ	CNT_LAX
	MOV	YPOS,#0
CNT_LAX:
	RET
;======================================================================
LCDPOS:                        ;内部写数指针定位子程序
        PUSH    ACC            ;保存要写的数据
        MOV     A,XPOS         ;列数据
        JB      ACC.6,LPS_LAY  ;列大于64则跳转
        MOV     A,YPOS         ;XPOS列方向小于64则对CS1操作
        ANL     A,#07H         ;页码
        ADD     A,#0B8H        ;固定码,芯片要求的
        LCALL    LCDWC1       ;设页码,在第几行?
        MOV     A,XPOS
        ANL     A,#3FH        ;小于63
        ORL     A,#40H        ;固定码,见说明书
        CALL    LCDWC1        ;设列码
        JMP     LPS_LAX
LPS_LAY:MOV     A,YPOS        ;XPOS列方向大于等于64则对CS2操作
        ANL     A,#07H
        ADD     A,#0B8H
        CALL    LCDWC2        ;设页码
        MOV     A,XPOS
        ANL     A,#3FH
        ORL     A,#40H
        CALL    LCDWC2        ;设列码
LPS_LAX:POP     ACC
        RET
;========================================================================
LCDWD:                          ;送数据子程序
        MOV     B,A
        MOV     A,XPOS
        JB      ACC.6,LWD_LAY
        MOV     A,B             ;XPOS列方向小于64则对CS1操作
        CALL    LCDWD1
        JMP     LWD_LAX
LWD_LAY:MOV     A,B             ;XPOS列方向大于等于64则对CS2操作
        CALL    LCDWD2
LWD_LAX:
        RET
;==========================================
LCDRESET:                       ;LCD控制器复位
 
        clr     LCDRST
        setb    LCDRST
        MOV     A,#3FH          ;打开LCD显示
        CALL    LCDWC1
        CALL    LCDWC2
        MOV     A,#0C0H         ;设显示起始行
        CALL    LCDWC1
        CALL    LCDWC2
        RET

LCDWC1:                         ;送片1控制字子程序
        CALL    WAITIDLE1       ;判断液晶是否忙?
        MOV     P0,A
        CLR     RSPIN           ;RS=0 RW=0 CS1=1 E=高脉冲
        CLR     RWPIN
        SETB    CS1PIN
        SETB    EPIN
        NOP
        CLR     EPIN
        CLR     CS1PIN
        RET
LCDWC2:                         ;送片2控制字子程序
        CALL    WAITIDLE2
        MOV     P0,A
        CLR     RSPIN           ;RS=0 RW=0 CS2=1 E=高脉冲
        CLR     RWPIN
        SETB    CS2PIN
        SETB    EPIN
        NOP
        CLR     EPIN
        CLR     CS2PIN
        RET
LCDWD1:                         ;片1写数据子程序
        CALL    WAITIDLE1
        MOV     P0,A
        SETB    RSPIN           ;RS=1 RW=0 CS1=1 E=高脉冲
        CLR     RWPIN
        SETB    CS1PIN
        SETB    EPIN
        NOP
        CLR     EPIN
        CLR     CS1PIN
        RET
LCDWD2:                         ;片2写数据子程序
        CALL    WAITIDLE2
        MOV     P0,A
        SETB    RSPIN           ;RS=1 RW=0 CS2=1 E=高脉冲
        CLR     RWPIN
        SETB    CS2PIN
        SETB    EPIN
        NOP
        CLR     EPIN
        CLR     CS2PIN
        RET
LCDRD1:                         ;片1读数据子程序
        CALL    WAITIDLE1
        MOV     P0,#0FFH
        SETB    RSPIN           ;RS=1 RW=1 CS1=1 E=高电平
        SETB    RWPIN
        SETB    CS1PIN
        SETB    EPIN
        NOP
        MOV     A,P0
        CLR     EPIN
        CLR     CS1PIN
        RET
LCDRD2:                         ;片2读数据子程序
        CALL    WAITIDLE2
        MOV     P0,#0FFH
        SETB    RSPIN           ;RS=1 RW=1 CS1=2 E=高电平
        SETB    RWPIN
        SETB    CS2PIN
        SETB    EPIN
        NOP
        MOV     A,P0
        CLR     EPIN
        CLR     CS2PIN
        RET
WAITIDLE1:      ;
        MOV     P0,#0FFH
        CLR     RSPIN           ;RS=0 RW=1 CS1=1 E=高电平
        SETB    RWPIN
        SETB    CS1PIN
        SETB    EPIN
WT1_PA: NOP
        JB      P0.7,WT1_PA
        CLR     EPIN
        CLR     CS1PIN
        RET
WAITIDLE2:
        CLR     RSPIN           ;RS=0 RW=1 CS2=1 E=高电平
        SETB    RWPIN
        SETB    CS2PIN
        SETB    EPIN
WT2_PA: NOP
        JB      P0.7,WT2_PA
        CLR     EPIN
        CLR     CS2PIN
        RET


;/*--  文字:  时  --*/
Shi:
DB  000H,000H,0FCH,007H,044H,004H,044H,004H,044H,004H,0FCH,007H,010H,000H,090H,000H
DB  010H,003H,010H,040H,010H,080H,0FFH,07FH,010H,000H,010H,000H,010H,000H,000H,000H
;/*--  文字:  钟  --*/
Zhong:
DB  040H,001H,030H,001H,02CH,001H,0EBH,0FFH,028H,041H,028H,021H,000H,000H,0F8H,001H
DB  008H,001H,008H,001H,0FFH,0FFH,008H,001H,008H,001H,0F8H,001H,000H,000H,000H,000H
;/*--  文字:  星  --*/
Xing:
DB  000H,000H,000H,048H,000H,046H,0BEH,041H,02AH,049H,02AH,049H,02AH,049H,0EAH,07FH
DB  02AH,049H,02AH,049H,02AH,049H,02AH,049H,03EH,049H,000H,041H,000H,004H,000H,000H
;/*--  文字:  期  --*/
Qi:
DB  000H,042H,004H,022H,0FFH,01BH,054H,002H,054H,002H,054H,00AH,0FFH,033H,004H,062H
DB  000H,018H,0FEH,007H,022H,002H,022H,022H,022H,042H,0FEH,03FH,000H,000H,000H,000H
;/*--  文字:  天  --*/
Week0:
DB  000H,000H,040H,080H,042H,040H,042H,020H,042H,010H,042H,008H,042H,006H,0feH,001H
DB  042H,002H,042H,004H,042H,008H,042H,010H,042H,030H,042H,060H,040H,020H,000H,000H
;/*--  文字:  一  --*/
Week1:
DB  000H,000H,080H,000H,080H,000H,080H,000H,080H,000H,080H,000H,080H,000H,080H,000H
DB  080H,000H,080H,000H,080H,000H,080H,000H,080H,000H,0C0H,000H,080H,000H,000H,000H
;/*--  文字:  二  --*/
Week2:
DB  000H,000H,000H,010H,004H,010H,004H,010H,004H,010H,004H,010H,004H,010H,004H,010H
DB  004H,010H,004H,010H,004H,010H,006H,010H,004H,010H,000H,018H,000H,010H,000H,000H
;/*--  文字:  三  --*/
Week3:
DB  000H,000H,004H,020H,084H,020H,084H,020H,084H,020H,084H,020H,084H,020H,084H,020H
DB  084H,020H,084H,020H,084H,020H,084H,020H,084H,020H,004H,020H,000H,020H,000H,000H
;/*--  文字:  四  --*/
Week4:
DB  000H,000H,0FEH,07FH,002H,028H,002H,024H,002H,023H,0FEH,020H,002H,020H,002H,020H
DB  0FEH,021H,002H,022H,002H,022H,002H,022H,002H,022H,0FEH,07FH,000H,000H,000H,000H
;/*--  文字:  五  --*/
Week5:
DB  000H,020H,002H,020H,082H,020H,082H,020H,082H,020H,082H,03FH,0FEH,020H,082H,020H
DB  082H,020H,082H,020H,0C2H,03FH,082H,020H,002H,020H,000H,030H,000H,020H,000H,000H
;/*--  文字:  六  --*/
Week6:
DB  010H,000H,010H,040H,010H,020H,010H,010H,010H,00CH,091H,003H,012H,001H,01EH,000H
DB  094H,000H,010H,001H,010H,002H,010H,00CH,010H,078H,010H,030H,010H,000H,000H,000H


;/*--  文字:  0123456789:/  --*/
Number0:;0
DB  000H,000H,0E0H,00FH,010H,010H,008H,020H,008H,020H,010H,010H,0E0H,00FH,000H,000H
Number1:;1
DB  000H,000H,010H,020H,010H,020H,0F8H,03FH,000H,020H,000H,020H,000H,000H,000H,000H
Number2:;2    
DB  000H,000H,070H,030H,008H,028H,008H,024H,008H,022H,088H,021H,070H,030H,000H,000H
Number3:;3   
DB  000H,000H,030H,018H,008H,020H,088H,020H,088H,020H,048H,011H,030H,00EH,000H,000H
Number4:;4 
DB  000H,000H,000H,007H,0C0H,004H,020H,024H,010H,024H,0F8H,03FH,000H,024H,000H,000H
Number5:;5       
DB  000H,000H,0F8H,019H,008H,021H,088H,020H,088H,020H,008H,011H,008H,00EH,000H,000H
Number6:;6
DB  000H,000H,0E0H,00FH,010H,011H,088H,020H,088H,020H,018H,011H,000H,00EH,000H,000H
Number7:;7
DB  000H,000H,038H,000H,008H,000H,008H,03FH,0C8H,000H,038H,000H,008H,000H,000H,000H
Number8:;8    
DB  000H,000H,070H,01CH,088H,022H,008H,021H,008H,021H,088H,022H,070H,01CH,000H,000H
Number9:;9
DB  000H,000H,0E0H,000H,010H,031H,008H,022H,008H,022H,010H,011H,0E0H,00FH,000H,000H
Number10:;:
DB  000H,000H,000H,000H,000H,000H,0C0H,030H,0C0H,030H,000H,000H,000H,000H,000H,000H
Number11:;/    
DB  000H,000H,000H,060H,000H,018H,000H,006H,080H,001H,060H,000H,018H,000H,000H,000H

END

⌨️ 快捷键说明

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