Пример #1
0
// Main routine
void main(void) {
    OSCCON = 0x7C;          // Internal Oscillator 16MHz Enabled
    OSCTUNE = 0x5F;	    
    OSCCON2bits.PLLRDY = 1;
    VREFCON1 = 0xE0;		
    T2CON = 0x7B;		
    INTCONbits.GIE = 1;     // Global, peripheral & timer 2 interrupt enable 
    INTCONbits.PEIE = 1;
    PIE1bits.TMR2IE = 1;
    PR2 = 0xff;				// period registor 2 with max value
    VREFCON2 = 0;			// zero brightness
    LED_DIR = 0;			// LED pin on output 
    LED = 1;
    lcdinit();				// Initialize LCD in 4bit mode, ultrasonic and brightness
    lcdcmd(0x01);
    initUltrasonic();
    initBrightness();
    LED = 0;
    while(1)
    {
        readPIR();
        if(resPIR)
        {
            pirIndicate();
            readUltrasonic();
            f1 = 0;
            f2 = 1;
            while(resUS < 100 && resUS > 10)
            {
                T2CONbits.TMR2ON = 1;
                setBrightness();
                if(f2)
                {
                    lcdcmd(0x80);
                    sprintf(line1,"    Welcome !   ");
                    lcdstring(line1);
                    sprintf(line2,"   Chaitanya.   ");
                    lcdcmd(0xc0);
                    lcdstring(line2);
                    msDelay(1000);
                    f2 = 0;
                }
                if(sec >= 60)
                {
                    mn++;
                    sec = 0;
                }
                if(mn >= 60)
                {
                    hr++;
                    mn = 0;
                }
                sprintf(line1,"   Study Time   ");
                sprintf(line2,"    %i:%i:%i    ",hr,mn,sec);
                lcdcmd(0x80);
                lcdstring(line1);
                lcdcmd(0xc0);
                lcdstring(line2);
                eventL();
                eventL();
                readUltrasonic();
                f1 = 1;
            }
            T2CONbits.TMR2ON = 0;
            if(f1)
            {
                sprintf(line1,"   Thank You !  ");
                sprintf(line2,"   Good Bye...! ");
                lcdcmd(0x80);
                lcdstring(line1);
                lcdcmd(0xc0);
                lcdstring(line2);
                msDelay(3000);
                VREFCON2 = 0;
            }
            lcdcmd(0x01);
        }
    }
}
Пример #2
0
/* Function: ReadSeq()
 * 
 * Purpose:  Read next sequence from an open database file.
 *           Return the sequence and associated info.
 *           
 * Args:     fp      - open sequence database file pointer          
 *           format  - format of the file (previously determined
 *                      by call to SeqfileFormat())
 *           ret_seq - RETURN: sequence
 *           sqinfo  - RETURN: filled in w/ other information  
 *           
 * Return:   1 on success, 0 on failure.
 *           ret_seq and some field of sqinfo are allocated here,
 *           The preferred call mechanism to properly free the memory is:
 *           
 *           SQINFO sqinfo;
 *           char  *seq;
 *           
 *           ReadSeq(fp, format, &seq, &sqinfo);
 *           ... do something...
 *           FreeSequence(seq, &sqinfo);
 */
int
ReadSeq(SQFILE *V, int format, char **ret_seq, SQINFO *sqinfo)
{
  int    gotuw;
  int    apos, rpos;

  squid_errno = SQERR_OK;
  if (format < kMinFormat || format > kMaxFormat) 
    {
      squid_errno = SQERR_FORMAT;
      *ret_seq    = NULL;
      return 0;
    }

  /* Here's the hack for sequential access of sequences from
   * the multiple sequence alignment formats
   */
  if (format == kMSF || format == kSelex || format == kClustal) {
    if (V->ali_curridx >= V->ali_ainfo.nseq) 
      return 0; /* out of aseqs */

    SeqinfoCopy(sqinfo, &(V->ali_ainfo.sqinfo[V->ali_curridx]));

				/* copy and dealign the appropriate aligned seq */
    V->seq = MallocOrDie (sizeof(char) * (V->ali_ainfo.alen+1));
    for (rpos = apos = 0; apos < V->ali_ainfo.alen; apos++) 
      if (!isgap(V->ali_aseqs[V->ali_curridx][apos]))
	V->seq[rpos++] = V->ali_aseqs[V->ali_curridx][apos];
    V->seq[rpos]   = '\0'; 
    V->seqlen      = rpos;
    V->ali_curridx++;
  } 
  else {
    if (feof(V->f)) return 0;

    V->seq           = (char*) calloc (kStartLength+1, sizeof(char));
    V->maxseq        = kStartLength;
    V->seqlen        = 0;
    V->sqinfo        = sqinfo;
    V->sqinfo->flags = 0;
    V->dash_equals_n = (format == kEMBL) ? TRUE : FALSE;

    switch (format) {
    case kIG      : readIG(V);      break;
    case kStrider : readStrider(V); break;
    case kGenBank : readGenBank(V); break;
    case kPearson : readPearson(V); break;
    case kEMBL    : readEMBL(V);    break;
    case kZuker   : readZuker(V);   break;
    case kPIR     : readPIR(V);     break;
    case kSquid   : readSquid(V);   break;
    case kGCGdata : readGCGdata(V); break; 
	
    case kGCG:
      do {			/* skip leading comments on GCG file */
	gotuw = (strstr(V->sbuffer,"..") != NULL);
	if (gotuw) readUWGCG(V);
	getline2(V);
      } while (! feof(V->f));
      break;

    case kIdraw:   /* SRE: no attempt to read idraw postscript */
    default:
      squid_errno = SQERR_FORMAT;
      free(V->seq);
      return 0;
    }
    V->seq[V->seqlen] = 0; /* stick a string terminator on it */
  }

  /* Cleanup
   */
  sqinfo->len    = V->seqlen; 
  sqinfo->flags |= SQINFO_LEN;
  *ret_seq = V->seq;
  if (squid_errno == SQERR_OK) return 1; else return 0;
}