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

📄 spmc65.inc

📁 实现红外接收功能。将红外遥控器发送过来的编码解析,并显示出来。
💻 INC
📖 第 1 页 / 共 5 页
字号:
	C_T18B_CAP:			EQU		%00110000	; Timer1 Function as  8 Bit Capture
	C_T18B_COMP:		EQU		%00100000	; Timer1 Function as  8	Bit Compare
	C_T18B_Timer:	  	EQU		%00010000	; Timer1 Function as  8 Bit Timer
;
P_TMR0_1_Ctrl1:			EQU     $12			; Timer0/1 control 1.
	C_T1EXT_EN:			EQU		%01110000	; External Event
	C_T1FCS_Div_512:	EQU		%01100000	; Timer1 Clock= FCS / 512
	C_T1FCS_Div_128:	EQU		%01010000	; Timer1 Clock= FCS / 128       
	C_T1FCS_Div_32:		EQU		%01000000	; Timer1 Clock= FCS / 32
	C_T1FCS_Div_8:		EQU		%00110000	; Timer1 Clock= FCS / 8	
	C_T1FCS_Div_4:		EQU		%00100000	; Timer1 Clock= FCS / 4
	C_T1FCS_Div_2:		EQU		%00010000	; Timer1 Clock= FCS / 2 	
	C_T1FCS_Div_1:		EQU		%00000000	; Timer1 Clock= FCS / 1	
;
P_TMR1_Data0:			EQU     $15			; Timer1 8-bit Counter register.(R)
P_TMR1_PreloadLo:		EQU     $15			; Timer1 8-bit preload register.(W)
P_TMR1_CompLo:			EQU		$15			; Timer1 compare low byte value.
P_TMR1_CapLo:			EQU     $15			; Timer1 capture low byte width value.
P_TMR1_PWM0:			EQU     $15			; Timer1 PWM peroid low byte register.
;
P_TMR1_Data1:			EQU     $16			; Timer1 16-bit Counter register.(R)
P_TMR1_PreloadHi:		EQU     $16			; Timer1 16-bit preload register.(W)
P_TMR1_CompHi:			EQU		$16			; Timer1 compare high byte value.
P_TMR1_CapHi:			EQU     $16			; Timer1 capture high byte width value.
P_TMR1_PWM1:			EQU     $16			; Timer1 PWM high byte register.
	C_TMR1_PWMDuty:		EQU		%11110000	; Timer1 PWM duty value.
	C_TMR1_PWMPeriod:	EQU		%00001111	; Timer1 PWM peroid value.
;
P_TMR1_PWM2:			EQU     $17			; Timer1 PWM duty low byte register.
;
;-----------------------------------------------------------------------------------------------------
P_AD_Ctrl0:				EQU     $28			; A/D converter control 0.
	C_AD_EN:			EQU		%10000000	; ADC enable control.(A)
	C_AD_VRT:			EQU		%01000000	; ADC bottom voltage source select bit.(A)									
	C_AD_CS_2:			EQU		%00000000	; 000=Fcpu/2.
	C_AD_CS_4:			EQU		%00000010   ; 001=Fcpu/4.
	C_AD_CS_8:			EQU		%00000100	; 010=Fcpu/8.
	C_AD_CS_16:			EQU		%00000110	; 011=Fcpu/16.
	C_AD_CS_32:			EQU		%00001000	; 100=Fcpu/32.
	C_AD_CS_64:			EQU		%00001010	; 101=Fcpu/64.
	C_AD_CS_128:		EQU		%00001100	; 110=Fcpu/128.
	C_AD_CS_256:		EQU		%00001110	; 111=Fcpu/256.	
	C_AD_RDY:			EQU		%00000001	; ADC status bit.(R)
	C_AD_Start:			EQU		%00000000	; ADC conversion start bit.(W)
;		
P_AD_Ctrl1:				EQU     $29			; A/D converter control 1.
	C_AD_Pin4:			EQU		%00010000	; Analog input : channel 4.
	C_AD_Pin5:			EQU		%00100000	; Analog input : channel 5.
	C_AD_Pin6:			EQU		%01000000	; Analog input : channel 6.
	C_AD_Pin7:			EQU		%10000000	; Analog input : channel 7.
;	
P_AD_Ctrl2:				EQU     $2A			; A/D converter control 2.
	C_AD_CE:			EQU		%10000000	; ADC power control bit.(A)
	C_AD_Ch4:			EQU		%00100000	; 0100:channel 4.
	C_AD_Ch5:			EQU		%00101000	; 0101:channel 5.
	C_AD_Ch6:			EQU		%00110000	; 0110:channel 6.
	C_AD_Ch7:			EQU		%00111000	; 0111:channel 7.
