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

📄 dz9664.asm

📁 1. Source Code for CSTN . 2. Keil ASM with Detail Remark. 3. Winbond Single Chip.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
name DZ9664
;/----------------------------------------------------------------------------
;; MPU: WINBOND W78C438CP-40
;; OSC: 24 MHz
;; LCM controller IC: philips DZ9664/1 (ROW68 x 12bit X COL98 X 3)
;; LCM display resolution: R68 X C98 PIXEL,80K bits 4K/65k/256 COLORS
;; Purpose: DEMO
;; Date: 2003.3.27
;/----------------------------------------------------------------------------
;                .CHIP 8052
;                .SYMBOLS ON
;                .RAMCHK OFF
;#----------------------------------------------------------------------------
DATA_BUS        equ    P0		;O/P
LED1		bit    P3.4		;LED DISPLAY
LED2		bit    P3.5		;LED DISPLAY
CD		bit    p1.5		;O/P data or command
CS		bit    P1.6		;O/P always low
RESB		bit    P1.7		;O/P use cpu rst pin
WRB		bit    P3.6		;O/P use @R write to P0 bus
RDB		bit    P3.7		;O/P pull-high
UPKEY		bit    P2.7		;UP KEY
DOWNKEY		bit    P2.6		;DOWN KEY
CLOCKKEY	bit    P2.5		;CLOCK KEY
CONTRASTKEY		bit    P2.4		;CONTRAST KEY
;CPUclk		bit	0XBF.2		;SET CPU DOUBLE CLOCK RATE
;%----------------------------------------------------------------------------
SYSTEMflag	EQU	20H	;B0=CONTRAST H/L
CONTRASTflag	BIT	SYSTEMflag.0
showTIMEflag	BIT	SYSTEMflag.1

FORcolor	EQU	10H	;USE RS BANK2 FOR COLOR
BACKcolor	EQU	11H	;FORGROUND/BACKGROUND COLOR
BitCounter	equ	12h	;use to color bit counter 8->0 

TEMP            equ    30H
TIMER0count	equ    31H
SECOND_COUNT    equ    32H
OneSecondCounter	equ    33H
MEMORY_DATA	equ    34H
;MEMORY_DATA2    equ    35H
;MEMORY_DATA3    equ    36H
KEYvalue	equ    37H
INDEX		EQU	38H
HI_BYTE		EQU	39H
LO_BYTE		EQU	3AH
SECOND		EQU	3BH
MINUTE		EQU	3CH
HOURSE		EQU	3DH
DPTR_DPH        equ    35H
DPTR_DPL        equ    36H
;IMAGE_COUNT     equ    37H

;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;EPMA            EQU    0A2H
;P8              EQU    0A6H
LCMseg          EQU    96
LCMcom          EQU    64
;MODEL_SEL2_S    EQU    98
;MODEL_SEL2_C    EQU    68
BLACK           EQU    00000000B
BLUE            EQU    00000011B
RED             EQU    11100000B
PURPLE          EQU    11100011B
GREEN           EQU    00011100B
DARK_GREEN      EQU    00011111B
YELLOW          EQU    11111100B
WHITE           EQU    11111111B
IMAGE_ADDR      EQU    6144-1          ;;96 * 64 = 6144
;@----------------------------------------------------------------------------
	public	allDZ9664
	public	clearLCM
	public  PHOTO2
	public	INITDZ9664LCM
	public	LCMhome

?PR?all9664c?LCM9664c	segment code

	rseg	?PR?all9664c?LCM9664c
allDZ9664:
		nop
;&-------------------------------------------

                ORG    0000H
                JMP    ISPcheck
                ;;
;                ORG    0003H                   ;INT0 ADDRESS
;                JMP     $
                ;;
                ORG    000BH                   ;TIMER0 ADDRESS
;		RETI
		LJMP	TIMER0ISR
                ;;
;                ORG    0013H                   ;INT1 ADDRESS
;                JMP     $

                ORG    001BH                   ;TIMER1 ADDRESS
		LJMP	TIMER1ISR                ;;

                ;;
;                ORG    0023H                   ;UART ADDRESS
;                JMP     $
                ;;
;                ORG    002BH                   ;TIMER2 ADDRESS
;                JMP     $
                ;;
;                ORG    0033H                   ;INT2 ADDRESS
;                JMP     $
                ;;
;                ORG    003BH                   ;INT3 ADDRESS
;                JMP     $
;*-------------------------------------------
                ORG    50H
;*-------------------------------------------
ISPcheck:				;======================
		MOV	A,P2		;CHECK ISP PIN
		ANL	A,#10000000B	;27=0 THEN ISP	
		JNZ	START

