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

📄 mcp250xx.inc

📁 PIC ASM TOOL MPASMWin5.14
💻 INC
📖 第 1 页 / 共 2 页
字号:
; Call this macro to set the latch values for the digital I/O's.  Macro
; parameters are:
;
;	B6		enter 0 or 1 for pin GP6
;	B5		enter 0 or 1 for pin GP5
;	B4		enter 0 or 1 for pin GP4
;	B3		enter 0 or 1 for pin GP3
;	B2		enter 0 or 1 for pin GP2
;	B1		enter 0 or 1 for pin GP1
;	B0		enter 0 or 1 for pin GP0

IO_LATCH	MACRO	B6, B5, B4, B3, B2, B1, B0

TEMP	SET	(((((B6 << 1) + B5) << 1) + B4) << 1) + B3
GPLAT	SET	(((((TEMP << 1) + B2) << 1) + B1) << 1) + B0
	ENDM

;*******************************************************************************
; IO_FUNCTION
;
; Call this macro to set the pin function to analog or digital.  Macro
; parameters are:
;
;	B3		enter ANALOG or DIGITAL for pin AN3
;	B2		enter ANALOG or DIGITAL for pin AN2
;	B1		enter ANALOG or DIGITAL for pin AN1
;	B0		enter ANALOG or DIGITAL for pin AN0

IO_FUNCTION	MACRO	B3, B2, B1, B0

  IF DEVICE_NUM == MCP2502X
ADCON1  SET 0x0F
  ELSE 
ADCON1	SET	(ADCON1 & 0xF0) | (((((B3 << 1) + B2) << 1) + B1) << 1) + B0
  ENDIF
	ENDM

;*******************************************************************************
; IO_XMIT_ON_CHANGE
;
; Call this macro to set the Transmit on Change for each pin.  Macro parameters
; are:
;
;	B7		enter DISABLE, IO_RISE, or IO_FALL for pin GP7
;	B6		enter DISABLE, IO_RISE, or IO_FALL for pin GP6
;	B5		enter DISABLE, IO_RISE, or IO_FALL for pin GP5
;	B4		enter DISABLE, IO_RISE, or IO_FALL for pin GP4
;	B3		enter DISABLE, IO_RISE, or IO_FALL for pin GP3
;	B2		enter DISABLE, IO_RISE, or IO_FALL for pin GP2
;	B1		enter DISABLE, IO_RISE, or IO_FALL for pin GP1
;	B0		enter DISABLE, IO_RISE, or IO_FALL for pin GP0

IO_XMIT_ON_CHANGE	MACRO	B7, B6, B5, B4, B3, B2, B1, B0

TEMP	SET	((((((B7&1) << 1) + (B6&1)) << 1) + (B5&1)) << 1) + (B4&1)
IOINTEN	SET	(((((((TEMP << 1) + (B3&1)) << 1) + (B2&1)) << 1) + (B1&1)) << 1) + (B0&1)
TEMP	SET	((((((B7&2) <<1) + (B6&2)) << 1) + (B5&2)) << 1) + (B4&2)
IOINTPO	SET	(((((((TEMP << 1) + (B3&2)) << 1) + (B2&2)) << 1) + (B1&2)) << 1) + (B0&2)
	ENDM

;*******************************************************************************
; IO_WEAK_PULLUPS
;
; Call this macro to configure weak pull-ups.  Macro parameters are:
;
;	MODE		enter ENABLED or DISABLED

IO_WEAK_PULLUPS	MACRO	MODE

  IF MODE == 0
OPTREG1	SET	(OPTREG1 & 0x7F) | 0x80
  ELSE
OPTREG1	SET	(OPTREG1 & 0x7F)
  ENDIF
	ENDM

;*******************************************************************************
; PWM1
;
; Call this macro to configure PWM1.  Macro parameters are:
;
;	TMRON		enter ENABLED or DISABLED
;	PRESCALER	Timer Prescaler; enter 1, 4, or 0x10
;	PERIOD		PWM Period; enter a value from 0 to 0xFF
;	DUTY_CYCLE	PWM Duty Cycle; enter a value from 0 to 0x3FF

PWM1	MACRO	TMRON, PRESCALER, PERIOD, DUTY_CYCLE

	IF PRESCALER == 0x10
TEMP	SET	0x20
	ELSE
	IF PRESCALER == 4
TEMP	SET	0x10
	ELSE
TEMP	SET	0x00
	ENDIF
	ENDIF
T1CON	SET	(TMRON << 7) | TEMP | (DUTY_CYCLE & 0x03)
PR1	SET	PERIOD
PWM1DCH	SET	DUTY_CYCLE >> 2
	ENDM

;*******************************************************************************
; PWM2
;
; Call this macro to configure PWM2.  Macro parameters are:
;
;	TMRON		enter ENABLED or DISABLED
;	PRESCALER	Timer Prescaler; enter 1, 4, or 0x10
;	PERIOD		PWM Period; enter a value from 0 to 0xFF
;	DUTY_CYCLE	PWM Duty Cycle; enter a value from 0 to 0x3FF

PWM2	MACRO	TMRON, PRESCALER, PERIOD, DUTY_CYCLE

	IF PRESCALER == 0x10
TEMP	SET	0x20
	ELSE
	IF PRESCALER == 4
TEMP	SET	0x10
	ELSE
TEMP	SET	0x00
	ENDIF
	ENDIF
T2CON	SET	(TMRON << 7) | TEMP | (DUTY_CYCLE & 0x03)
PR2	SET	PERIOD
PWM2DCH	SET	DUTY_CYCLE >> 2
	ENDM


;*******************************************************************************
; ADC_SETUP
;
; Call this macro to set up the ADC.  Macro parameters are:
;
;	MODE		enter ENABLED or DISABLED
;	SEQ_DELAY	Minimum Sequence Delay; enter TOSC32, TOSC64, TOSC128,
;				TOSC256, TOSC512, TOSC1024, TOSC2048, or TOSC4096
;	CLOCK_SOURCE	Clock Source; enter ADC_FOSC_2, ADC_FOSC_8, ADC_FOSC_32,
;				or ADC_FRC
;	VREF_POS	Vref+ Source; enter VDD or EXTERNAL
;	VREF_NEG	Vref- Source; enter VSS or EXTERNAL
;	TIME		Acquisition Time; enter X1_64TOSC, X2_64TOSC, X4_64TOSC,
;				or X8_64TOSC
;
; Note: Be sure to call the macro IO_FUNCTION to configure the pins as
;       analog or digital.

ADC_SETUP	MACRO	MODE, SEQ_DELAY, CLOCK_SOURCE, VREF_POS, VREF_NEG, TIME
  IF DEVICE_NUM == MCP2502X
ADCON0  SET 0x00
ADCON1  SET 0x0F
OPTREG1	SET	(OPTREG1 & 0xFC)
  ELSE
ADCON0	SET	(MODE << 7) + SEQ_DELAY
TEMP	SET	CLOCK_SOURCE + (VREF_NEG << 5) + (VREF_POS << 4)
ADCON1	SET	(ADCON1 & 0x0F) | TEMP
OPTREG1	SET	(OPTREG1 & 0xFC) | TIME
  ENDIF
	ENDM

;*******************************************************************************
; ADC_COMPARES
;
; Call this macro to set up the ADC compare values.  Macro parameters are:
;
;	CHANNEL0	enter a value from 0 to 0x3FF
;	CHANNEL1	enter a value from 0 to 0x3FF
;	CHANNEL2	enter a value from 0 to 0x3FF
;	CHANNEL3	enter a value from 0 to 0x3FF

ADC_COMPARES	MACRO	CHANNEL0, CHANNEL1, CHANNEL2, CHANNEL3

  IF DEVICE_NUM == MCP2502X
ADCMP0L	SET	0x00
ADCMP0H	SET	0x00
ADCMP1L	SET	0x00
ADCMP1H	SET	0x00
ADCMP2L	SET	0x00
ADCMP2H	SET	0x00
ADCMP3L	SET	0x00
ADCMP3H	SET	0x00
  ELSE ;IF DEVICE_NUM == MCP2505X
ADCMP0L	SET	(CHANNEL0 & 0x003) << 6
ADCMP0H	SET	(CHANNEL0 & 0x3FC) >> 2
ADCMP1L	SET	(CHANNEL1 & 0x003) << 6
ADCMP1H	SET	(CHANNEL1 & 0x3FC) >> 2
ADCMP2L	SET	(CHANNEL2 & 0x003) << 6
ADCMP2H	SET	(CHANNEL2 & 0x3FC) >> 2
ADCMP3L	SET	(CHANNEL3 & 0x003) << 6
ADCMP3H	SET	(CHANNEL3 & 0x3FC) >> 2
  ENDIF
	ENDM

;*******************************************************************************
; SET_USER#
;
; Call these macros to set the user data values.  Macro parameters are:
;
;	VALUE	enter a value from 0 to 0xFF

SET_USER0	MACRO	VALUE
USER0	SET	VALUE
	ENDM

SET_USER1	MACRO	VALUE
USER1	SET	VALUE
	ENDM

SET_USER2	MACRO	VALUE
USER2	SET	VALUE
	ENDM

SET_USER3	MACRO	VALUE
USER3	SET	VALUE
	ENDM

SET_USER4	MACRO	VALUE
USER4	SET	VALUE
	ENDM

SET_USER5	MACRO	VALUE
USER5	SET	VALUE
	ENDM

SET_USER6	MACRO	VALUE
USER6	SET	VALUE
	ENDM

SET_USER7	MACRO	VALUE
USER7	SET	VALUE
	ENDM

SET_USER8	MACRO	VALUE
USER8	SET	VALUE
	ENDM

SET_USER9	MACRO	VALUE
USER9	SET	VALUE
	ENDM

SET_USERA	MACRO	VALUE
USERA	SET	VALUE
	ENDM

SET_USERB	MACRO	VALUE
USERB	SET	VALUE
	ENDM

SET_USERC	MACRO	VALUE
USERC	SET	VALUE
	ENDM

SET_USERD	MACRO	VALUE
USERD	SET	VALUE
	ENDM

SET_USERE	MACRO	VALUE
USERE	SET	VALUE
	ENDM

SET_USERF	MACRO	VALUE
USERF	SET	VALUE
	ENDM

;*******************************************************************************
; GENERATE
;
; Call this macro after using all of the other macros to configure the device.
; This macro will actually generate the hex file output to configure the
; device using a Device Programmer.  This macro has no parameters.

GENERATE	MACRO

TEMP	SET	IOINTEN + IOINTPO + GPLAT + RES_03 + OPTREG1 + T1CON
TEMP	SET	TEMP + T2CON + PR1 + PR2 + PWM1DCH + PWM2DCH + CNF1
TEMP	SET	TEMP + CNF2 + CNF3 + ADCON0 + ADCON1 + STCON + OPTREG2
TEMP	SET	TEMP + RES_12 + RES_13 + RXMSIDH + RXMSIDL + RXMEID8
TEMP	SET	TEMP + RXMEID0 + RXF0SIDH + RXF0SIDL + RXF0EID8 + RXF0EID0
TEMP	SET	TEMP + RXF1SIDH + RXF1SIDL + RXF1EID8 + RXF1EID0 + TXID0SIDH
TEMP	SET	TEMP + TXID0SIDL + TXID0EID8 + TXID0EID0 + TXID1SIDH
TEMP	SET	TEMP + TXID1SIDL + TXID1EID8 + TXID1EID0 + TXID2SIDH
TEMP	SET	TEMP + TXID2SIDL + TXID2EID8 + TXID2EID0 + ADCMP3H + ADCMP3L
TEMP	SET	TEMP + ADCMP2H + ADCMP2L + ADCMP1H + ADCMP1L + ADCMP0H + ADCMP0L
TEMP	SET	TEMP + GPDDR + USER0 + USER1 + USER2 + USER3 + USER4 + USER5
TEMP	SET	TEMP + USER6 + USER7 + USER8 + USER9 + USERA + USERB + USERC
TEMP	SET	TEMP + USERD + USERE + USERF
CRCSUM	SET	(-TEMP) & 0xFF

;	EXPAND
	DATA	0x34 | ((IOINTEN & 0xFF) << 8)
	DATA	0x34 | ((IOINTPO & 0xFF) << 8)
	DATA	0x34 | ((GPLAT & 0xFF) << 8)
	DATA	0x34 | ((RES_03 & 0xFF) << 8)
	DATA	0x34 | ((OPTREG1 & 0xFF) << 8)
	DATA	0x34 | ((T1CON & 0xFF) << 8)
	DATA	0x34 | ((T2CON & 0xFF) << 8)
	DATA	0x34 | ((PR1 & 0xFF) << 8)
	DATA	0x34 | ((PR2 & 0xFF) << 8)
	DATA	0x34 | ((PWM1DCH & 0xFF) << 8)
	DATA	0x34 | ((PWM2DCH & 0xFF) << 8)
	DATA	0x34 | ((CNF1 & 0xFF) << 8)
	DATA	0x34 | ((CNF2 & 0xFF) << 8)
	DATA	0x34 | ((CNF3 & 0xFF) << 8)
	DATA	0x34 | ((ADCON0 & 0xFF) << 8)
	DATA	0x34 | ((ADCON1 & 0xFF) << 8)
	DATA	0x34 | ((STCON & 0xFF) << 8)
	DATA	0x34 | ((OPTREG2 & 0xFF) << 8)
	DATA	0x34 | ((RES_12 & 0xFF) << 8)
	DATA	0x34 | ((RES_13 & 0xFF) << 8)
	DATA	0x34 | ((RXMSIDH & 0xFF) << 8)
	DATA	0x34 | ((RXMSIDL & 0xFF) << 8)
	DATA	0x34 | ((RXMEID8 & 0xFF) << 8)
	DATA	0x34 | ((RXMEID0 & 0xFF) << 8)
	DATA	0x34 | ((RXF0SIDH & 0xFF) << 8)
	DATA	0x34 | ((RXF0SIDL & 0xFF) << 8)
	DATA	0x34 | ((RXF0EID8 & 0xFF) << 8)
	DATA	0x34 | ((RXF0EID0 & 0xFF) << 8)
	DATA	0x34 | ((RXF1SIDH & 0xFF) << 8)
	DATA	0x34 | ((RXF1SIDL & 0xFF) << 8)
	DATA	0x34 | ((RXF1EID8 & 0xFF) << 8)
	DATA	0x34 | ((RXF1EID0 & 0xFF) << 8)
	DATA	0x34 | ((TXID0SIDH & 0xFF) << 8)
	DATA	0x34 | ((TXID0SIDL & 0xFF) << 8)
	DATA	0x34 | ((TXID0EID8 & 0xFF) << 8)
	DATA	0x34 | ((TXID0EID0 & 0xFF) << 8)
	DATA	0x34 | ((TXID1SIDH & 0xFF) << 8)
	DATA	0x34 | ((TXID1SIDL & 0xFF) << 8)
	DATA	0x34 | ((TXID1EID8 & 0xFF) << 8)
	DATA	0x34 | ((TXID1EID0 & 0xFF) << 8)
	DATA	0x34 | ((TXID2SIDH & 0xFF) << 8)
	DATA	0x34 | ((TXID2SIDL & 0xFF) << 8)
	DATA	0x34 | ((TXID2EID8 & 0xFF) << 8)
	DATA	0x34 | ((TXID2EID0 & 0xFF) << 8)
	DATA	0x34 | ((ADCMP3H & 0xFF) << 8)
	DATA	0x34 | ((ADCMP3L & 0xFF) << 8)
	DATA	0x34 | ((ADCMP2H & 0xFF) << 8)
	DATA	0x34 | ((ADCMP2L & 0xFF) << 8)
	DATA	0x34 | ((ADCMP1H & 0xFF) << 8)
	DATA	0x34 | ((ADCMP1L & 0xFF) << 8)
	DATA	0x34 | ((ADCMP0H & 0xFF) << 8)
	DATA	0x34 | ((ADCMP0L & 0xFF) << 8)
	DATA	0x34 | ((GPDDR & 0xFF) << 8)
	DATA	0x34 | ((USER0 & 0xFF) << 8)
	DATA	0x34 | ((USER1 & 0xFF) << 8)
	DATA	0x34 | ((USER2 & 0xFF) << 8)
	DATA	0x34 | ((USER3 & 0xFF) << 8)
	DATA	0x34 | ((USER4 & 0xFF) << 8)
	DATA	0x34 | ((USER5 & 0xFF) << 8)
	DATA	0x34 | ((USER6 & 0xFF) << 8)
	DATA	0x34 | ((USER7 & 0xFF) << 8)
	DATA	0x34 | ((USER8 & 0xFF) << 8)
	DATA	0x34 | ((USER9 & 0xFF) << 8)
	DATA	0x34 | ((USERA & 0xFF) << 8)
	DATA	0x34 | ((USERB & 0xFF) << 8)
	DATA	0x34 | ((USERC & 0xFF) << 8)
	DATA	0x34 | ((USERD & 0xFF) << 8)
	DATA	0x34 | ((USERE & 0xFF) << 8)
	DATA	0x34 | ((USERF & 0xFF) << 8)
	DATA	0x34 | ((CRCSUM & 0xFF) << 8)

	ENDM

	LIST

































































⌨️ 快捷键说明

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