;		
P_AD_DataLo:			EQU     $2B			; Converted A/D data[1:0] low.(R)
P_AD_DataHi:			EQU     $2C			; Converted A/D data[9:2] hi.(R)
;
;-----------------------------------------------------------------------------------------------------
P_BUZ_Ctrl:				EQU     $2D			; Buzzer & Timer base Control.
											; Interval Timer Period selecttion bits.
	C_TBASE_Dis:     	EQU     %00000000	; Time Base disable
	C_TBASE_Div_128:	EQU    	%00010000	; Time Base Clk: Fto/2^7. 
	C_TBASE_Div_256: 	EQU		%00100000	; Time Base Clk: Fto/2^8. 
	C_TBASE_Div_512:  	EQU		%00110000	; Time Base Clk: Fto/2^9. 
	C_TBASE_Div_1k: 	EQU		%01000000	; Time Base Clk: Fto/2^10. 
	C_TBASE_Div_2k: 	EQU		%01010000	; Time Base Clk: Fto/2^11. 
	C_TBASE_Div_4k: 	EQU		%01100000	; Time Base Clk: Fto/2^12. 
	C_TBASE_Div_8k: 	EQU		%01110000	; Time Base Clk: Fto/2^13. 	
	C_TBASE_Div_16k: 	EQU		%10000000	; Time Base Clk: Fto/2^14.
	C_TBASE_Div_32k: 	EQU		%10010000	; Time Base Clk: Fto/2^15.
	C_TBASE_Div_64k: 	EQU		%10100000	; Time Base Clk: Fto/2^16.
	C_TBASE_Div_128k: 	EQU		%10110000	; Time Base Clk: Fto/2^17.
	C_TBASE_Div_256k: 	EQU		%11000000	; Time Base Clk: Fto/2^18.
	C_TBASE_Div_512k: 	EQU		%11010000	; Time Base Clk: Fto/2^19.
	C_TBASE_Div_2M: 	EQU		%11100000	; Time Base Clk: Fto/2^21.
	C_TBASE_Div_8M: 	EQU		%11110000	; Time Base Clk: Fto/2^23.
											; Buzzer frequency selecttion bits.
	C_BUZ_Dis:     		EQU     %00000000	; Buzzer disable
	C_BUZ_Div_64:		EQU		%00000001	; Buzzer:Fto/2^6.
	C_BUZ_Div_128:		EQU		%00000010	; Buzzer:Fto/2^7.
	C_BUZ_Div_256:		EQU		%00000011	; Buzzer:Fto/2^8.	
	C_BUZ_Div_512:		EQU		%00000100	; Buzzer:Fto/2^9.	
	C_BUZ_Div_1k:		EQU		%00000101	; Buzzer:Fto/2^10.	
	C_BUZ_Div_2k:		EQU		%00000110	; Buzzer:Fto/2^11.
	C_BUZ_Div_4k:		EQU		%00000111	; Buzzer:Fto/2^12.
	C_BUZ_Div_8k:		EQU		%00001000	; Buzzer:Fto/2^13.
	C_BUZ_Div_4:		EQU		%00001001	; Buzzer:Fto/2^2.
	C_BUZ_Div_8:		EQU		%00001010	; Buzzer:Fto/2^3.
	C_BUZ_Div_16:		EQU		%00001011	; Buzzer:Fto/2^4.
	C_BUZ_Div_32:		EQU		%00001100	; Buzzer:Fto/2^5.	
;
;-----------------------------------------------------------------------------------------------------
; Index Access Register
P_SYS_Ctrl:				EQU     $30			; System control.
	C_SCR_POR:			EQU		%10000000	; Power On Reset Flag.(A)
	C_SCR_ERST:			EQU		%01000000	; External Reset Flag.(A)
	C_SCR_LVR1:			EQU		%00100000	; Low Voltage Reset Flag1.(A)
	C_SCR_LVR0:			EQU		%00010000	; Low Voltage Reset Flag0.(A)
	C_SCR_WDTR:			EQU		%00001000	; WDT Reset Flag.(A)
	C_SCR_IAR:			EQU		%00000100	; Illegal Address Reset Flag.(A)
	C_SCR_IIR:			EQU		%00000001	; Illegal instruction reset.(A)
;
P_MODE_Ctrl:			EQU     $31			; Operation mode control register.(W)
	C_MODE_STOP:		EQU	    $5A			; Enter STOP mode.(W)
	C_MODE_HALT:		EQU		$A5			; Enter HALT mode.(W)
	C_MODE_Reset:		EQU	    $66			; Reset all of internal modules except CPU.(W)