ISPmode:				;ENTER ISP MODE
        mov     0bfh,#10h        ; enxram
        mov     dptr,#0F0Bh
        mov     a,#00101110b        
        movx    @dptr,a         ; slvaadr=2E
        mov     dptr,#0F0Ch
        mov     a,#93h
        movx    @dptr,a         ; en isp
        nop
        mov     pcon,#00000001b
        nop
        nop
        nop
;========================================
                ORG	80H	;ISP PAGE1
;=========================================
START:
                MOV     SP,#5FH		;@ STACK
		;SETB	CPUclk		;SET CPU DOUBLE CLOCK RATE
		;ORL	0XBF,#00010100B
INIT_IO:
		CLR	LED1
		SETB	LED2
		MOV	KEYvalue,#01
		MOV     R0,#20H		;CLEAR RAM(20H-FFH)
CLEAR_RAM:
                MOV     @R0,#0
                INC     R0
                CJNE    R0,#00H,CLEAR_RAM

	MOV	SECOND,#0			;CLOCK VARIABLE
	MOV	MINUTE,#0
	MOV	HOURSE,#12h
	MOV	OneSecondCounter,#(1000/4)
TIMER0INIT:
	MOV	TMOD,#00000000B			;TIMER0 MODE0
	MOV	TH0,#(8192-5000)/32		;13 BIT
	MOV	TL0,#(8192-5000) MOD 32		;8+5=13 BIT
	SETB	ET0				;ENABLE TIMER0 INT
	SETB	TR0				;TIMER0 START
TIMER1INIT:
	MOV	TH1,HIGH (65536-4000)		;4mS INT
	MOV	TL1,LOW  (65536-4000)		;8+8=16 BIT
	ORL	TMOD,#00010000B			;TIMER1 MODE1 16BIT
	SETB	ET1				;ENABLE TIMER1 INT
	SETB	TR1				;START TIMER1

	SETB	EA			;ENABLE ALL INTINIT_LCM:
        
	CALL    INITDZ9664LCM
	MOV	DPTR,#W22		;home page / title screen
	CALL	pictureDISPLAY
;==========================================================
KEYcheck:
	MOV	A,P2
	CPL	A
	JZ	KEYcheck	;NO KEY PRESS
	MOV	A,P2
	MOV	B,A		;BACKUP KEYBOARD VALUE
	MOV     R5,#1
        CALL    DELAY_50MS	;DEBOUNCE TIME
	MOV	A,P2
	CJNE	A,B,KEYcheck	;IS STILL PRESS KEY,NON THEN BACK
	;MOV     R5,#1	
        ;CALL    DELAY_50MS	;RELEASE KEY?
	;CJNE	A,B,KEYB0	;IF KEYPRESS THEN GOBACK
	;JMP	KEYcheck

	;JNB	showTIMEflag,KEYB0
	;CALL	SHOWtime
KEYB0:
	JB	UPKEY,KEYB1		;UP
	INC	KEYvalue
	CALL	SHOWmap
	JMP	KEYcheckOK
KEYB1:
	JB	DOWNKEY,KEYcheckOK		;DOWN
	DEC	KEYvalue
	MOV	A,KEYvalue
	CJNE	A,#0XFF,KEYB11
	MOV	KEYvalue,#11
KEYB11:
	CALL	SHOWmap
	JMP	KEYcheckOK
KEYcheckOK:
	MOV     R5,#2
        CALL    DELAY_50MS
	JMP	KEYcheck
;==========================================================
asmMAIN:
		XRL	P3,#00010000B		;SWITCH led
		XRL	P3,#00100000B		;SWITCH led
		CALL    PHOTO1		;color bar
		CALL    PHOTO2		;color bar
                CALL    PHOTO3		;color bar
                CALL    PHOTO4
                CALL    PHOTO5
                CALL    PHOTO6
                CALL    PHOTO8
                CALL    PHOTO9
                CALL    PHOTO10

	      	;MOV	DPTR,#highcrime		;SET Picture ADDRESS
		MOV	DPTR,#W2		;SET Picture ADDRESS
		CALL	pictureDISPLAY

		;MOV	DPTR,#episode		;SET Picture ADDRESS
		MOV	DPTR,#W33		;SET Picture ADDRESS
		CALL	pictureDISPLAY

		;MOV	DPTR,#topgun		;SET Picture ADDRESS
		MOV	DPTR,#W25		;SET Picture ADDRESS
		CALL	pictureDISPLAY		

		;MOV	DPTR,#spidermanp5	;SET Picture ADDRESS
		MOV	DPTR,#W4		;SET Picture ADDRESS
		CALL	pictureDISPLAY		

		;MOV	DPTR,#loveme		;SET Picture ADDRESS
		CALL	pictureDISPLAY		

		;MOV	DPTR,#expend		;SET Picture ADDRESS
		MOV	DPTR,#W7		;SET Picture ADDRESS
		CALL	pictureDISPLAY

		;MOV	DPTR,#MARIOkart		;SET Picture ADDRESS
		MOV	DPTR,#W13		;SET Picture ADDRESS
		CALL	pictureDISPLAY

		;MOV	DPTR,#NAPOLEN		;SET Picture ADDRESS
		MOV	DPTR,#15		;SET Picture ADDRESS
		CALL	pictureDISPLAY

		;MOV	DPTR,#KYOKO		;SET Picture ADDRESS
		MOV	DPTR,#17		;SET Picture ADDRESS
		CALL	pictureDISPLAY

		MOV	DPTR,#22		;SET Picture ADDRESS
		CALL	pictureDISPLAY

      		jmp	asmMAIN
SHOWpicture:
;		MOV	DPTR,#highcrime		;SET Picture ADDRESS
;		CALL	pictureDISPLAY
		CALL    PHOTO1
                CALL    PHOTO2
                CALL    PHOTO3

                JMP     asmMAIN
;==========================================================
SHOWmap:
	MOV	A,KEYvalue
MAP0:
	CJNE    A,#0,MAP1
	CALL    PHOTO2		;color bar
	RET
MAP1:
	CJNE    A,#1,MAP2
	CALL    PHOTO3		;color bar
	RET
MAP2:
	CJNE    A,#2,MAP3
	MOV	DPTR,#W22
	CALL	pictureDISPLAY
	RET
MAP3:
	CJNE    A,#3,MAP4
	MOV	DPTR,#W25
	CALL	pictureDISPLAY
	RET
MAP4:
	CJNE    A,#4,MAP5
	MOV	DPTR,#W13
	CALL	pictureDISPLAY
	RET
MAP5:
	CJNE    A,#5,MAP6
	MOV	DPTR,#W15
	CALL	pictureDISPLAY
	RET
MAP6:
	CJNE    A,#6,MAP7
	MOV	DPTR,#W2
	CALL	pictureDISPLAY
	RET
MAP7:
	CJNE    A,#7,MAP8
	MOV	DPTR,#W17
	CALL	pictureDISPLAY
	RET
MAP8:
	CJNE    A,#8,MAP9
	MOV	DPTR,#W33		;
	CALL	pictureDISPLAY
	RET
MAP9:
	CJNE    A,#9,MAP10
	MOV	DPTR,#W4		;
	CALL	pictureDISPLAY
	RET
MAP10:
	CJNE    A,#10,MAP11
	MOV	DPTR,#W7		;
	CALL	pictureDISPLAY
	RET	
MAP11:
	CJNE    A,#11,MAP12
	CALL	PHOTO1
	RET
MAP12:
	MOV	KEYvalue,#00
	RET
;======================================
pictureDISPLAY:
	CALL    LCMhome
	MOV     R1,#LCMcom                ;;Common
pD1:
	MOV     R2,#LCMseg                ;;Segment
pD2:
	clr	A
	movc	A,@A+dptr
        CALL    LCMwriteDATA
	inc	dptr
        DJNZ    R2,pD2
        DJNZ    R1,pD1

        RET
;======================================
;======================================
;;---------------------------------------
PHOTO1:
                CALL    LCMhome
                MOV     R0,#3
PHOTO1_RED:
                CJNE    R0,#3,PHOTO1_GREEN
                MOV     MEMORY_DATA,#RED                ;;RED
PHOTO1_GREEN:
                CJNE    R0,#2,PHOTO1_BLUE
                MOV     MEMORY_DATA,#GREEN              ;;GREEN
PHOTO1_BLUE:
                CJNE    R0,#1,PHOTO1_0
                MOV     MEMORY_DATA,#BLUE               ;;BLUE
PHOTO1_0:
                MOV     R1,#LCMcom                ;;Common
PHOTO1_1:
                MOV     R2,#LCMseg                ;;Segment
PHOTO1_2:
                CALL    RAMWR
                DJNZ    R2,PHOTO1_2
                DJNZ    R1,PHOTO1_1
                ;;
                CALL    LCMhome
                MOV     SECOND_COUNT,#1
                ;CALL    DELAY_1S
                ;DJNZ    R0,PHOTO1_RED
                RET
;;---------------------------------------
;; Column 8'S Color Bar
;;---------------------------------------
PHOTO2:
                CALL    LCMhome
                MOV     R0,#8
PHOTO2_0:
                MOV     R1,#LCMcom                ;;Common
PHOTO2_1:
                MOV     B,#8                            ;;8 color bar
                MOV     A,#LCMseg                 ;;Segment
PHOTO2_2:
                DIV     AB
                MOV     R2,A
PHOTO2_READ:
                CJNE    R0,#8,PHOTO2_GREEN
                MOV     MEMORY_DATA,#RED                ;;RED
PHOTO2_GREEN:
                CJNE    R0,#7,PHOTO2_BLUE
                MOV     MEMORY_DATA,#GREEN              ;;GREEN
