//****************************************************************************************** // PIC16F877 Sample Program // Project : // Program Name : // Programer : // Create date : // History : // Laungage : XC8 C Laungage Version 2.20 //****************************************************************************************** // Description //****************************************************************************************** // #include #pragma config FOSC = HS, WDTE = OFF, PWRTE = OFF, CP = OFF, BOREN = OFF, LVP = OFF, CPD = OFF, WRT = OFF, DEBUG = OFF //For 16F877 //#pragma config FOSC = HS, WDTE = OFF, PWRTE = OFF, BOREN = OFF, LVP = OFF, CPD = OFF, WRT = OFF, DEBUG = OFF, CP = OFF //For 16F877A void Timer_1mS(unsigned int); void Timer_1mS_sub(void); void main() { // ************************* // 1.Initialized Segment // ************************* // (1)TRIS Register TRISA=0xff; TRISB=0xff; TRISC=0x00; TRISD=0xff; TRISE=0xff; // (2)PORT Register PORTA=0x00; PORTB=0x00; PORTC=0x00; PORTD=0x00; PORTE=0x00; while(1){ PORTCbits.RC0 = ~PORTCbits.RC0; PORTCbits.RC1 = ~PORTCbits.RC1; PORTCbits.RC2 = ~PORTCbits.RC2; PORTCbits.RC3 = ~PORTCbits.RC3; PORTCbits.RC4 = ~PORTCbits.RC4; PORTCbits.RC5 = ~PORTCbits.RC5; PORTCbits.RC6 = ~PORTCbits.RC6; PORTCbits.RC7 = ~PORTCbits.RC7; Timer_1mS(1000); }; } //****************************************************************************************** // Function Name : Timer_1mS // Title : Wait function (1mS) * Number (argument) // Input : // Output : //****************************************************************************************** void Timer_1mS(unsigned int Number) { unsigned int lp; for(lp=0;lp 0d4000(Count) ==> 0x0FA0(Count) // TMR1 = 0xFFFF - 0x0FA0 ==> 0xF05F // TMR1H = 0xF0; // TMR1L = 0x5F; // // (2)TMR1 data ( OSC:20MHz, 1:1 Prescale value, 0.001[S];1000Hz ) // 1mS(1000Hz): 20MHz / 4(FOSC/4) / 1000(1000Hz)==> 0d5000(Count) ==> 0x1338(Count) // TMR1 = 0xFFFF - 0x1338 ==> 0xECC7 TMR1H = 0xEC; TMR1L = 0xC7; // ******************************************************* // 3.Timer // ******************************************************* PIR1bits.TMR1IF = 0; while(1){ if(PIR1bits.TMR1IF != 0 )break; } }