;
P_WDT_Ctrl:				EQU     $32			; Watchdog control register.
	C_WDT_EN:			EQU		%10000000	; Watchdog enable bit in stop mode.(A)
											; Selection bits of watchdog interrupt rate.(A)
	C_WDT_RTO:			EQU		%00000000	; RTO from Timer0 is selected.
	C_WDT_Div_256:		EQU		%00010000	; WDI clock = /256.
	C_WDT_Div_512:		EQU		%00100000	; WDI clock = /512.
	C_WDT_Div_1024:		EQU		%00110000	; WDI clock = /1024.
	C_WDT_Div_2048:		EQU		%01000000	; WDI clock = /2048.
	C_WDT_Div_4096:		EQU		%01010000	; WDI clock = /4096.
	C_WDT_Div_8192:		EQU		%01100000	; WDI clock = /8192.
	C_WDT_Div_16384:	EQU		%01110000	; WDI clock = /16384.
;
P_IRQ_Opt1:				EQU     $34			; IRQ Option 1 register.
	C_IRQOpt1_IRQ1ES:	EQU		%00001000	; polarity Control of Interrupt Input on PC.(A)
	C_IRQOpt1_IRQM1:	EQU		%00000100	; polarity Control of Interrupt Input on PB1.(A)
	C_IRQOpt1_IRQ0ES:	EQU		%00000010	; polarity Control of Interrupt Input on PB0&PA[5:0].(A)		
	C_IRQOpt1_IRQM0:	EQU		%00000001	; IRQ Trig Mode on IRQ0.(A)
;
P_IO_Opt:				EQU     $35			; I/O slew rate control register.
	C_IO_SLOWE:			EQU		%00000001	; PB[7:6] slew rate enable selection.(A)
;
P_LVR_Opt:				EQU		$36			; LVR Option
	C_LVR_V40:			EQU		%00000001	; LVR level select bit.(A)
;		
;-----------------------------------------------------------------------------------------------------
P_CAP_Ctrl:				EQU     $58			; Capture control
	C_CAP_OPT:			EQU		%10000000	; Capture option control bit.(A)
	C_CAP1_ES:			EQU		%00000010	; Polarity control of capture1 interrupt. 
	C_CAP0_ES:			EQU		%00000001	; Polarity control of capture0 interrupt.
;	
;-----------------------------------------------------------------------------------------------------
P_IOA_Buf:				EQU     $59	
	C_IOA_Buf7:			EQU		%10000000	; PDA7: Data Control of PORTA bit7
	C_IOA_Buf6:			EQU		%01000000	; PDA6: Data Control of PORTA bit6
	C_IOA_Buf5:			EQU		%00100000	; PDA5: Data Control of PORTA bit5
	C_IOA_Buf4:			EQU		%00010000	; PDA4: Data Control of PORTA bit4
	C_IOA_Buf3:			EQU		%00001000	; PDA3: Data Control of PORTA bit3
	C_IOA_Buf2:			EQU		%00000100	; PDA2: Data Control of PORTA bit2
	C_IOA_Buf1:			EQU		%00000010	; PDA1: Data Control of PORTA bit1
	C_IOA_Buf0:			EQU		%00000001	; PDA0: Data Control of PORTA bit0	
P_IOB_Buf:				EQU     $5A           
	C_IOB_Buf6:			EQU		%01000000	; PDB6: Data Control of PORTB bit6
	C_IOB_Buf5:			EQU		%00100000	; PDB5: Data Control of PORTB bit5
	C_IOB_Buf4:			EQU		%00010000	; PDB4: Data Control of PORTB bit4
	C_IOB_Buf3:			EQU		%00001000	; PDB3: Data Control of PORTB bit3
	C_IOB_Buf1:			EQU		%00000010	; PDB1: Data Control of PORTB bit1
C_RAM_ADDR:				EQU		$60			; RAM Start Address
C_STACK_BOTTOM:			EQU		$0FF		; Stack Bottom Address 
	.ENDIF 
	
	
	.IFDEF	SPMC65P2204Ax	
;=======================================================================
;SPMC65P2204A Input/Output Ports and Data Direction Registers
;=======================================================================  
P_IOA_Data:				EQU		$00			; Port A data b0~b7(A)
P_IOB_Data:				EQU		$01			; Port B data b0~b7 except for PB2(A)
P_IOA_Dir:				EQU		$04     	; Port A direction control  b0~b7(W), 0=In, 1=Out
P_IOB_Dir:				EQU		$05    	 	; Port B direction control  b0~b7 except for PB2(A)
P_IOA_Attrib:			EQU		$08			; Port A attribute register b0~b7(W)
P_IOB_Attrib:			EQU		$09			; Port B attribute register b0~b7 except for PB2(A)
;
;-----------------------------------------------------------------------------------------------------
P_INT_Flag0:			EQU     $0C			; Interrupt Flag 0.(A)
	C_INT_ADIF: 		EQU     %10000000	; A/D INT flag bit.(A)
	C_INT_WDIF:			EQU     %01000000	; WDT INT flag bit.(A)
	C_INT_IRQ1F:		EQU     %00000010	; IRQ1 INT flag bit.(A)
	C_INT_IRQ0F:		EQU     %00000001	; IRQ0 INT flag bit.(A)
