📄 dz9664.asm
字号:
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 + -