?? time-name.asm
字號:
F_ShowDigital:
stx rHexCodeTmp
clc
rol a ;;a*2
tax
lda tbLcdDigitNumber,x
sta rLocTmp
lda tbLcdDigitNumber+1,x
sta rLocTmp+1
ldx rHexCodeTmp
lda tbHexCode,x
sta rHexCodeTmp
lda #7
sta rCountTmp
lLoop1:
ldx #0
lda (rLocTmp,x) ;;get bit location
tax
lda tbBitMask,x
sta rMaskTmp ;;get mask bit
lda rLocTmp ;;rLocTmp=rLocTmp+1
clc
adc #1
sta rLocTmp
lda rLocTmp+1
adc #0
sta rLocTmp+1
ldx #0
lda (rLocTmp,x) ;;get bit location
tax ;;x = LCD byte offset
ror rHexCodeTmp
bcc lClearDot
lda P_LCDPortStarAddr,x
ora rMaskTmp
jmp lNext
lClearDot:
lda rMaskTmp ;;A = mask bit
eor #0ffh
sta rMaskTmp
lda P_LCDPortStarAddr,x
and rMaskTmp
lNext:
sta P_LCDPortStarAddr,x
lda rLocTmp
clc
adc #1
sta rLocTmp
lda rLocTmp+1
adc #0
sta rLocTmp+1
dec rCountTmp
bne lLoop1
rts
;;*************************************************************
;;Function: Display a ICON on LCD
;; Input : A -> number ( 0 ~ 8) , X = 0/1 off/on
;; Output: None
;;*************************************************************
F_ShowChar:
stx rHexCodeTmp
clc
rol a ;;A=A*2
sta rLocTmp
tax
lda tbIcon,x
tax ;;get bit location
lda tbBitMask,x
sta rMaskTmp ;;get mask bit
ldx rLocTmp
inx
lda tbIcon,x
tax ;;x = LCD byte offset
lda rHexCodeTmp
beq lClearDot1
lda P_LCDPortStarAddr,x
ora rMaskTmp
jmp lNext1
lClearDot1:
lda rMaskTmp ;;A = mask bit
eor #0ffh
sta rMaskTmp
lda P_LCDPortStarAddr,x
and rMaskTmp
lNext1:
sta P_LCDPortStarAddr,x
rts
;;*************************************************************
;; Function : clear LCD screen
;; input : none
;; return : none
;;*************************************************************
F_ClearScreen:
lda #0
ldx #0
lClearScreenLoop:
sta P_LCDPortStarAddr,x ;Clear 50(C0,S0-S7),54(C1,S0-S7),58(C2,S0-S7),5C(C3,S0-S7)
inx
sta P_LCDPortStarAddr,x ;Clear 51(C0,S8-S15),55(C1,S8-S15),59(C2,S8-S15),5d(C3,S8-S15)
inx ;Unuse: 52(C0,S16-S23),56(C1,S16-S23),5a(C2,S16-S23),5e(C3,S16-S23)
inx ;Unuse: 53(C0,S24-S31),57(C1,S24-S31),5b(C2,S24-S31),5f(C3,S24-S31)
inx ;... ...
cpx #60h
bne lClearScreenLoop
rts
;---------------------------------------------------------------------------
; subroutine: S_Delay (TdsSub.asm)
; function : 1 stand for 700us@CUP CLK/2 Rosc=100K ,so delay time=a*700us
; input : a
; output : none
; used register and RAM: R_Delay_High,R_Delay_Low
; called subroutine: S_Delay10ms
; modify by xijiyong 2002-6-3
;-------------------------------------------------------------------------
S_Delay:
sta R_Delay_High ;3個指令周期
L_Delay_DecLowByte:
jsr S_WatchDogClear
lda #$8E
sta R_Delay_Low
L_Delay_DecHiByte:
jsr S_WatchDogClear
dec R_Delay_Low ;放在零頁為5個指令周期
bne L_Delay_DecHiByte ;2個指令周期
dec R_Delay_High
bne L_Delay_DecLowByte
rts
;---------------------------------------------------------------------------
; subroutine: S_Delay (TdsSub.asm)
; input : a
; output : none
; used register and RAM: R_Delay_High,R_Delay_Low
; modify by RickDing 2007-11-21
;-------------------------------------------------------------------------
S_250ms_Delay:
lda #T_150ms ;delay 150ms
jsr S_Delay
lda #T_100ms ;delay 150ms
jsr S_Delay
jsr S_WatchDogClear
rts
;---------------------------------------------------------------------------
; subroutine: S_Delay (TdsSub.asm)
; input : a
; output : none
; used register and RAM: R_Delay_High,R_Delay_Low
; modify by RickDing 2007-11-21
;-------------------------------------------------------------------------
S_500ms_Delay:
jsr S_WatchDogClear
jsr S_250ms_Delay
jsr S_250ms_Delay
rts
;-----------------------------------------------
;MACRO to sub
;-----------------------------------------------
S_WatchDogClear:
LDA #D_WatchDog_Clr_1st_Byte
STA P_0FH_System_CTL
LDA #D_WatchDog_Clr
STA P_0FH_System_CTL
rts
;----------------------------------------------------------------------------
; subroutine: S_LCDFlashOneDigital
; function : LCD flash one digital
; input : R_LCDFlash
; Low 4 bit is number(0~9).High 4 bit is which location(0~9)
; output : none
; used register and RAM:
; called subroutine:
; Import Note: In this subroutine,all account use decimal
;----------------------------------------------------------------------------
S_LCDFlashOneDigital:
lda R_KeyMenuLevel
and #FlagLCDFlashIsOn
bne L_DigitalShowOff
ldx R_KeyInputNumber
lda R_KeyMenuLevel
ora #FlagLCDFlashIsOn
sta R_KeyMenuLevel
jmp L_LCDFlashOneDigital
L_DigitalShowOff:
ldx #1ah
lda R_KeyMenuLevel
and #.NOT.FlagLCDFlashIsOn
sta R_KeyMenuLevel
L_LCDFlashOneDigital:
lda R_KeyInputLocation
jsr F_ShowDigital
rts
;;============================================
;; LCD Display calculate table
;;============================================
tbBitMask:
db %00000001
db %00000010
db %00000100
db %00001000
db %00010000
db %00100000
db %01000000
db %10000000
db %00000001
db %00000010
tbLcdDigitNumber: ; _1__ _2__ _3__ _4__ _5__ _6__
dw tbLcdDigit1 ; | | | | | | | | | | | |
dw tbLcdDigit2 ; |____| |____| |____| |____| |____| |____|
dw tbLcdDigit3 ; | | | | | | | | | | | |
dw tbLcdDigit4 ; |____| |____| |____| |____| |____| |____|
dw tbLcdDigit5 ;
dw tbLcdDigit6 ; _7__ _8__ _9__ _10_
dw tbLcdDigit7 ; | | | | | | | |
dw tbLcdDigit8 ; |____| |____| |____| |____|
dw tbLcdDigit9 ; | | | | | | | |
dw tbLcdDigit10 ; |____| |____| |____| |____|
tbHexCode:
;; gfedcba
db %0111111 ;;0
db %0000110 ;;1
db %1011011 ;;2
db %1001111 ;;3
db %1100110 ;;4
db %1101101 ;;5
db %1111101 ;;6
db %0100111 ;;7
db %1111111 ;;8
db %1101111 ;;9
db %1110111 ;;a ---------------------"A" 10
db %1111100 ;;b ---------------------"b" 11
db %0111001 ;;c ---------------------"C" 12
db %1011110 ;;d ---------------------"d" 13
db %1111001 ;;e ---------------------"E" 14
db %1110001 ;;f ---------------------"F" 15
db %1000000 ;;10h---------------------"-" 16
db %1010100 ;;11h---------------------"n" 17
db %0000110 ;;12h---------------------"i" 18
db %1111000 ;;13h---------------------"t" 19
db %0111000 ;;14h---------------------"L" 20
db %1110110 ;;15h---------------------"H" 21
db %0110001 ;;16h---------------------"r" 22
db %1011100 ;;17h---------------------"o" 23
db %0110000 ;;18h---------------------"l" 24
db %0000001 ;;19h---------------------"1" 25
db %0000000 ;;1ah---------------------" " 26
db %0011100 ;;1bh---------------------"u" 27
db %0010000 ;;1ch---------------------"|" 28
db %1110011 ;;1dh---------------------"P" 29
db %0110111 ;;1eh---------------------"N" 30
db %0111110 ;;1fh---------------------"U" 31
db %1111010 ;;20h---------------------"K" 32
;;============================================
;;============================================
;; LCD Display COM & SEG mapping table
;;============================================
tbLcdDigit1: ;;1
mCom_Seg c3,s3 ;;seg a
mCom_Seg c1,s3 ;;seg b _a__
mCom_Seg c5,s3 ;;seg c f | | b
mCom_Seg c6,s3 ;;seg d |_g__|
mCom_Seg c4,s3 ;;seg e | |
mCom_Seg c2,s3 ;;seg f e |____| c
mCom_Seg c0,s3 ;;seg g d
tbLcdDigit2: ;;2
mCom_Seg c3,s2 ;;seg a _a__
mCom_Seg c1,s2 ;;seg b f | | b
mCom_Seg c5,s2 ;;seg c |_g__|
mCom_Seg c6,s2 ;;seg d | |
mCom_Seg c4,s2 ;;seg e e |____| c
mCom_Seg c2,s2 ;;seg f d
mCom_Seg c0,s2 ;;seg g
tbLcdDigit3: ;;3
mCom_Seg c3,s8 ;;seg a _a__
mCom_Seg c1,s8 ;;seg b f | | b
mCom_Seg c5,s8 ;;seg c |_g__|
mCom_Seg c6,s8 ;;seg d | |
mCom_Seg c4,s8 ;;seg e e |____| c
mCom_Seg c2,s8 ;;seg f d
mCom_Seg c0,s8 ;;seg g
tbLcdDigit4: ;;4
mCom_Seg c3,s9 ;;seg a _a__
mCom_Seg c1,s9 ;;seg b f | | b
mCom_Seg c5,s9 ;;seg c |_g__|
mCom_Seg c6,s9 ;;seg d | |
mCom_Seg c4,s9 ;;seg e e |____| c
mCom_Seg c2,s9 ;;seg f d
mCom_Seg c0,s9 ;;seg g
tbLcdDigit5: ;;5
mCom_Seg c3,s10 ;;seg a
mCom_Seg c1,s10 ;;seg b _a__
mCom_Seg c5,s10 ;;seg c f | | b
mCom_Seg c6,s10 ;;seg d |_g__|
mCom_Seg c4,s10 ;;seg e | |
mCom_Seg c2,s10 ;;seg f e |____| c
mCom_Seg c0,s10 ;;seg g d
tbLcdDigit6: ;;6
mCom_Seg c3,s11 ;;seg a _a__
mCom_Seg c1,s11 ;;seg b f | | b
mCom_Seg c5,s11 ;;seg c |_g__|
mCom_Seg c6,s11 ;;seg d | |
mCom_Seg c4,s11 ;;seg e e |____| c
mCom_Seg c2,s11 ;;seg f d
mCom_Seg c0,s11 ;;seg g
tbLcdDigit7: ;;8
mCom_Seg c6,s4 ;;seg a _a__
mCom_Seg c4,s4 ;;seg b f | | b
mCom_Seg c2,s4 ;;seg c |_g__|
mCom_Seg c3,s4 ;;seg d | |
mCom_Seg c1,s4 ;;seg e e |____| c
mCom_Seg c5,s4 ;;seg f d
mCom_Seg c0,s4 ;;seg g
tbLcdDigit8: ;;9
mCom_Seg c6,s5 ;;seg a _a__
mCom_Seg c4,s5 ;;seg b f | | b
mCom_Seg c2,s5 ;;seg c |_g__|
mCom_Seg c3,s5 ;;seg d | |
mCom_Seg c1,s5 ;;seg e e |____| c
mCom_Seg c5,s5 ;;seg f d
mCom_Seg c0,s5 ;;seg g
tbLcdDigit9: ;;10
mCom_Seg c6,s6 ;;seg a
mCom_Seg c4,s6 ;;seg b _a__
mCom_Seg c2,s6 ;;seg c f | | b
mCom_Seg c3,s6 ;;seg d |_g__|
mCom_Seg c1,s6 ;;seg e | |
mCom_Seg c5,s6 ;;seg f e |____| c
mCom_Seg c0,s6 ;;seg g d
tbLcdDigit10: ;;11
mCom_Seg c6,s7 ;;seg a _a__
mCom_Seg c4,s7 ;;seg b f | | b
mCom_Seg c2,s7 ;;seg c |_g__|
mCom_Seg c3,s7 ;;seg d | |
mCom_Seg c1,s7 ;;seg e e |____| c
mCom_Seg c5,s7 ;;seg f d
mCom_Seg c0,s7 ;;seg g
tbIcon: ;;total 25
mCom_Seg c2,s0 ;;icon "SET" ;0
mCom_Seg c1,s0 ;;icon "REC" ;1
mCom_Seg c0,s0 ;;icon "PW" ;2
mCom_Seg c4,s0 ;;icon "START" ;3
mCom_Seg c7,s0 ;;power outline ;4
mCom_Seg c5,s0 ;;power left half ;5
mCom_Seg c6,s0 ;;power right half ;6
mCom_Seg c3,s0 ;;icon "HIGH" ;7
mCom_Seg c1,s1 ;;icon "LOW" ;8
mCom_Seg c0,s1 ;;"TEMP" ;9
mCom_Seg c4,s1 ;;icon "(TEPM)1" ;10
mCom_Seg c5,s1 ;;icon "(TEMP)2" ;11
mCom_Seg c6,s1 ;;icon "EXCUR" ;12
mCom_Seg c2,s1 ;;icon "OK" ;13
mCom_Seg c3,s1 ;;icon "NOT_OK" ;14
mCom_Seg c0,s3 ;;icon minus "-" ;15
mCom_Seg c7,s8 ;;icon "Year Dot" ;16
mCom_Seg c7,s9 ;;icon "Month Dot" ;17
mCom_Seg c7,s11 ;;icon "DegC" ;18
mCom_Seg c7,s10 ;;icon "DegF" ;19
mCom_Seg c7,s2 ;;icon "INT" ;20
mCom_Seg c7,s3 ;;icon "CLOCK" ;21
mCom_Seg c7,s4 ;;icon "CLOCK 1" ;22
mCom_Seg c7,s6 ;;Icon "CLOCK DOT" ;23
mCom_Seg c7,s5 ;;Icon "HM" hour and min ;24
;;============================================
;; End of LCD Display COM & SEG mapping table
;;============================================
;====================================================================
VECTOR .section
DW NMI ;Nmi
DW RESET
DW IRQ
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -