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

📄 intserv.lst

📁 Universal cable, USB和RJ45头的Universal电缆的固件代码
💻 LST
字号:
     1: 
     2: /*
     3: The file is used to interrup service for uC pic16f688
     4: There are two functions: 
     5: void ini_chip(void)                     :Initialize all variables and used registers for uc pic16f688
     6: interrupt void timer1_isr(void) @ 0x04  :Timer1 int service subroutine
     7: */
     8: #include <htc.h>
     9: #include <pic16f688.h>
    10: #include "IntServ.h"
    11: #include "Type.h"
    12: 
    13: //extern ADCs adc[5];
    14: 
    15: extern unsigned int Time10ms;//10ms counter
    16: extern int adc[5];
    17: 
    18: void ini_chip(void)
    19: {char i=0;
    20: //config osc
    21:         OSCTUNE=0x0F;           //select internal clock MAX : 0b0000,1111
    22:         OSCCON=0x70;            //switch to system clock 8MHz 
    23: 
    24: 
    25: //config porta and portc
    26:         TRISA=0xCF;     //PORTA: HIGH: set  triple input, LOW: SET OUTPUT;RA4&RA5 is set I/O PIN
    27:         RA5=1;                          //Close Voltage output:Chip SP2525A
    28:         OPTION=OPTION&0x7F; //bit7(RAPU)=0 enable weak pull-up to porta
    29:         WPUA=WPUA|0xff;//PORTA: Weak Pull-up Register bits except bit3
    30: 
    31:         ANSEL=0xF4;             //PORTC Tri-State Control bits,set pin as ADC INPUT
    32:                                         //AN4-AN7(RC0-RC3 PIN) ANOLOG INPUT(RC0 IS AD2,RA2 is AD1)
    33:         ADCON1=0x00;    //x11 = FRC,system internal clock about 500khz
    34:                                         //000 = FRC,system internal clock/2=4MHZ
    35:         ADCON0=0x00;
    36:         TRISC=0x0F;             //PORTC: 0 = Digital Output; 1= anolog I/0 input
    37:  //AD
    38: 
    39: 
    40: //ini timer1 config
    41:         T1CON=0x00;//bit TMR1ON(T1CON^0);start bit
    42:         CMCON1=0x00;//not need comparer
    43:         GIE=0;PEIE=0;//global int enable;bit 7 and 6 of INTCON
    44:         TMR1IE=0;//bit TMR1IE (PIE1^0),overflow int enable
    45:         TMR1IF=0;//bit TMR1IF (PIR1^0),overflow flag
    46: //Timer1 config
    47: 
    48: //WDT config
    49:         PSA=0;// Prescale PS For timer0
    50:         WDTCON=0x16;//Prescale WDTPS<3:0> for WDT: about 2.114s
    51: //WDT config
    52: 
    53:         for(i=0;i<5;i++)
    54:                 {
    55:                 adc[i]=0;
    56:                 }
    57: }
    58: void delay(unsigned int icount)
    59: {unsigned int j=0;
    60:         
    61: //  for(i=0;i<icount;i++)
    62:         for(j=0;j<icount;j++)
    63:         ;
    64: }
    65: /* service routine for timer1 interrupt */
    66: void interrupt timer1_isr(void) @ 0x04          //Time10ms
    67: {
    68:         GIE=0;                                  //Diable global INT flag
    69:         TMR1ON=0;                               //Diable Timer1
    70:         if(TMR1IF)                              //Overflow availabe
    71:         {
    72:                 TMR1IF=0;                       //Clear Overflow flag
    73:                 Time10ms++;                     //10ms timer
    74:                                         
    75:                 TMR1L=0x00;//low byte;          reload counter of timer1                
    76:                 TMR1H=0xAA;//high byte;
    77:         }
    78:         TMR1ON=1;                               //Enable Timer1
    79:         GIE=1;                                  //enable global INT flag
    80: 
    81: 
    82: }//10ms int for timer1
    83: 
    84: /*
    85:         TMR1L=0xef;//low byte
    86:         TMR1H=0xd8;//high byte;//clock=10,000,time=4.5ms;
    87: 
    88:         TMR1L=0x00;//low byte
    89:         TMR1H=0xAA;//high byte;//clock=22,016,time=10ms;
    90: 
    91: */
    92: 
    93: void Start_Timer1(void)
    94: {
    95: //Timer1 start
    96:         TMR1L=0x00;//low byte
    97:         TMR1H=0xAA;//high byte;
    98: 
    99:         TMR1ON=1;//bit TMR1ON of T1CON
   100:         TMR1IE=1;TMR1IF=0;//bit TMR1IE of PIE1,overflow int enable
   101:         GIE=1;PEIE=1;//global int enable;bit 7 of INTCON
   102:         Time10ms=0;
   103: }
   104: 
   105: void Stop_Timer1(void)
   106: {
   107: //Timer1 stop
   108:         GIE=0;PEIE=0;
   109:         TMR1ON=0;
   110:         TMR1IE=0;
   111:         TMR1IF=0;
   112:         Time10ms=0;
   113: }

⌨️ 快捷键说明

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