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

📄 intserv.c

📁 Universal cable, USB和RJ45头的Universal电缆的固件代码
💻 C
字号:

/*
The file is used to interrup service for uC pic16f688
There are two functions: 
void ini_chip(void)			:Initialize all variables and used registers for uc pic16f688
interrupt void timer1_isr(void) @ 0x04	:Timer1 int service subroutine
*/
#include <htc.h>
#include <pic16f688.h>
#include "IntServ.h"
#include "Type.h"

//extern ADCs adc[5];

extern unsigned int Time10ms;//10ms counter
extern int adc[5];

void ini_chip(void)
{char i=0,j=0;
//config osc
	OSCTUNE=0x0F;		//select internal clock MAX : 0b0000,1111
	OSCCON=0x70;		//switch to system clock 8MHz 


//config porta and portc
	TRISA=0xCF;	//PORTA: HIGH: set  triple input, LOW: SET OUTPUT;RA4&RA5 is set I/O PIN
	RA5=1;				//Close Voltage output:Chip SP2525A
	OPTION=OPTION&0x7F; //bit7(RAPU)=0 enable weak pull-up to porta
	WPUA=WPUA|0xff;//PORTA: Weak Pull-up Register bits except bit3

	ANSEL=0xF4;		//PORTC Tri-State Control bits,set pin as ADC INPUT
					//AN4-AN7(RC0-RC3 PIN) ANOLOG INPUT(RC0 IS AD2,RA2 is AD1)
	ADCON1=0x00;	//x11 = FRC,system internal clock about 500khz
					//000 = FRC,system internal clock/2=4MHZ
	ADCON0=0x00;
	TRISC=0x0F;		//PORTC: 0 = Digital Output; 1= anolog I/0 input
 //AD


//ini timer1 config
	T1CON=0x00;//bit TMR1ON(T1CON^0);start bit
	CMCON1=0x00;//not need comparer
	GIE=0;PEIE=0;//global int enable;bit 7 and 6 of INTCON
	TMR1IE=0;//bit TMR1IE (PIE1^0),overflow int enable
	TMR1IF=0;//bit TMR1IF (PIR1^0),overflow flag
//Timer1 config

//WDT config
	PSA=0;// Prescale PS For timer0
	WDTCON=0x16;//Prescale WDTPS<3:0> for WDT: about 2.114s
//WDT config

	for(i=0;i<5;i++)
		{
		adc[i]=0;
		}
}
void delay(unsigned int icount)
{int i=0,j=0;
	
//  for(i=0;i<icount;i++)
	for(j=0;j<icount;j++)
	;
}
/* service routine for timer1 interrupt */
interrupt void 
timer1_isr(void) @ 0x04		//Time10ms
{
	GIE=0;					//Diable global INT flag
	TMR1ON=0;				//Diable Timer1
	if(TMR1IF)				//Overflow availabe
	{
		TMR1IF=0;			//Clear Overflow flag
		Time10ms++;			//10ms timer
					
		TMR1L=0x00;//low byte;		reload counter of timer1		
		TMR1H=0xAA;//high byte;
	}
	TMR1ON=1;				//Enable Timer1
	GIE=1;					//enable global INT flag


}//10ms int for timer1

/*
	TMR1L=0xef;//low byte
	TMR1H=0xd8;//high byte;//clock=10,000,time=4.5ms;

	TMR1L=0x00;//low byte
	TMR1H=0xAA;//high byte;//clock=22,016,time=10ms;

*/

void Start_Timer1(void)
{
//Timer1 start
	TMR1L=0x00;//low byte
	TMR1H=0xAA;//high byte;

	TMR1ON=1;//bit TMR1ON of T1CON
	TMR1IE=1;TMR1IF=0;//bit TMR1IE of PIE1,overflow int enable
	GIE=1;PEIE=1;//global int enable;bit 7 of INTCON
	Time10ms=0;
}

void Stop_Timer1(void)
{
//Timer1 stop
	GIE=0;PEIE=0;
	TMR1ON=0;
	TMR1IE=0;
	TMR1IF=0;
	Time10ms=0;
}

⌨️ 快捷键说明

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