; CC5X Version 3.4B, Copyright (c) B Knudsen Data ; C compiler for the PICmicro family ; ************ 4. Mar 2010 15:52 ************* processor 16F877A radix DEC __config 0x9 TMR0 EQU 0x01 STATUS EQU 0x03 PCLATH EQU 0x0A PS0 EQU 0 PS1 EQU 1 PS2 EQU 2 PSA EQU 3 T0CS EQU 5 Carry EQU 0 Zero_ EQU 2 RP0 EQU 5 RP1 EQU 6 INTF EQU 1 T0IF EQU 2 T0IE EQU 5 GIE EQU 7 PORTC EQU 0x07 TRISC EQU 0x87 x EQU 0x22 pin2 EQU 2 pin3 EQU 3 svrWREG EQU 0x70 svrSTATUS EQU 0x20 svrPCLATH EQU 0x21 GOTO main ; FILE main.c ;#include "int16CXX.H" ;int16 x; ;#pragma bit pin0 @ PORTC.0 ;#pragma bit pin1 @ PORTC.1 ;#pragma bit pin2 @ PORTC.2 ;#pragma bit pin3 @ PORTC.3 ;#pragma bit pin4 @ PORTC.4 ;#pragma bit pin5 @ PORTC.5 ;#pragma bit pin6 @ PORTC.6 ;#pragma bit pin7 @ PORTC.7 ; ;#pragma origin 4 ORG 0x0004 ;interrupt int_server(void) ;{ int_server ; int_save_registers // W, STATUS (and PCLATH) MOVWF svrWREG SWAPF STATUS,W BCF 0x03,RP0 BCF 0x03,RP1 MOVWF svrSTATUS MOVF PCLATH,W MOVWF svrPCLATH CLRF PCLATH ; if(T0IF) BTFSS 0x0B,T0IF GOTO m003 ; { ; if (pin3==1) BTFSS 0x07,pin3 GOTO m001 ; pin3=0; BCF 0x07,pin3 ; else GOTO m002 ; pin3=1; m001 BCF 0x03,RP0 BCF 0x03,RP1 BSF 0x07,pin3 ; ; INTF = 0; /* reset flag */ m002 BCF 0x0B,INTF ; ; } ; int_restore_registers // W, STATUS (and PCLATH) m003 BCF 0x03,RP0 BCF 0x03,RP1 MOVF svrPCLATH,W MOVWF PCLATH SWAPF svrSTATUS,W MOVWF STATUS SWAPF svrWREG,1 SWAPF svrWREG,W ;} RETFIE ; ; ; ;void main( void) ;{ main ; #pragma config WDTE=off, FOSC=XT, PWRTE=1, BODEN=off //watchdog timer=off, oscilattor is= extern <=4MHZ, Power up timer = on, Brown out detect = off. ; ; PORTC = 0b.0000.0000; BCF 0x03,RP0 BCF 0x03,RP1 CLRF PORTC ; TRISC = 0b.0000.0000; BSF 0x03,RP0 CLRF TRISC ; ; T0CS=0; // T0CS: TMR0 Clock Source Select bit: 1 = Transition on T0CKI pin, 0 = Internal instruction cycle clock (CLKO) BCF 0x81,T0CS ; PSA=0; // PSA: Prescaler Assignment bit: 1 = Prescaler is assigned to the WDT 0 = Prescaler is assigned to the Timer0 module BCF 0x81,PSA ; PS0=0; // PS2:PS0: Prescaler Rate Select bits BCF 0x81,PS0 ; PS1=1; // PS2:PS0: Prescaler Rate Select bits BSF 0x81,PS1 ; PS2=1; // PS2:PS0: Prescaler Rate Select bits BSF 0x81,PS2 ; ; ; ; T0IE = 1; /* enable TMR0 interrupt */ BSF 0x0B,T0IE ; GIE = 1; /* interrupts allowed */ BSF 0x0B,GIE ; ; ;while(1) ;{ ; ; x=TMR0; m004 BCF 0x03,RP0 BCF 0x03,RP1 MOVF TMR0,W MOVWF x CLRF x+1 ; if(x<=128) pin2=1; BTFSC x+1,7 GOTO m005 MOVF x+1,W BTFSS 0x03,Zero_ GOTO m006 MOVLW 129 SUBWF x,W BTFSC 0x03,Carry GOTO m006 m005 BCF 0x03,RP0 BCF 0x03,RP1 BSF 0x07,pin2 ; //if(x==255) pin2=0; ; else pin2=0; GOTO m004 m006 BCF 0x03,RP0 BCF 0x03,RP1 BCF 0x07,pin2 ; ; ; ;} GOTO m004 END ; *** KEY INFO *** ; 0x0004 P0 27 word(s) 1 % : int_server ; 0x001F P0 34 word(s) 1 % : main ; RAM usage: 5 bytes (3 local), 363 bytes free ; Maximum call level: 0 (+1 for interrupt) ; Codepage 0 has 62 word(s) : 3 % ; Codepage 1 has 0 word(s) : 0 % ; Codepage 2 has 0 word(s) : 0 % ; Codepage 3 has 0 word(s) : 0 % ; Total of 62 code words (0 %)