CCS PCH C Compiler, Version 4.064, 40102               03-Dec-07 14:21

               Filename: onepulsepersecond.lst

               ROM used: 388 bytes (0%)
                         Largest free fragment is 65536
               RAM used: 8 (0%) at main() level
                         9 (0%) worst case
               Stack:    1 locations

*
00000:  GOTO   0042
....................  
.................... #include <18F8722.H> 
.................... //////// Standard Header file for the PIC18F8722 device //////////////// 
.................... #device PIC18F8722 
.................... #list 
....................  
.................... #fuses HS,NOWDT,NOPROTECT 
.................... #use delay(clock=10000000) 
00004:  CLRF   FEA
00006:  MOVLW  08
00008:  MOVWF  FE9
0000A:  MOVF   FEF,W
0000C:  BZ    002A
0000E:  MOVLW  03
00010:  MOVWF  01
00012:  CLRF   00
00014:  DECFSZ 00,F
00016:  BRA    0014
00018:  DECFSZ 01,F
0001A:  BRA    0012
0001C:  MOVLW  3C
0001E:  MOVWF  00
00020:  DECFSZ 00,F
00022:  BRA    0020
00024:  BRA    0026
00026:  DECFSZ FEF,F
00028:  BRA    000E
0002A:  RETLW  00
.................... #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  
....................  
....................  int i;  //general purpose counter 
....................   
....................  int1 clk_in; 
....................    
....................  
.................... void wait_for_high_to_low()  
....................     { 
....................      while(input(PIN_B1)) ;       /* if it's high, wait for a low */ 
0002C:  BSF    F93.1
0002E:  BTFSC  F81.1
00030:  BRA    002C
....................      delay_us(3);                 /* account for fall time */ 
00032:  MOVLW  02
00034:  MOVWF  00
00036:  DECFSZ 00,F
00038:  BRA    0036
....................      while(!input(PIN_B1));       /* wait for signal to go high */ 
0003A:  BSF    F93.1
0003C:  BTFSS  F81.1
0003E:  BRA    003A
....................     } 
00040:  RETLW  00
....................  
....................  
.................... void main() 
....................    { 
00042:  CLRF   FF8
00044:  BCF    FD0.7
00046:  CLRF   FEA
00048:  CLRF   FE9
0004A:  BCF    F7E.3
0004C:  MOVLW  40
0004E:  MOVWF  FAF
00050:  MOVLW  A6
00052:  MOVWF  FAC
00054:  MOVLW  90
00056:  MOVWF  FAB
00058:  MOVF   FC1,W
0005A:  ANDLW  C0
0005C:  IORLW  0F
0005E:  MOVWF  FC1
00060:  MOVLW  07
00062:  MOVWF  FB4
....................    
....................    setup_adc_ports(NO_ANALOGS|VSS_VDD); 
00064:  MOVF   FC1,W
00066:  ANDLW  C0
00068:  IORLW  0F
0006A:  MOVWF  FC1
....................    setup_adc(ADC_OFF|ADC_TAD_MUL_0); 
0006C:  BCF    FC2.0
....................    setup_psp(PSP_DISABLED); 
0006E:  BCF    FB0.4
....................    setup_spi(SPI_SS_DISABLED); 
00070:  BCF    FC6.5
00072:  BCF    F94.5
00074:  BSF    F94.4
00076:  BCF    F94.3
00078:  MOVLW  01
0007A:  MOVWF  FC6
0007C:  MOVLW  00
0007E:  MOVWF  FC7
....................    setup_spi2(SPI_SS_DISABLED); 
00080:  BCF    F63.5
00082:  BCF    F95.4
00084:  BSF    F95.5
00086:  BCF    F95.6
00088:  MOVLW  01
0008A:  MOVWF  F63
0008C:  MOVLW  00
0008E:  MOVWF  F64
....................    setup_wdt(WDT_OFF); 
00090:  BCF    FD1.0
....................    setup_timer_0(RTCC_INTERNAL); 
00092:  MOVLW  80
00094:  MOVWF  FD5
....................    setup_timer_1(T1_DISABLED); 
00096:  CLRF   FCD
....................    setup_timer_2(T2_DISABLED,0,1); 
00098:  MOVLW  00
0009A:  MOVWF  FCA
0009C:  MOVLW  00
0009E:  MOVWF  FCB
....................    setup_timer_3(T3_DISABLED|T3_DIV_BY_1); 
000A0:  MOVF   FB1,W
000A2:  ANDLW  48
000A4:  MOVWF  FB1
....................    setup_timer_4(T4_DISABLED,0,1); 
000A6:  MOVLW  00
000A8:  MOVWF  F76
000AA:  MOVLW  00
000AC:  MOVWF  F77
....................    setup_comparator(NC_NC_NC_NC); 
000AE:  MOVLW  07
000B0:  MOVWF  FB4
000B2:  MOVF   F97,W
000B4:  MOVLW  08
000B6:  MOVWF  00
000B8:  DECFSZ 00,F
000BA:  BRA    00B8
000BC:  MOVF   FB4,W
000BE:  BCF    FA1.6
....................    setup_vref(FALSE); 
000C0:  CLRF   FB5
....................     
....................    clk_in = FALSE;  // default to internal clock 
000C2:  BCF    06.0
....................     
....................    //output_low(PIN_D4); 
....................            
....................    for (i=0; i<100; i++)    //loop for a second to check for the NTP 1PPS 
000C4:  CLRF   05
000C6:  MOVF   05,W
000C8:  SUBLW  63
000CA:  BNC   00E2
....................       {         
....................         if( !input(PIN_B0) )  // exit check loop if pin goes low  
000CC:  BSF    F93.0
000CE:  BTFSC  F81.0
000D0:  BRA    00D8
....................           { 
....................             clk_in = TRUE; 
000D2:  BSF    06.0
....................              break; 
000D4:  BRA    00E2
....................           } //if 
....................         else 
000D6:  BRA    00DE
....................              delay_ms(10); 
000D8:  MOVLW  0A
000DA:  MOVWF  08
000DC:  RCALL  0004
....................       } //for 
000DE:  INCF   05,F
000E0:  BRA    00C6
....................     
....................    while (TRUE)      //run this program forever 
....................         { 
....................           
....................           // NTP  Clock Routine         
....................           if (clk_in == TRUE) // we have a clock input 
000E2:  BTFSS  06.0
000E4:  BRA    0128
....................             { 
....................              output_high (PIN_D0); // external clock indicator LED 
000E6:  BCF    F95.0
000E8:  BSF    F8C.0
....................              for(i=0; i<9; i++) // 9 20ms pulse/second 
000EA:  CLRF   05
000EC:  MOVF   05,W
000EE:  SUBLW  08
000F0:  BNC   010E
....................                 { 
....................                  wait_for_high_to_low(); 
000F2:  RCALL  002C
....................           
....................                  output_high(PIN_B1);  //pulse output 
000F4:  BCF    F93.1
000F6:  BSF    F8A.1
....................                  output_high(PIN_D1);  // LED output 
000F8:  BCF    F95.1
000FA:  BSF    F8C.1
....................           
....................                  delay_ms(20);   // 20ms pulse 
000FC:  MOVLW  14
000FE:  MOVWF  08
00100:  RCALL  0004
....................                             
....................                  output_low(PIN_B1); 
00102:  BCF    F93.1
00104:  BCF    F8A.1
....................                  output_low(PIN_D1); 
00106:  BCF    F95.1
00108:  BCF    F8C.1
....................                  } // for 
0010A:  INCF   05,F
0010C:  BRA    00EC
....................          
....................               // 1 40ms pulse  
....................                
....................              wait_for_high_to_low(); 
0010E:  RCALL  002C
....................               
....................              output_high(PIN_B1);       
00110:  BCF    F93.1
00112:  BSF    F8A.1
....................              output_high(PIN_D2); 
00114:  BCF    F95.2
00116:  BSF    F8C.2
....................       
....................              delay_ms(40); 
00118:  MOVLW  28
0011A:  MOVWF  08
0011C:  RCALL  0004
....................       
....................              output_low(PIN_B0); 
0011E:  BCF    F93.0
00120:  BCF    F8A.0
....................              output_low(PIN_D2); 
00122:  BCF    F95.2
00124:  BCF    F8C.2
....................               
....................              } // if clk_in 
....................              
....................        // no NTP hooked up so we'll create our own pulses 
....................        else 
00126:  BRA    0180
....................           { 
....................            output_high(PIN_D3);  //internal clock indicator 
00128:  BCF    F95.3
0012A:  BSF    F8C.3
....................            for(i=0; i<9; i++) // 9 20ms pulse/second 
0012C:  CLRF   05
0012E:  MOVF   05,W
00130:  SUBLW  08
00132:  BNC   015C
....................              { 
....................                output_high(PIN_B1);  //pulse output 
00134:  BCF    F93.1
00136:  BSF    F8A.1
....................                output_high(PIN_D4);  // LED output 
00138:  BCF    F95.4
0013A:  BSF    F8C.4
....................           
....................                delay_ms(20);   // 20ms pulse 
0013C:  MOVLW  14
0013E:  MOVWF  08
00140:  RCALL  0004
....................           
....................                output_low(PIN_B1); 
00142:  BCF    F93.1
00144:  BCF    F8A.1
....................                output_low(PIN_D4); 
00146:  BCF    F95.4
00148:  BCF    F8C.4
....................           
....................                 delay_ms(980); 
0014A:  MOVLW  04
0014C:  MOVWF  07
0014E:  MOVLW  F5
00150:  MOVWF  08
00152:  RCALL  0004
00154:  DECFSZ 07,F
00156:  BRA    014E
....................                 } //for 
00158:  INCF   05,F
0015A:  BRA    012E
....................          
....................              // 1 40ms pulse         
....................              output_high(PIN_B1);       
0015C:  BCF    F93.1
0015E:  BSF    F8A.1
....................              output_high(PIN_D5); 
00160:  BCF    F95.5
00162:  BSF    F8C.5
....................       
....................              delay_ms(40); 
00164:  MOVLW  28
00166:  MOVWF  08
00168:  RCALL  0004
....................       
....................              output_low(PIN_B0); 
0016A:  BCF    F93.0
0016C:  BCF    F8A.0
....................              output_low(PIN_D5); 
0016E:  BCF    F95.5
00170:  BCF    F8C.5
....................       
....................              delay_ms(960); 
00172:  MOVLW  04
00174:  MOVWF  07
00176:  MOVLW  F0
00178:  MOVWF  08
0017A:  RCALL  0004
0017C:  DECFSZ 07,F
0017E:  BRA    0176
....................              } //else  
....................            
....................      } //while 
00180:  BRA    00E2
.................... } //main 
00182:  SLEEP 

Configuration Fuses:
   Word  1: 0200   HS NOIESO NOFCMEN RESERVED
   Word  2: 1E1E   BROWNOUT NOWDT BORV25 PUT WDT32768
   Word  3: 83F3   CCP2C1 NOLPT1OSC MCLR MCU RESERVED WAIT BW16 ABW20 ECCPE
   Word  4: 0081   STVREN NODEBUG NOLVP NOXINST RESERVED
   Word  5: C0FF   NOPROTECT NOCPD NOCPB
   Word  6: E0FF   NOWRT NOWRTD NOWRTC NOWRTB
   Word  7: 40FF   NOEBTRB NOEBTR
