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

📄 splxx.inc

📁 用汇编语言实现时间和姓名在LCD上实现的程式
💻 INC
📖 第 1 页 / 共 5 页
字号:
D_TimerCh1:             EQU     Timer0IntEnable
Timer1IntAsNMI:         EQU     %00000000
Timer1IntAsIRQ:         EQU     %10000000
P_1AH_InterruptClear:   EQU     $1A

;-------------------------------------------------------------------------------
; WDOGC: WatchDog counter reset (W)
;        This Watchdog clear port must be write druing 1 or 1/2 sec (TimeBaseL)
;        otherwise system will be reset (if CLK32 off, then off)
;-------------------------------------------------------------------------------
P_0FH_WDOGC:        EQU     0FH
P_13H_Timer1L:      EQU     13H
P_14H_Timer1H:      EQU     14H
P_15H_Timer1Load:   EQU     15H
P_10H_Timer0L:      EQU     10H
P_11H_Timer0H:      EQU     11H
P_12H_Timer0Load:   EQU     12H
P_1BH_PWMCh0_Ctrl:      EQU      $1B
PWMCh0Enable            EQU      %10000000
Ch0SpeechMode           EQU      %00000000
Ch0ToneMode             EQU      %01000000
Ch0ToPWMDirt            EQU      %00000000
Ch0ToPWMTimer0OverFlow  EQU      %00001000
Ch0ToPWMTimer1OverFlow  EQU      %00010000
Ch0ToPWMTimersOverFlow  EQU      %00011000

;-------------------------------------------------------------------------------
P_1CH_PWMCh1_Ctrl:      EQU      $1C
PWMCh1Enable            EQU      %10000000
Ch1SpeechMode           EQU      %00000000
Ch1ToneMode             EQU      %01000000
Ch1ToPWMDirt            EQU      %00000000
Ch1ToPWMTimer0OverFlow  EQU      %00001000
Ch1ToPWMTimer1OverFlow  EQU      %00010000
Ch1ToPWMTimersOverFlow  EQU      %00011000
;-------------------------------------------------------------------------------
; LCDCtrl:      LCD option control (W)
;    b0 , b1 : reserved
;    b2,b3 :
;     0  0 : Normal
;     0  1 : All on
;     1  0 : ALL off
;     1  1 : Display Off ( it is used under power down mode )
;    b4 : FScan : Normal < 0 > / LCD Fast frame scan < 1 >
;    b5 : <1/2>Bias(0) / <1/3>Bias(1)
;    b6,b7 : Duty control
;     0  0 : 1/5 Duty           ???
;     0  1 : 1/4 Duty
;     1  0 : 1/3 Duty
;     1  1 : 1/2 Duty

;-------------------------------------------------------------------------------
P_18H_LCDCtrl:             EQU     18H
LcdNormal:              EQU     %00000000
LcdAllOn:               EQU     %00001000
LcdAllOff:              EQU     %00000100
DisplayOff              EQU     %00001100
LcdNormalScan:          EQU     %00000000
LcdFastScan:            EQU     %00010000
Lcd1_2Bias:             EQU     %00000000
Lcd1_3Bias:             EQU     %00100000
Lcd1_5Duty:             EQU     %00000000
Lcd1_4Duty:             EQU     %01000000
Lcd1_3Duty:             EQU     %10000000
Lcd1_2Duty:             EQU     %11000000

;-------------------------------------------------------------------------------
P_01H_PWMCh0_Out:       EQU     $01
P_02H_PWMCh1_Out:       EQU     $02

P_0EH_CPUCLKCtrl:       EQU      $0E
FRosc1_2                EQU      %00000000
FRosc1_4                EQU      %00000001
FRosc1_8                EQU      %00000010
FRosc1_16               EQU      %00000011
P_16H_CompVolt:         EQU      $16
P_17H_LowBat:           EQU      $17

;-------------------------------------------------------------------------------
; P_19H_455K_Xtal:   Control 455Khz ceramic oscillator
;    b7 : Enable(1)/Disable(0)          ???
;-------------------------------------------------------------------------------

P_19H_455K_Xtal:         EQU     19H
T455KHzEnable:  EQU     %10000000
T455KHzDisable: EQU     %00000000

;-------------------------------------------------------------------------------
D_LCD_AddrBegin           EQU    20H
D_LCD_AddrEnd             EQU    3DH

;------------------------------------------------------------------------------
;               LCD Buffers are between 20H and 33H .
;------------------------------------------------------------------------------
P_20H_LCD20:                 EQU      $20
	.ENDIF


	.IFDEF	SPL15Bx
	.PAGE0