PHOTO2_BLUE:
                CJNE    R0,#6,PHOTO2_BLACK
                MOV     MEMORY_DATA,#BLUE               ;;Blue
PHOTO2_BLACK:
                CJNE    R0,#5,PHOTO2_DGREEN
                MOV     MEMORY_DATA,#BLACK              ;;Black
PHOTO2_DGREEN:
                CJNE    R0,#4,PHOTO2_PURPLE
                MOV     MEMORY_DATA,#DARK_GREEN         ;;Dark Green
PHOTO2_PURPLE:
                CJNE    R0,#3,PHOTO2_WHITE
                MOV     MEMORY_DATA,#PURPLE             ;;Purple
PHOTO2_WHITE:
                CJNE    R0,#2,PHOTO2_YELLOW
                MOV     MEMORY_DATA,#WHITE              ;;White
PHOTO2_YELLOW:
                CJNE    R0,#1,PHOTO2_3
                MOV     MEMORY_DATA,#YELLOW             ;;Yellow
PHOTO2_3:
                CALL    RAMWR
                DJNZ    R2,PHOTO2_3
                DJNZ    R0,PHOTO2_1
                MOV     R0,#8
                DJNZ    R1,PHOTO2_1
                ;;
                ;MOV     SECOND_COUNT,#1
                ;CALL    DELAY_1S
                RET
;;---------------------------------------
;; Row 8'S Color Bar
;; COLOR Arrangement(use 8 bits, 256 gradation)
;;---------------------------------------
PHOTO3:
                CALL    LCMhome
                MOV     R0,#8
PHOTO3_0:
                MOV     B,#8                            ;;8 color bar
                MOV     A,#LCMcom                 ;@Common,NOTE
PHOTO3_1:
                DIV     AB
                MOV     R1,A
PHOTO3_2:
                MOV     R2,#LCMseg                ;;Segment
PHOTO3_READ:
                CJNE    R0,#8,PHOTO3_GREEN
                MOV     MEMORY_DATA,#RED                ;;RED
PHOTO3_GREEN:
                CJNE    R0,#7,PHOTO3_BLUE
                MOV     MEMORY_DATA,#GREEN              ;;GREEN
PHOTO3_BLUE:
                CJNE    R0,#6,PHOTO3_BLACK
                MOV     MEMORY_DATA,#BLUE               ;;Blue
PHOTO3_BLACK:
                CJNE    R0,#5,PHOTO3_DGREEN
                MOV     MEMORY_DATA,#BLACK              ;;Black
PHOTO3_DGREEN:
                CJNE    R0,#4,PHOTO3_PURPLE
                MOV     MEMORY_DATA,#DARK_GREEN         ;;Dark Green
PHOTO3_PURPLE:
                CJNE    R0,#3,PHOTO3_WHITE
                MOV     MEMORY_DATA,#PURPLE             ;;Purple
PHOTO3_WHITE:
                CJNE    R0,#2,PHOTO3_YELLOW
                MOV     MEMORY_DATA,#WHITE              ;;White
PHOTO3_YELLOW:
                CJNE    R0,#1,PHOTO3_3
                MOV     MEMORY_DATA,#YELLOW             ;;Yellow
PHOTO3_3:
                MOV	A,MEMORY_DATA
                CALL	LCMwriteDATA

                DJNZ    R2,PHOTO3_3
                DJNZ    R1,PHOTO3_2
                DJNZ    R0,PHOTO3_0

                ;MOV     SECOND_COUNT,#1
                ;CALL    DELAY_1S
                RET
;;---------------------------------------
PHOTO4:
                CALL    LCMhome
		MOV     R0,#LCMcom                ;;Common
PHOTO4_0:
                MOV     R1,#LCMseg                ;;Segment
PHOTO4_1:
                MOV     MEMORY_DATA,#WHITE              ;;White
PHOTO4_2:
                MOV	A,MEMORY_DATA
                CALL	LCMwriteDATA

                DJNZ    R1,PHOTO4_2
                DEC     R0
                ;;
PHOTO4_3:
                MOV     MEMORY_DATA,#WHITE              ;;White
                MOV     R1,#LCMseg                ;;Segment
PHOTO4_4:
                MOV     TEMP,R1
                DEC     TEMP
PHOTO4_5:
                MOV     A,R1
                CJNE    A,TEMP,PHOTO4_6
                MOV     MEMORY_DATA,#BLACK              ;;Black
PHOTO4_6:
                CJNE    A,#1,PHOTO4_7
                MOV     MEMORY_DATA,#WHITE              ;;White
PHOTO4_7:
                MOV	A,MEMORY_DATA
                CALL	LCMwriteDATA

                DJNZ    R1,PHOTO4_5
                DEC     R0

⌨️ 快捷键说明

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