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

📄 inter.inc

📁 汽车遥控制的源代码.用的单片机是PIC16F72. 大批量生产.
💻 INC
字号:
; isr code can go here or be located as a call subroutine elsewhere
;**********************************************************
;interrupt codes
;**********************************************************
Interrupt_Begin:
;==========================================================
		
	banksel	PORTA
	
	btfss	INTCON,T0IF
	goto	TMR0_Interrupt_Over
	bcf	INTCON,T0IF
	
	movlw	d'184'		
	addwf	TMR0,F

	btfsc	RF_FRAME_GET		
	goto	Interrupt_Over

	btfsc	RF_FRAME_RECIEVE
	goto	Get_Frame_Begin	

	btfsc	RECIEVE_PORT	
	goto	Recieve_High
	
Recieve_Low:
	incf	Preamble_Low_Counter,F	
	bsf	PASS_LOW
	goto	Interrupt_Over		
Recieve_High:
	btfss	PASS_LOW
	goto	Recieve_High_Jump
	bcf	PASS_LOW
	
					
	movlw	d'3'
	subwf	Preamble_High_Counter,W
	skpc
	goto	Preamble_Counter_Clr
	
	movlw	d'9'
	subwf	Preamble_High_Counter,W
	skpnc
	goto	Preamble_Counter_Clr
	
	movlw	d'25'
	subwf	Preamble_Low_Counter,W
	skpnc
	goto	Preamble_Last_Get
	
	movlw	d'3'
	subwf	Preamble_Low_Counter,W
	skpc
	goto	Preamble_Counter_Clr
	
	movlw	d'9'
	subwf	Preamble_Low_Counter,W
	skpnc
	goto	Preamble_Counter_Clr
	
Preamble_Get:
	incf	Preamble_Counter,F	
	goto	Preamble_Clr		

Preamble_Last_Get:
	movlw	d'9'
	subwf	Preamble_Counter,W		
	skpc				
	goto	Preamble_Counter_Clr
	
	movlw	d'65'			
	movwf	Frame_Bit_Counter
	
	clrf	Preamble_Counter
	
	bsf	RF_FRAME_RECIEVE			
	
	clrf	Frame_Buff9
	clrf	Frame_Buff8
	clrf	Frame_Buff7
	clrf	Frame_Buff6
	clrf	Frame_Buff5
	clrf	Frame_Buff4
	clrf	Frame_Buff3
	clrf	Frame_Buff2
	clrf	Frame_Buff1
	
Preamble_Counter_Clr:
	clrf	Preamble_Counter
Preamble_Clr:
	clrf	Preamble_High_Counter
	clrf	Preamble_Low_Counter
Recieve_High_Jump:
	incf	Preamble_High_Counter,F
	goto	Interrupt_Over
	
;==========================================================

Get_Frame_Begin:
	btfsc	RECIEVE_PORT
	goto	Get_Frame_Port_High

Get_Frame_Port_Low:
	incf	Preamble_Low_Counter,F
	bsf	PASS_LOW
	goto	Get_Frame_Over
	
Get_Frame_Port_High:
	btfss	PASS_LOW
	goto	Get_Frame_High_Jump
					
	movf	Preamble_High_Counter,W
	addwf	Preamble_Low_Counter,F	
					
	movlw	d'12'		
	subwf	Preamble_Low_Counter,W
	skpc
	goto	Get_Frame_Over		
	
	movlw	d'22'
	subwf	Preamble_Low_Counter,W
	skpnc
	goto	Get_Frame_Over
	
	bcf	PASS_LOW		
	
	bcf	Frame_Buff9,7		
	movlw	d'8'			
	subwf	Preamble_High_Counter,W
	skpc				
	bsf	Frame_Buff9,7

	call	Recieve_Buff_RRF		

	clrf	Preamble_High_Counter
	clrf	Preamble_Low_Counter
	
	decfsz	Frame_Bit_Counter,F
	goto	Get_Frame_High_Jump
	
	call	Recieve_Buff_RRF
	call	Recieve_Buff_RRF
	call	Recieve_Buff_RRF
	call	Recieve_Buff_RRF
	call	Recieve_Buff_RRF
	call	Recieve_Buff_RRF	

	bcf	RF_FRAME_RECIEVE		
	
	bsf	RF_FRAME_GET		

Get_Frame_High_Jump:
	incf	Preamble_High_Counter,F	
	goto	Get_Frame_Over
	
Get_Frame_Over:			
	goto	Interrupt_Over
		

TMR0_Interrupt_Over:	
	
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^	

	btfss	PIR1,TMR1IF
	goto	TMR1_Interrupt_Over
	bcf	PIR1,TMR1IF
	
	movlw	d'158'
	addwf	TMR1H,F
	movlw	d'88'
	addwf	TMR1L,F			
					
	bsf	MAIN_CHECK		

	goto	Interrupt_Over
TMR1_Interrupt_Over:	

;==========================================================		
	
	movlw	b'11100000'		
	andwf	INTCON,F
	clrf	PIR1		
	
	bsf	STATUS,RP0
	movlw	b'00000011'		
	movwf	PIE1			
	bcf	STATUS,RP0

;**********************************************************
;Interrupt over
;**********************************************************

Interrupt_Over:
	return


;**********************************************************
;**********************************************************
Recieve_Buff_RRF:
	rrf	Frame_Buff9,F
	rrf	Frame_Buff8,F
	rrf	Frame_Buff7,F
	rrf	Frame_Buff6,F
	rrf	Frame_Buff5,F
	rrf	Frame_Buff4,F
	rrf	Frame_Buff3,F
	rrf	Frame_Buff2,F
	rrf	Frame_Buff1,F
	return

⌨️ 快捷键说明

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