;
P_INT_Ctrl0:			EQU     $0D			; Interrupt control 0.(A)
	C_INT_ADIE:			EQU     %10000000	; A/D INT enable bit.(A)
	C_INT_WDIE:			EQU     %01000000	; WDT INT enable bit.(A)
	C_INT_IRQ1E:		EQU     %00000010	; IRQ1 INT enable bit.(A)
	C_INT_IRQ0E:		EQU     %00000001	; IRQ0 INT enable bit.(A)
;	
P_INT_Flag1:			EQU     $0E			; Interrupt flag 1.
	C_INT_CAP1IF:		EQU     %10000000	; Capture1 INT flag bit.(A)
	C_INT_CAP0IF:		EQU     %01000000	; Capture0 INT flag bit.(A)
	C_INT_T1OIF:		EQU     %00000010	; Timer1 overflow INT flag bit.(A)
	C_INT_T0OIF:		EQU     %00000001	; Timer0 overflow INT flag bit.(A)	
;	
P_INT_Ctrl1:			EQU     $0F			; Interrupt control 1.
	C_INT_CAP1IE:		EQU     %10000000	; Capture1 INT enable bit.(A)
	C_INT_CAP0IE:		EQU     %01000000	; Capture0 INT enable bit.(A)
	C_INT_T1OIE:		EQU     %00000010	; Timer1 overflow INT enable bit.(A)
	C_INT_T0OIE:		EQU     %00000001	; Timer0 overflow INT enable bit.(A)	
;
P_INT_Flag2:			EQU     $26			; Interrupt flag 2.	
	C_INT_TVALIF:		EQU     %00100000	; Timer Base interrupt flag.	
;	
P_INT_Ctrl2:			EQU     $27			; Interrupt control 2.	
	C_INT_TVALIE:		EQU     %00100000 	; Timer Base interrupt enable bit.
;
P_WDT_Clr:				EQU     $10			; Watchdog clear register.(W), $55= clear
	C_WDT_Clr:			EQU		$55			; Write '55' to clear this register.
;
;-----------------------------------------------------------------------------------------------------
P_TMR0_1_Ctrl0:			EQU     $11			; Timer0/1 control 0.
	C_T112B_PWM:		EQU		%01110000	; Timer1 Function as 12 Bit PWM
	C_T116B_CAP:		EQU		%01100000	; Timer1 Function as 16 Bit Capture
	C_T116B_COMP:		EQU		%01010000	; Timer1 Function as 16 Bit Compare
	C_T116B_Timer: 		EQU		%01000000	; Timer1 Function as 16 Bit Timer
	C_T18B_CAP:			EQU		%00110000	; Timer1 Function as  8 Bit Capture
	C_T18B_COMP:		EQU		%00100000	; Timer1 Function as  8	Bit Compare
	C_T18B_Timer:	  	EQU		%00010000	; Timer1 Function as  8 Bit Timer
	C_T08B_CAP:			EQU		%00000011	; Timer0 Function as  8 Bit Capture
	C_T08B_COMP:		EQU		%00000010	; Timer0 Function as  8	Bit Compare
	C_T08B_Timer:  		EQU		%00000001	; Timer0 Function as  8 Bit Timer
;
P_TMR0_1_Ctrl1:			EQU     $12			; Timer0/1 control 1.
	C_T1EXT_EN:			EQU		%01110000	; External Event
	C_T1FCS_Div_512:	EQU		%01100000	; Timer1 Clock= FCS / 512
	C_T1FCS_Div_128:	EQU		%01010000	; Timer1 Clock= FCS / 128       
	C_T1FCS_Div_32:		EQU		%01000000	; Timer1 Clock= FCS / 32
	C_T1FCS_Div_8:		EQU		%00110000	; Timer1 Clock= FCS / 8	
	C_T1FCS_Div_4:		EQU		%00100000	; Timer1 Clock= FCS / 4
	C_T1FCS_Div_2:		EQU		%00010000	; Timer1 Clock= FCS / 2 	
	C_T1FCS_Div_1:		EQU		%00000000	; Timer1 Clock= FCS / 1	
	C_T0EXT_EN:			EQU		%00000111	; External Event
	C_T0FCS_Div_512:	EQU		%00000110	; Timer0 Clock= FCS / 512
	C_T0FCS_Div_128:	EQU		%00000101	; Timer0 Clock= FCS / 128       
	C_T0FCS_Div_32:		EQU		%00000100	; Timer0 Clock= FCS / 32
	C_T0FCS_Div_8:		EQU		%00000011	; Timer0 Clock= FCS / 8	
	C_T0FCS_Div_4:		EQU		%000

⌨️ 快捷键说明

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