;-------------------------------------------------------------------------------
;      I/O configuration for hardware system
;-------------------------------------------------------------------------------
P_00H_PortCD_Ctrl:  EQU     $0
PortCDInput:    EQU     0
PortCD0Input:   EQU     0
PortCD1Input:   EQU     0
PortCD2Input:   EQU     0
PortCD3Input:   EQU     0
PortCDOutput:   EQU     %00001111
PortCD0Output:  EQU     %00000001
PortCD1Output:  EQU     %00000010
PortCD2Output:  EQU     %00000100
PortCD3Output:  EQU     %00001000
PortCDPureInput:EQU     %01000000
PortCDPullDown: EQU     %00000000
PortCDBufferOut:EQU     %00000000
PortCDOpenDrain:EQU     %01000000
;-------------------------------------------------------------------------------
P_04H_PortCD:       EQU     $4
;-------------------------------------------------------------------------------
;  PortABPC (W) : b0 ---> AB Port low nibble I/O control
;                 Input : 1 : Pure Input
;                         0 : Pull High/Low ----> data = 1 pull high , data = 0 pull low
;                 Output : 1 : open drain P
;                          0 : normal
;
;                 b1 ---> AB Port high nibble I/O control
;                 Input : 1 : Pure Input
;                         0 : Pull High/Low ----> data = 1 pull high , data = 0 pull low
;                 Output : 1 : open drain N
;                          0 : normal
;-------------------------------------------------------------------------------

P_1EH_PortAB_Ctrl:  	EQU     $1E
P_03H_PortAB:       	EQU     $3
P_34H_PortAB_ConfigCtrl:EQU     $34
P_05H_PortEF:           EQU     $5
P_06H_PortEF_Ctrl:      EQU     $06
P_35H_PortEFConfigCtrl:	EQU     $35
P_07H_ROMBankSel:      	EQU     $7
DummyAreaLowAddr        EQU     00H
DummyAreaHighAddr       EQU     80H
DummyAreaBankAddr       EQU     03H
DummySkipLowAddr        EQU     00H
DummySkipHighAddr       EQU     80H
DummySkipBankAddr       EQU     03H
BankMask:       		EQU     %00000111

;-------------------------------------------------------------------------------
; WakeUpCtrl: Sleeping Wake up control (R/W)
;            (write 1 for option enable, Write 0 for option disable and also
;             Clear the correspondence Hardware flag)
;            (Read 1 when the wakeup event is take place)
;        b0 : Wake Up when EF Port 8 key changed
;        b1 : Wake Up when TimeBaseL 2Hz / 1Hz depend on P_0AH_TimeBaseCtrl(0A)
;        b2 : Wake Up when timer 0 overflow
;        b3 : Wake Up when TimeBaseH coming
;             (TimeBaseH 4Hz, 8Hz, 16Hz, 32Hz depend on P_0AH_TimeBaseCtrl(0AH))
;     b4..b7: reserved
;-------------------------------------------------------------------------------

P_08H_WakeUpCtrl:   EQU     $8
WakeUpPortEF:   	EQU     %00000001
WakeUpTimeBaseL:	EQU     %00000010
WakeUp2Hz:      	EQU     %00000010
WakeUpTimer0:   	EQU     %00000100
WakeUpTimeBaseH:	EQU     %00001000
WakeUpMask:     	EQU     %00000111

;-------------------------------------------------------------------------------
; Sleep : Write "0FH" to this port to start Sleeping (W)
;-------------------------------------------------------------------------------
P_09H_Sleep:        EQU     $9

;-------------------------------------------------------------------------------
; TimeBaseCtrl: Write to setup timebase
;       b1,b0:
;        0  0 -> Setup TimeBaseH as 4Hz
;        0  1 -> Setup TimeBaseH as 8Hz
;        1  0 -> Setup TimeBaseH as 16Hz
;        1  1 -> Setup TimeBaseH as 32Hz
;          b7:  TimeBaseL as 2Hz(0)/1Hz(1)
;
;       b7..b0: Read back as TimeBase counter value base on 64Hz
;
;-------------------------------------------------------------------------------
P_0AH_TimerXHz: EQU     $A
TimeBaseH4Hz:   EQU     %00000000
TimeBaseH8Hz:   EQU     %00000001
TimeBaseH16Hz:  EQU     %00000010
TimeBaseH32Hz:  EQU     %00000011
TimeBaseL2Hz:   EQU     %00000000
TimeBaseL1Hz:   EQU     %10000000

