You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
472 lines
16 KiB
472 lines
16 KiB
;---------------------------------------------------------------------------
|
|
;
|
|
;
|
|
;
|
|
;
|
|
; FILE NAME: C8051F330.INC
|
|
; TARGET MCUs: C8051F330, F331
|
|
; DESCRIPTION: Register/bit definitions for the C8051F330 product family.
|
|
;
|
|
; REVISION 1.0
|
|
;
|
|
;---------------------------------------------------------------------------
|
|
|
|
;REGISTER DEFINITIONS
|
|
;
|
|
P0 DATA 080H ; PORT 0 LATCH
|
|
SP DATA 081H ; STACK POINTER
|
|
DPL DATA 082H ; DATA POINTER LOW
|
|
DPH DATA 083H ; DATA POINTER HIGH
|
|
PCON DATA 087H ; POWER CONTROL
|
|
TCON DATA 088H ; TIMER/COUNTER CONTROL
|
|
TMOD DATA 089H ; TIMER/COUNTER MODE
|
|
TL0 DATA 08AH ; TIMER/COUNTER 0 LOW
|
|
TL1 DATA 08BH ; TIMER/COUNTER 1 LOW
|
|
TH0 DATA 08CH ; TIMER/COUNTER 0 HIGH
|
|
TH1 DATA 08DH ; TIMER/COUNTER 1 HIGH
|
|
CKCON DATA 08EH ; CLOCK CONTROL
|
|
PSCTL DATA 08FH ; PROGRAM STORE R/W CONTROL
|
|
P1 DATA 090H ; PORT 1 LATCH
|
|
TMR3CN DATA 091H ; TIMER/COUNTER 3 CONTROL
|
|
TMR3RLL DATA 092H ; TIMER/COUNTER 3 RELOAD LOW
|
|
TMR3RLH DATA 093H ; TIMER/COUNTER 3 RELOAD HIGH
|
|
TMR3L DATA 094H ; TIMER/COUNTER 3 LOW
|
|
TMR3H DATA 095H ; TIMER/COUNTER 3 HIGH
|
|
IDA0L DATA 096H ; CURRENT MODE DAC0 LOW
|
|
IDA0H DATA 097H ; CURRENT MODE DAC0 HIGH
|
|
SCON0 DATA 098H ; UART0 CONTROL
|
|
SBUF0 DATA 099H ; UART0 DATA BUFFER
|
|
CPT0CN DATA 09BH ; COMPARATOR0 CONTROL
|
|
CPT0MD DATA 09DH ; COMPARATOR0 MODE SELECTION
|
|
CPT0MX DATA 09FH ; COMPARATOR0 MUX SELECTION
|
|
P2 DATA 0A0H ; PORT 2 LATCH
|
|
SPI0CFG DATA 0A1H ; SPI CONFIGURATION
|
|
SPI0CKR DATA 0A2H ; SPI CLOCK RATE CONTROL
|
|
SPI0DAT DATA 0A3H ; SPI DATA
|
|
P0MDOUT DATA 0A4H ; PORT 0 OUTPUT MODE CONFIGURATION
|
|
P1MDOUT DATA 0A5H ; PORT 1 OUTPUT MODE CONFIGURATION
|
|
P2MDOUT DATA 0A6H ; PORT 2 OUTPUT MODE CONFIGURATION
|
|
IE DATA 0A8H ; INTERRUPT ENABLE
|
|
CLKSEL DATA 0A9H ; CLOCK SELECT
|
|
EMI0CN DATA 0AAH ; EXTERNAL MEMORY INTERFACE CONTROL
|
|
OSCXCN DATA 0B1H ; EXTERNAL OSCILLATOR CONTROL
|
|
OSCICN DATA 0B2H ; INTERNAL OSCILLATOR CONTROL
|
|
OSCICL DATA 0B3H ; INTERNAL OSCILLATOR CALIBRATION
|
|
FLSCL DATA 0B6H ; FLASH SCALE
|
|
FLKEY DATA 0B7H ; FLASH LOCK AND KEY
|
|
IP DATA 0B8H ; INTERRUPT PRIORITY
|
|
IDA0CN DATA 0B9H ; CURRENT MODE DAC0 CONTROL
|
|
AMX0N DATA 0BAH ; AMUX0 NEGATIVE CHANNEL SELECT
|
|
AMX0P DATA 0BBH ; AMUX0 POSITIVE CHANNEL SELECT
|
|
ADC0CF DATA 0BCH ; ADC0 CONFIGURATION
|
|
ADC0L DATA 0BDH ; ADC0 LOW
|
|
ADC0H DATA 0BEH ; ADC0 HIGH
|
|
SMB0CN DATA 0C0H ; SMBUS CONTROL
|
|
SMB0CF DATA 0C1H ; SMBUS CONFIGURATION
|
|
SMB0DAT DATA 0C2H ; SMBUS DATA
|
|
ADC0GTL DATA 0C3H ; ADC0 GREATER-THAN COMPARE LOW
|
|
ADC0GTH DATA 0C4H ; ADC0 GREATER-THAN COMPARE HIGH
|
|
ADC0LTL DATA 0C5H ; ADC0 LESS-THAN COMPARE WORD LOW
|
|
ADC0LTH DATA 0C6H ; ADC0 LESS-THAN COMPARE WORD HIGH
|
|
TMR2CN DATA 0C8H ; TIMER/COUNTER 2 CONTROL
|
|
TMR2RLL DATA 0CAH ; TIMER/COUNTER 2 RELOAD LOW
|
|
TMR2RLH DATA 0CBH ; TIMER/COUNTER 2 RELOAD HIGH
|
|
TMR2L DATA 0CCH ; TIMER/COUNTER 2 LOW
|
|
TMR2H DATA 0CDH ; TIMER/COUNTER 2 HIGH
|
|
PSW DATA 0D0H ; PROGRAM STATUS WORD
|
|
REF0CN DATA 0D1H ; VOLTAGE REFERENCE CONTROL
|
|
P0SKIP DATA 0D4H ; PORT 0 SKIP
|
|
P1SKIP DATA 0D5H ; PORT 1 SKIP
|
|
PCA0CN DATA 0D8H ; PCA CONTROL
|
|
PCA0MD DATA 0D9H ; PCA MODE
|
|
PCA0CPM0 DATA 0DAH ; PCA MODULE 0 MODE REGISTER
|
|
PCA0CPM1 DATA 0DBH ; PCA MODULE 1 MODE REGISTER
|
|
PCA0CPM2 DATA 0DCH ; PCA MODULE 2 MODE REGISTER
|
|
ACC DATA 0E0H ; ACCUMULATOR
|
|
XBR0 DATA 0E1H ; PORT I/O CROSSBAR CONTROL 0
|
|
XBR1 DATA 0E2H ; PORT I/O CROSSBAR CONTROL 1
|
|
OSCLCN DATA 0E3H ; LOW-FREQUENCY OSCILLATOR CONTROL
|
|
IT01CF DATA 0E4H ; INT0/INT1 CONFIGURATION
|
|
EIE1 DATA 0E6H ; EXTENDED INTERRUPT ENABLE 1
|
|
ADC0CN DATA 0E8H ; ADC0 CONTROL
|
|
PCA0CPL1 DATA 0E9H ; PCA CAPTURE 1 LOW
|
|
PCA0CPH1 DATA 0EAH ; PCA CAPTURE 1 HIGH
|
|
PCA0CPL2 DATA 0EBH ; PCA CAPTURE 2 LOW
|
|
PCA0CPH2 DATA 0ECH ; PCA CAPTURE 2 HIGH
|
|
RSTSRC DATA 0EFH ; RESET SOURCE CONFIGURATION/STATUS
|
|
B DATA 0F0H ; B REGISTER
|
|
P0MDIN DATA 0F1H ; PORT 0 INPUT MODE CONFIGURATION
|
|
P1MDIN DATA 0F2H ; PORT 1 INPUT MODE CONFIGURATION
|
|
EIP1 DATA 0F6H ; EXTENDED INTERRUPT PRIORITY 1
|
|
SPI0CN DATA 0F8H ; SPI CONTROL
|
|
PCA0L DATA 0F9H ; PCA COUNTER LOW
|
|
PCA0H DATA 0FAH ; PCA COUNTER HIGH
|
|
PCA0CPL0 DATA 0FBH ; PCA CAPTURE 0 LOW
|
|
PCA0CPH0 DATA 0FCH ; PCA CAPTURE 0 HIGH
|
|
VDM0CN DATA 0FFH ; VDD MONITOR CONTROL
|
|
|
|
;
|
|
;------------------------------------------------------------------------------
|
|
;BIT DEFINITIONS
|
|
;
|
|
; TCON 088H
|
|
TF1 BIT 08FH ; TIMER 1 OVERFLOW FLAG
|
|
TR1 BIT 08EH ; TIMER 1 ON/OFF CONTROL
|
|
TF0 BIT 08DH ; TIMER 0 OVERFLOW FLAG
|
|
TR0 BIT 08CH ; TIMER 0 ON/OFF CONTROL
|
|
IE1 BIT 08BH ; EXT. INTERRUPT 1 EDGE FLAG
|
|
IT1 BIT 08AH ; EXT. INTERRUPT 1 TYPE
|
|
IE0 BIT 089H ; EXT. INTERRUPT 0 EDGE FLAG
|
|
IT0 BIT 088H ; EXT. INTERRUPT 0 TYPE
|
|
|
|
; SCON0 098H
|
|
S0MODE BIT 09FH ; UART 0 MODE
|
|
MCE0 BIT 09DH ; UART 0 MCE
|
|
REN0 BIT 09CH ; UART 0 RX ENABLE
|
|
TB80 BIT 09BH ; UART 0 TX BIT 8
|
|
RB80 BIT 09AH ; UART 0 RX BIT 8
|
|
TI0 BIT 099H ; UART 0 TX INTERRUPT FLAG
|
|
RI0 BIT 098H ; UART 0 RX INTERRUPT FLAG
|
|
|
|
; IE 0A8H
|
|
EA BIT 0AFH ; GLOBAL INTERRUPT ENABLE
|
|
ESPI0 BIT 0AEH ; SPI0 INTERRUPT ENABLE
|
|
ET2 BIT 0ADH ; TIMER 2 INTERRUPT ENABLE
|
|
ES0 BIT 0ACH ; UART0 INTERRUPT ENABLE
|
|
ET1 BIT 0ABH ; TIMER 1 INTERRUPT ENABLE
|
|
EX1 BIT 0AAH ; EXTERNAL INTERRUPT 1 ENABLE
|
|
ET0 BIT 0A9H ; TIMER 0 INTERRUPT ENABLE
|
|
EX0 BIT 0A8H ; EXTERNAL INTERRUPT 0 ENABLE
|
|
|
|
; IP 0B8H
|
|
PSPI0 BIT 0BEH ; SPI0 PRIORITY
|
|
PT2 BIT 0BDH ; TIMER 2 PRIORITY
|
|
PS0 BIT 0BCH ; UART0 PRIORITY
|
|
PT1 BIT 0BBH ; TIMER 1 PRIORITY
|
|
PX1 BIT 0BAH ; EXTERNAL INTERRUPT 1 PRIORITY
|
|
PT0 BIT 0B9H ; TIMER 0 PRIORITY
|
|
PX0 BIT 0B8H ; EXTERNAL INTERRUPT 0 PRIORITY
|
|
|
|
; SMB0CN 0C0H
|
|
MASTER BIT 0C7H ; SMBUS 0 MASTER/SLAVE
|
|
TXMODE BIT 0C6H ; SMBUS 0 TRANSMIT MODE
|
|
STA BIT 0C5H ; SMBUS 0 START FLAG
|
|
STO BIT 0C4H ; SMBUS 0 STOP FLAG
|
|
ACKRQ BIT 0C3H ; SMBUS 0 ACKNOWLEDGE REQUEST
|
|
ARBLOST BIT 0C2H ; SMBUS 0 ARBITRATION LOST
|
|
ACK BIT 0C1H ; SMBUS 0 ACKNOWLEDGE FLAG
|
|
SI BIT 0C0H ; SMBUS 0 INTERRUPT PENDING FLAG
|
|
|
|
; TMR2CN 0C8H
|
|
TF2H BIT 0CFH ; TIMER 2 HIGH BYTE OVERFLOW FLAG
|
|
TF2L BIT 0CEH ; TIMER 2 LOW BYTE OVERFLOW FLAG
|
|
TF2LEN BIT 0CDH ; TIMER 2 LOW BYTE INTERRUPT ENABLE
|
|
TF2CEN BIT 0CCH ; TIMER 2 LFO CAPTURE ENABLE
|
|
T2SPLIT BIT 0CBH ; TIMER 2 SPLIT MODE ENABLE
|
|
TR2 BIT 0CAH ; TIMER 2 ON/OFF CONTROL
|
|
T2XCLK BIT 0C8H ; TIMER 2 EXTERNAL CLOCK SELECT
|
|
|
|
; PSW 0D0H
|
|
CY BIT 0D7H ; CARRY FLAG
|
|
AC BIT 0D6H ; AUXILIARY CARRY FLAG
|
|
F0 BIT 0D5H ; USER FLAG 0
|
|
RS1 BIT 0D4H ; REGISTER BANK SELECT 1
|
|
RS0 BIT 0D3H ; REGISTER BANK SELECT 0
|
|
OV BIT 0D2H ; OVERFLOW FLAG
|
|
F1 BIT 0D1H ; USER FLAG 1
|
|
P BIT 0D0H ; ACCUMULATOR PARITY FLAG
|
|
|
|
; PCA0CN 0D8H
|
|
CF BIT 0DFH ; PCA 0 COUNTER OVERFLOW FLAG
|
|
CR BIT 0DEH ; PCA 0 COUNTER RUN CONTROL BIT
|
|
CCF2 BIT 0DAH ; PCA 0 MODULE 2 INTERRUPT FLAG
|
|
CCF1 BIT 0D9H ; PCA 0 MODULE 1 INTERRUPT FLAG
|
|
CCF0 BIT 0D8H ; PCA 0 MODULE 0 INTERRUPT FLAG
|
|
; ADC 0 WINDOW INTERRUPT FLAG
|
|
; ADC0CN 0E8H
|
|
AD0EN BIT 0EFH ; ADC 0 ENABLE
|
|
AD0TM BIT 0EEH ; ADC 0 TRACK MODE
|
|
AD0INT BIT 0EDH ; ADC 0 EOC INTERRUPT FLAG
|
|
AD0BUSY BIT 0ECH ; ADC 0 BUSY FLAG
|
|
AD0WINT BIT 0EBH ; ADC 0 WINDOW INTERRUPT FLAG
|
|
AD0CM2 BIT 0EAH ; ADC 0 CONVERT START MODE BIT 2
|
|
AD0CM1 BIT 0E9H ; ADC 0 CONVERT START MODE BIT 1
|
|
AD0CM0 BIT 0E8H ; ADC 0 CONVERT START MODE BIT 0
|
|
|
|
; SPI0CN 0F8H
|
|
SPIF BIT 0FFH ; SPI 0 INTERRUPT FLAG
|
|
WCOL BIT 0FEH ; SPI 0 WRITE COLLISION FLAG
|
|
MODF BIT 0FDH ; SPI 0 MODE FAULT FLAG
|
|
RXOVRN BIT 0FCH ; SPI 0 RX OVERRUN FLAG
|
|
NSSMD1 BIT 0FBH ; SPI 0 SLAVE SELECT MODE 1
|
|
NSSMD0 BIT 0FAH ; SPI 0 SLAVE SELECT MODE 0
|
|
TXBMT BIT 0F9H ; SPI 0 TX BUFFER EMPTY FLAG
|
|
SPIEN BIT 0F8H ; SPI 0 SPI ENABLE
|
|
|
|
|
|
;**** **** **** **** ****
|
|
; Uses internal calibrated oscillator set to 24Mhz
|
|
;**** **** **** **** ****
|
|
|
|
;**** **** **** **** ****
|
|
; Constant definitions
|
|
;**** **** **** **** ****
|
|
CSEG AT 1A40h
|
|
Eep_ESC_Layout: DB "#XP18A# " ; ESC layout tag
|
|
CSEG AT 1A50h
|
|
Eep_ESC_MCU: DB "#BLHELI#F330# " ; Project and MCU tag (16 Bytes)
|
|
|
|
PORT3_EXIST EQU 0 ; Set to 1 if MCU has port3
|
|
COMP1_USED EQU 0 ; Set to 1 if MCU has comparator 1 and it is being used
|
|
DUAL_BEC_VOLTAGE EQU 0 ; Set to 1 if dual BEC voltage is supported
|
|
DAMPED_MODE_ENABLE EQU 1 ; Damped mode disabled
|
|
NFETON_DELAY EQU 1 ; Wait delay from pfets off to nfets on
|
|
PFETON_DELAY EQU 1 ; Wait delay from nfets off to pfets on
|
|
COMP_PWM_HIGH_ON_DELAY EQU 15 ; Wait delay from pwm on until comparator can be read (for high pwm frequency)
|
|
COMP_PWM_HIGH_OFF_DELAY EQU 20 ; Wait delay from pwm off until comparator can be read (for high pwm frequency)
|
|
COMP_PWM_LOW_ON_DELAY EQU 5 ; Wait delay from pwm on until comparator can be read (for low pwm frequency)
|
|
COMP_PWM_LOW_OFF_DELAY EQU 7 ; Wait delay from pwm off until comparator can be read (for low pwm frequency)
|
|
ADC_LIMIT_L EQU 80 ;改一节电池低压基值 2.8V 2013.05.31
|
|
;ADC_LIMIT_L EQU 85 ; Power supply measurement ADC value for which main motor power is limited (low byte)
|
|
ADC_LIMIT_H EQU 0 ; Power supply measurement ADC value for which main motor power is limited (2 MSBs)
|
|
TEMP_LIMIT EQU 74 ; 2013.8.20 温度140改120 Temperature measurement ADC value for which main motor power is limited (low byte, assuming high byte is 1)
|
|
TEMP_LIMIT_STEP EQU 5 ; Temperature measurement ADC value increment for which main motor power is further limited
|
|
MAIN_SPOOLUP_TIME EQU 10 ; Main motor spoolup time
|
|
|
|
;**** **** **** **** ****
|
|
; ESC specific defaults
|
|
;**** **** **** **** ****
|
|
DEFAULT_PGM_MAIN_STARTUP_PWR EQU 10 ; 1=0.031 2=0.047 3=0.063 4=0.094 5=0.125 6=0.188 7=0.25 8=0.38 9=0.50 10=0.75 11=1.00 12=1.25 13=1.50
|
|
DEFAULT_PGM_TAIL_STARTUP_PWR EQU 10 ; 1=0.031 2=0.047 3=0.063 4=0.094 5=0.125 6=0.188 7=0.25 8=0.38 9=0.50 10=0.75 11=1.00 12=1.25 13=1.50
|
|
DEFAULT_PGM_MULTI_STARTUP_PWR EQU 10 ; 1=0.031 2=0.047 3=0.063 4=0.094 5=0.125 6=0.188 7=0.25 8=0.38 9=0.50 10=0.75 11=1.00 12=1.25 13=1.50
|
|
DEFAULT_PGM_MAIN_STARTUP_METHOD EQU 2 ; 1=Stepped 2=Direct
|
|
DEFAULT_PGM_TAIL_STARTUP_METHOD EQU 2 ; 1=Stepped 2=Direct
|
|
DEFAULT_PGM_MULTI_STARTUP_METHOD EQU 2 ; 1=Stepped 2=Direct
|
|
|
|
|
|
;*********************
|
|
; PORT 0 definitions *
|
|
;*********************
|
|
Rcp_In EQU 7 ;i
|
|
Adc_Ip EQU 6 ;i
|
|
Mux_A EQU 5 ;i
|
|
; EQU 4 ;i
|
|
Mux_B EQU 3 ;i
|
|
Comp_Com EQU 2 ;i
|
|
Mux_C EQU 1 ;i
|
|
Vref EQU 0 ;i
|
|
|
|
P0_DIGITAL EQU NOT((1 SHL Mux_A)+(1 SHL Mux_B)+(1 SHL Mux_C)+(1 SHL Comp_Com)+(1 SHL Adc_Ip)+(1 SHL Vref))
|
|
P0_INIT EQU 0FFh
|
|
P0_PUSHPULL EQU 0
|
|
P0_SKIP EQU NOT(1 SHL Rcp_In) AND 0FFh
|
|
|
|
MACRO Read_Rcp_Int
|
|
mov A, P0
|
|
jnb Flags3.PGM_RCP_PWM_POL, ($+4) ; Is pwm polarity negative?
|
|
cpl A ; Yes - invert
|
|
ENDM
|
|
MACRO Rcp_Int_Enable
|
|
orl PCA0CPM0, #01h ; Interrupt enabled
|
|
ENDM
|
|
MACRO Rcp_Int_Disable
|
|
anl PCA0CPM0, #0FEh ; Interrupt disabled
|
|
ENDM
|
|
MACRO Rcp_Int_First
|
|
anl PCA0CPM0, #0CFh
|
|
jb Flags3.PGM_RCP_PWM_POL, ($+6) ; Is pwm polarity positive?
|
|
orl PCA0CPM0, #20h ; Capture rising edge
|
|
jnb Flags3.PGM_RCP_PWM_POL, ($+6) ; Is pwm polarity negative?
|
|
orl PCA0CPM0, #10h ; Capture falling edge
|
|
ENDM
|
|
MACRO Rcp_Int_Second
|
|
anl PCA0CPM0, #0CFh
|
|
jb Flags3.PGM_RCP_PWM_POL, ($+6) ; Is pwm polarity positive?
|
|
orl PCA0CPM0, #10h ; Capture falling edge
|
|
jnb Flags3.PGM_RCP_PWM_POL, ($+6) ; Is pwm polarity negative?
|
|
orl PCA0CPM0, #20h ; Capture rising edge
|
|
ENDM
|
|
MACRO Rcp_Clear_Int_Flag
|
|
clr CCF0 ; Clear interrupt flag
|
|
ENDM
|
|
|
|
|
|
;*********************
|
|
; PORT 1 definitions *
|
|
;*********************
|
|
DriverEn EQU 7 ;o At least on some escs. Others are hardwired
|
|
; EQU 6 ;i
|
|
AnFET EQU 2 ;o "nFETs" are really the high side drivers
|
|
BnFET EQU 1 ;o
|
|
CnFET EQU 0 ;o
|
|
ApFET EQU 5 ;o "pFETs" are really the low side drivers
|
|
BpFET EQU 4 ;o
|
|
CpFET EQU 3 ;o
|
|
|
|
P1_DIGITAL EQU (1 SHL AnFET)+(1 SHL BnFET)+(1 SHL CnFET)+(1 SHL ApFET)+(1 SHL BpFET)+(1 SHL CpFET)+(1 SHL DriverEn)
|
|
P1_INIT EQU 080h
|
|
P1_PUSHPULL EQU (1 SHL AnFET)+(1 SHL BnFET)+(1 SHL CnFET)+(1 SHL ApFET)+(1 SHL BpFET)+(1 SHL CpFET)+(1 SHL DriverEn)
|
|
P1_SKIP EQU 0
|
|
|
|
MACRO AnFET_on
|
|
mov A, Current_Pwm_Limited
|
|
jz ($+12)
|
|
jb Flags3.PGM_DIR_REV, ($+5)
|
|
setb P1.AnFET
|
|
jnb Flags3.PGM_DIR_REV, ($+5)
|
|
setb P1.CnFET
|
|
ENDM
|
|
MACRO AnFET_off
|
|
jb Flags3.PGM_DIR_REV, ($+5)
|
|
clr P1.AnFET
|
|
jnb Flags3.PGM_DIR_REV, ($+5)
|
|
clr P1.CnFET
|
|
ENDM
|
|
MACRO BnFET_on
|
|
mov A, Current_Pwm_Limited
|
|
jz ($+4)
|
|
setb P1.BnFET
|
|
ENDM
|
|
MACRO BnFET_off
|
|
clr P1.BnFET
|
|
ENDM
|
|
MACRO CnFET_on
|
|
mov A, Current_Pwm_Limited
|
|
jz ($+12)
|
|
jb Flags3.PGM_DIR_REV, ($+5)
|
|
setb P1.CnFET
|
|
jnb Flags3.PGM_DIR_REV, ($+5)
|
|
setb P1.AnFET
|
|
ENDM
|
|
MACRO CnFET_off
|
|
jb Flags3.PGM_DIR_REV, ($+5)
|
|
clr P1.CnFET
|
|
jnb Flags3.PGM_DIR_REV, ($+5)
|
|
clr P1.AnFET
|
|
ENDM
|
|
MACRO All_nFETs_Off
|
|
clr P1.AnFET
|
|
clr P1.BnFET
|
|
clr P1.CnFET
|
|
ENDM
|
|
MACRO All_nFETs_On
|
|
setb P1.AnFET
|
|
setb P1.BnFET
|
|
setb P1.CnFET
|
|
ENDM
|
|
MACRO A_B_nFETs_On
|
|
setb P1.AnFET
|
|
setb P1.BnFET
|
|
ENDM
|
|
|
|
MACRO ApFET_on
|
|
jb Flags3.PGM_DIR_REV, ($+5)
|
|
setb P1.ApFET
|
|
jnb Flags3.PGM_DIR_REV, ($+5)
|
|
setb P1.CpFET
|
|
ENDM
|
|
MACRO ApFET_off
|
|
jb Flags3.PGM_DIR_REV, ($+5)
|
|
clr P1.ApFET
|
|
jnb Flags3.PGM_DIR_REV, ($+5)
|
|
clr P1.CpFET
|
|
ENDM
|
|
MACRO BpFET_on
|
|
setb P1.BpFET
|
|
ENDM
|
|
MACRO BpFET_off
|
|
clr P1.BpFET
|
|
ENDM
|
|
MACRO CpFET_on
|
|
jb Flags3.PGM_DIR_REV, ($+5)
|
|
setb P1.CpFET
|
|
jnb Flags3.PGM_DIR_REV, ($+5)
|
|
setb P1.ApFET
|
|
ENDM
|
|
MACRO CpFET_off
|
|
jb Flags3.PGM_DIR_REV, ($+5)
|
|
clr P1.CpFET
|
|
jnb Flags3.PGM_DIR_REV, ($+5)
|
|
clr P1.ApFET
|
|
ENDM
|
|
MACRO All_pFETs_Off
|
|
clr P1.ApFET
|
|
clr P1.BpFET
|
|
clr P1.CpFET
|
|
ENDM
|
|
;MACRO All_pFETs_On
|
|
; setb P1.ApFET
|
|
; setb P1.BpFET
|
|
; setb P1.CpFET
|
|
;ENDM
|
|
|
|
MACRO Set_Comp_Phase_A
|
|
jb Flags3.PGM_DIR_REV, ($+6)
|
|
mov CPT0MX, #21h ; Set comparator multiplexer to phase A
|
|
jnb Flags3.PGM_DIR_REV, ($+6)
|
|
mov CPT0MX, #01h
|
|
ENDM
|
|
MACRO Set_Comp_Phase_B
|
|
mov CPT0MX, #11h ; Set comparator multiplexer to phase B
|
|
ENDM
|
|
MACRO Set_Comp_Phase_C
|
|
jb Flags3.PGM_DIR_REV, ($+6)
|
|
mov CPT0MX, #01h ; Set comparator multiplexer to phase C
|
|
jnb Flags3.PGM_DIR_REV, ($+6)
|
|
mov CPT0MX, #21h
|
|
ENDM
|
|
MACRO Read_Comp_Out
|
|
mov A, CPT0CN ; Read comparator output
|
|
cpl A
|
|
ENDM
|
|
|
|
|
|
;*********************
|
|
; PORT 2 definitions *
|
|
;*********************
|
|
DebugPin EQU 0 ;o
|
|
|
|
P2_PUSHPULL EQU (1 SHL DebugPin)
|
|
|
|
|
|
;**********************
|
|
; MCU specific macros *
|
|
;**********************
|
|
MACRO Interrupt_Table_Definition
|
|
CSEG AT 0 ; Code segment start
|
|
jmp reset
|
|
CSEG AT 0Bh ; Timer0 interrupt
|
|
jmp t0_int
|
|
CSEG AT 2Bh ; Timer2 interrupt
|
|
jmp t2_int
|
|
CSEG AT 5Bh ; PCA interrupt
|
|
jmp pca_int
|
|
CSEG AT 73h ; Timer3 interrupt
|
|
jmp t3_int
|
|
ENDM
|
|
|
|
MACRO Initialize_Adc
|
|
mov REF0CN, #0Eh ; Set vdd (3.3V) as reference. Enable temp sensor and bias
|
|
mov ADC0CF, #58h ; ADC clock 2MHz
|
|
mov AMX0P, #Adc_Ip ; Select positive input
|
|
mov AMX0N, #11h ; Select negative input as ground
|
|
mov ADC0CN, #80h ; ADC enabled
|
|
ENDM
|
|
MACRO Set_Adc_Ip_Volt
|
|
mov AMX0P, #Adc_Ip ; Select positive input 选择电压检测,P0.6为电压正输入
|
|
ENDM
|
|
MACRO Set_Adc_Ip_Temp
|
|
mov AMX0P, #10h ; Select temp sensor input
|
|
ENDM
|
|
MACRO Start_Adc
|
|
mov ADC0CN, #90h ; ADC start
|
|
ENDM
|
|
MACRO Get_Adc_Status
|
|
mov A, ADC0CN
|
|
ENDM
|
|
MACRO Read_Adc_Result
|
|
mov Temp1, ADC0L
|
|
mov Temp2, ADC0H
|
|
ENDM
|
|
MACRO Stop_Adc
|
|
ENDM
|