;-------------------------------------------------------------------------------
; TimerCtrl: Counter/Timer0 clock source and Mode selection (W)
;     b7 : Timer1,Timer0 Enable(1)/Disable(0)
;     b6 : Timer1 Counts CLK32(1)/SystemClockR-Osc(0)
;     b5 : Timer0 in Timer mode Counts Overflow of Timer1(1)/SystemClockR-Osc(0)
;     b4 : Timer0 Counter mode(1)/ Timer mode(0)
;     b3,b2: Timer0 Counter mode input #1 source select
;      0  0: PortCD.1
;      0  1: VDD
;      1  0: TimeBaseH
;      1  1: CLK128Hz
;     b1,b0: Timer0 Counter mode input #2 source select
;      0  0: PortCD.0 (Ext. clock )
;      0  1: 455KHz    ( X'tal )
;      1  0: SystemClockR-Osc
;      1  1: CLK32      ( X'tal )
;
;     Note: SystemClockCPU = SystemClockR-Osc/2
;           CLK32,CLK128,TimeBaseH,TimeBaseL are generated by crystal 32768Hz
;
;-------------------------------------------------------------------------------
P_0BH_TimerModeCtrl:    EQU     0BH
TimerEnable:            EQU     %10000000
TimerDisable:           EQU     %00000000
Tm1CountCLK32:          EQU     %01000000
Tm1CountROsc:           EQU     %00000000
Tm0CountTm1:            EQU     %00100000
Tm0CountROsc:           EQU     %00000000
Tm0CounterMode:         EQU     %00010000
Tm0TimerMode:           EQU     %00000000
Tm0Src1AsCDB1:          EQU     %00000000
Tm0Src1AsVDD:           EQU     %00000100
Tm0Src1AsTimeBaseH:     EQU     %00001000
Tm0Src1AsCLK128:        EQU     %00001100
Tm0Src2AsCDB0:          EQU     %00000000
Tm0Src2As455K:          EQU     %00000001
Tm0Src2AsROsc:          EQU     %00000010
Tm0Src2AsCLK32:         EQU     %00000011

;-------------------------------------------------------------------------------
;  C32K : Crystal Oscillator Control (W)
;    b5 : Normal mode(0)/Test mode(1)
;    b7 : Enable(0)/Disable(1)
;-------------------------------------------------------------------------------
P_0CH_32OSC_Ctrl:         EQU     0CH
OSC32KTest:     EQU     %00100000
OSC32KWeak:     EQU     %01000000
OSC32KStrong:   EQU     %00000000
OSC32KDisable:  EQU     %10000000
OSC32KEnable:   EQU     %00000000

;-------------------------------------------------------------------------------
;  Ints : interrupt control register (R/W), write 0 to this register will make
;         the correspondence interrupt disable, and also clear interrupt harware
;         flag.
;         (R) for flags of correspondence interrupt is generated.
;    b0 : External interrupt source (PortCD.b1 <falling edge>)
;    b1 : CLK2K (32768 / 16)
;    b2 : CLK128 (32768 / 256)
;    b3 : TimeBaseL -> 2Hz/1Hz depend on P_0AH_TimeBaseCtrl
;    b4 : TimeBaseH -> 4Hz/8Hz/16Hz/32Hz depend on P_0AH_TimeBaseCtrl
;    d5 : Timer1 interrupt enable (can define as IRQ or NMI by bit7)
;    d6 : Timer0 interrupt enable (only IRQ can be configurated)
;    d7 : 0 -> Timer1 interrupt as NMI
;         1 -> Timer1 interrupt as IRQ
;-------------------------------------------------------------------------------
P_0DH_Ints:                 EQU     $0d

ExtIntEnable:           EQU     %00000001
CLK2KIntEnable:         EQU     %00000010
D_CLK2K:                EQU     %00000010
CLK128IntEnable:        EQU     %00000100
D_CLK128:               EQU     %00000100
TimeBaseLIntEnable:     EQU     %00001000
T2HzIntEnable           EQU     TimeBaseLIntEnable
TimeBaseHIntEnable:     EQU     %00010000
TimerXEnable:           EQU     %00010000
Timer1IntEnable:        EQU     %00100000
Timer0IntEnable:        EQU     %01000000
D_TimerCh0:             EQU     Timer1IntEnable
D_TimerCh1:             EQU     Timer0IntEnable
Timer1IntAsNMI:         EQU     %00000000
Timer1IntAsIRQ:         EQU     %10000000
P_1AH_InterruptClear:   EQU     $1A

;-------------------------------------------------------------------------------
; WDOGC: WatchDog counter reset (W)
;        This Watchdog clear port must be write druing 1 or 1/2 sec (TimeBaseL)
;        otherwise system will be reset (if CLK32 off, then off)
;-------------------------------------------------------------------------------
P_0FH_WDOGC:        EQU     0FH
P_13H_Timer1L:      EQU     13H
P_14H_Timer1H:      EQU     14H
P_15H_Timer1Load:   EQU     15H
P_10H_Timer0L:      EQU     10H
P_11H_Timer0H:      EQU     11H
P_12H_Timer0Load:   EQU     12H
P_1BH_PWMCh0_Ctrl:      EQU      $1B
PWMCh0Enable            EQU      %10000000
Ch0SpeechMode           EQU      %00000000
Ch0ToneMode             EQU      %01000000
Ch0ToPWMDirt            EQU      %00000000
Ch0ToPWMTimer0OverFlow  EQU      %00001000
Ch0ToPWMTimer1OverFlow  EQU      %00010000
Ch0ToPWMTimersOverFlow  EQU      %00011000

;-------------------------------------------------------------------------------
P_1CH_PWMCh1_Ctrl:      EQU      $1C

⌨️ 快捷键说明

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