<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Microscale Embedded (Blog)</title>
	<atom:link href="http://microscale-embedded.com/blog/?feed=comments-rss2" rel="self" type="application/rss+xml" />
	<link>http://microscale-embedded.com/blog</link>
	<description>sowing the seeds to Africa&#039;s Digital Revolution</description>
	<lastBuildDate>Mon, 07 May 2012 16:28:55 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>Comment on Finger print based security system by Sunday O. Efeh</title>
		<link>http://microscale-embedded.com/blog/?p=143#comment-239</link>
		<dc:creator>Sunday O. Efeh</dc:creator>
		<pubDate>Mon, 07 May 2012 16:28:55 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=143#comment-239</guid>
		<description>for those asking for the header files publication, I have added the header files I used...... Regards

/************************************************************************************
*********************FPM10A HEADER / DRIVER	....WRITTEN BY SUNDAY*******************
*****************COPY RIGHT ... MICROSCALE EMBEDDED LTD. KADUNA NIG.*****************
************************************************************************************/
#ifndef __LIB_FPM10A_H__
#define __LIB_FPM10A_H__
/************************************************************************************
************************************BASIC STORAGE DEFINTION*************************
************************************************************************************/
char cnt;
unsigned int Templete_Num;
unsigned int ACK_Sum;

//unsigned char idata RECEVICE_BUFFER[24];
unsigned char idata receive_ACK[15];
//char idata  receive_command[20];
/************************************************************************************
***************************FINGERPRINT PROTOCAL DEFINITION**************************
************************************************************************************/
const unsigned char code FP_SetPwd[10] = {0x01,0x00,0x07,0x12,0xff,0xff,0xff,0xff,0x04,0x16};   
const unsigned char code FP_Pack_Head[6] = {0xEF,0x01,0xFF,0xFF,0xFF,0xFF};                                               //protcol header 
const unsigned char code FP_VfyPwd[10] = {0x01,0x00,0x07,0x13,0xff,0xff,0xff,0xff,0x04,0x17}; 
const unsigned char code FP_Get_Img[6] = {0x01,0x00,0x03,0x01,0x00,0x05};                                                  //get/record fingerprint image
const unsigned char code FP_Templete_Num[6] ={0x01,0x00,0x03,0x1D,0x00,0x21 };                                            //get total number of template
const unsigned char data FP_Search[11]={0x01,0x00,0x08,0x04,0x01,0x00,0x00,0x03,0xA1,0x0,0xB2};                              //search range of fingeprints 0 - 929
const unsigned char data FP_Search_0_9[11]={0x01,0x00,0x08,0x04,0x01,0x0,0x00,0x00,0x13,0x00,0x21};                           //search fingerprint no.0-9
unsigned char idata FP_Img_To_Buffer1[7]={0x01,0x00,0x04,0x02,0x01,0x0,0x08};                                               //save image to BUFFER1
unsigned char idata FP_Img_To_Buffer2[7]={0x01,0x00,0x04,0x02,0x02,0x0,0x09};                                               //save image to BUFFER2
unsigned char idata FP_Reg_Model[6]={0x01,0x00,0x03,0x05,0x0,0x09};                                                         //Combine BUFFER1 and BUFFER2 to generate feature template
unsigned char idata FP_Delet_All_Model[6]={0x01,0x00,0x03,0x0d,0x00,0x11};                                                  //clean up all templates in fingerprint module
unsigned char idata FP_Reg_Match[6]={0x01,0x00,0x03,0x03,0x00,0x07};                                                       //compare charbuffer1 and charbuffer2
unsigned char FP_Reg_Store[9]={0x01,0x00,0x06,0x06,0x02,0x00,0x00,0x00,0x0f};                                        //save charbuffer2 to template  ID0
unsigned char FP_Reg_LoadChar[9]={0x01,0x00,0x06,0x07,0x02,0x00,0x00,0x00,0x10};                                     //read  template ID0 to charbuffer2
volatile unsigned char idata FP_Save_Finger[9]={0x01,0x00,0x06,0x06,0x01,0x00,0x0B,0x00,0x19};                            //save the feature of BUFFER1 to specified position 
volatile unsigned char idata FP_Delete_Model[10]={0x01,0x00,0x07,0x0C,0x00,0x0,0x00,0x01,0x00,0x00}; 
/************************************************************************************
************************************ACK storage, 12 bytes****************************
************************************************************************************/
void array_ACK(unsigned char temp)
{	  
unsigned char i;
    for( i=0;i&lt;temp;i++)                                           
    {
       receive_ACK[i]= getkey();
    }
}
/************************************************************************************
************************************PASSWORD VERIFICATION COMMAND*******************
************************************************************************************/
void FINGERPRINT_Cmd_vfypwd(void)
{
    unsigned char i;

    for(i=0;i&lt;6;i++) //send header
       putchar(FP_Pack_Head[i]);
    
    for(i=0;i&lt;10;i++) //send command 0x1d
       putchar(FP_VfyPwd[i]);
}
/************************************************************************************
************************************PASSWORD SET COMMAND****************************
************************************************************************************/
 void FINGERPRINT_Cmd_Setpwd(void)
{
    unsigned char i;

    for(i=0;i&lt;6;i++) //send header
       putchar(FP_Pack_Head[i]);
    
    for(i=0;i&lt;10;i++) //send command 0x1d
       putchar(FP_SetPwd[i]);
}
/************************************************************************************
************************************GETS FINGER PRINT ON SCANNER*********************
************************************************************************************/ 
void FINGERPRINT_Cmd_Get_Img(void)
{
    unsigned char i;
    for(i=0;i&lt;6;i++) //send header
       putchar(FP_Pack_Head[i]);
    
    for(i=0;i&lt;6;i++) //send command 0x1d
       putchar(FP_Get_Img[i]);
}
/************************************************************************************
************************************SAVES IMAGE TO BUFFER1****************************
************************************************************************************/
void FINGERPRINT_Cmd_Img_To_Buffer1(void)
{
 	    unsigned char i;
	       for(i=0;i&lt;6;i++)    
		   putchar(FP_Pack_Head[i]);   
           
   		   for(i=0;i&lt;7;i++)  
		   putchar(FP_Img_To_Buffer1[i]); 
}
/************************************************************************************
************************************SAVES IMAGE TO BUFFER2***************************
************************************************************************************/
void FINGERPRINT_Cmd_Img_To_Buffer2(void)
{
     unsigned char i;
           for(i=0;i&lt;6;i++)    
		   putchar(FP_Pack_Head[i]);
           
   		   for(i=0;i&lt;7;i++)    
		   putchar(FP_Img_To_Buffer2[i]);
}
/************************************************************************************
************************************REG MODEL BUFFER1 AND BUFFER2********************
************************************************************************************/
void FINGERPRINT_Cmd_Reg_Model(void)
{
    unsigned char i;    
    for(i=0;i&lt;6;i++)   
	putchar(FP_Pack_Head[i]);

    for(i=0;i&lt;6;i++)   
	putchar(FP_Reg_Model[i]); 
}
/************************************************************************************
****************************COMPARES CONTENTS OF BUFFER1 AND BUFFER2*****************
************************************************************************************/
void FINGERPRINT_Cmd_Match(void)
{
    unsigned char i;    
    for(i=0;i&lt;6;i++)  
	putchar(FP_Pack_Head[i]); 
  
    for(i=0;i&lt;6;i++)  
	putchar(FP_Reg_Match[i]); 
}
/************************************************************************************
****************************STORES CONTENTS OF BUFFER1 AND BUFFER2*****************
************************************************************************************/
void FINGERPRINT_Cmd_Store(void)
{
    unsigned char i;    
    for(i=0;i&lt;6;i++)	
	putchar(FP_Pack_Head[i]);
  
    for(i=0;i&lt;9;i++)  
	putchar(FP_Reg_Store[i]);
}
/************************************************************************************
************************************ DATA TO BUFFER1 OR BUFFER2**********************
************************************************************************************/
void FINGERPRINT_Cmd_LoadChar(void)
{
    unsigned char i;    

    for(i=0;i&lt;6;i++) 
      putchar(FP_Pack_Head[i]);   
    
    for(i=0;i&lt;9;i++) 
      putchar(FP_Reg_LoadChar[i]);   
}
/************************************************************************************
**********************************DELETES ALL FINGER PRINT MODULES******************
************************************************************************************/
void FINGERPRINT_Cmd_Delete_All_Model(void)
{
     unsigned char i;    

    for(i=0;i&lt;6;i++) 
      putchar(FP_Pack_Head[i]);   

    for(i=0;i&gt;8;
	FP_Delete_Model[5]=(uiID_temp&amp;0x00FF);
	
	for(i=0;i&gt;8;
	FP_Delete_Model[9]=uiSum_temp&amp;0x00FF;
	 

    for(i=0;i&lt;6;i++) 
      putchar(FP_Pack_Head[i]);   

    for(i=0;i&lt;10;i++) 
      putchar(FP_Delete_Model[i]);   
}
/************************************************************************************
************************************GETS TEMPLATE NUMBER ****************************
************************************************************************************/
void FINGERPRINT_Cmd_Get_Templete_Num(void)
{  unsigned int i;
//  unsigned char temp[14];
   for(i=0;i&lt;6;i++)
      putchar(FP_Pack_Head[i]);
   for(i=0;i&lt;6;i++)
     putchar(FP_Templete_Num[i]);
}
/************************************************************************************
*****************SEARCHES FINGER PRINT MODULE ***************************************
************************************************************************************/
void FINGERPRINT_Cmd_Search_Finger(void)
{
       unsigned char i;	   
	   for(i=0;i&lt;6;i++)   
	   putchar(FP_Pack_Head[i]);
     
       for(i=0;i&lt;11;i++) 
	   putchar(FP_Search[i]);
}
/************************************************************************************
******************************SEARCHES FINGER PRINT MODULE **************************
************************************************************************************/
void FINGERPRINT_Cmd_Search_Finger_Admin(void)
{
       unsigned char i;	   
	   for(i=0;i&lt;6;i++)   
	   putchar(FP_Pack_Head[i]);   

       for(i=0;i&lt;11;i++)  
	   putchar(FP_Search_0_9[i]);  
}
/************************************************************************************
************************************SAVES FINGER PRINT MODULE************************
************************************************************************************/
void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char,unsigned char ucL_Char )
{
           unsigned long temp = 0;
		   unsigned char i;
			 
           FP_Save_Finger[5] = ucH_Char;
           FP_Save_Finger[6] = ucL_Char;
           
		   for(i=0;i&gt; 8; 
		   FP_Save_Finger[8]= temp &amp; 0x0000FF;
		   
           for(i=0;i&lt;6;i++)    
    	      putchar(FP_Pack_Head[i]);      

           for(i=0;i&gt; 4) &amp; 0x0F)&#124;LCD_EN;
        DATA_PORT  = ((cmd &gt;&gt; 4) &amp; 0x0F);

        DATA_PORT  = (cmd &amp; 0x0F)&#124;LCD_EN;
        DATA_PORT  = (cmd &amp; 0x0F);

        Delay_ms(10);
}
/*****************************************************************************************
*********************FUNCTION TO DISPLAY CHARACTER ON THE LCD********************************																	  
*****************************************************************************************/
void Lcd_Data (unsigned dat)
{
        DATA_PORT  = (((dat &gt;&gt; 4) &amp; 0x0F)&#124;LCD_EN&#124;LCD_RS);
        DATA_PORT  = (((dat &gt;&gt; 4) &amp; 0x0F)&#124;LCD_RS);
       
        DATA_PORT  = ((dat &amp; 0x0F)&#124;LCD_EN&#124;LCD_RS);
        DATA_PORT = ((dat &amp; 0x0F)&#124;LCD_RS);

        Delay_ms(5);
}
 
/*****************************************************************************************
*********************LCD INITIALIZATION PARAMETERS****************************************																	  
*****************************************************************************************/
void Lcd_Init ()
{
        Lcd_Reset();         // Call LCD reset
        Lcd_Cmd (0x28);       // 4-bit mode - 2 line - 5x7 font. 
        Lcd_Cmd (0x0C);       // Display no cursor - no blink.
        Lcd_Cmd (0x06);       // Automatic Increment - No Display shift.
        Lcd_Cmd (0x80);       // Address DDRAM with 0 offset 80h.
 }
 /*****************************************************************************************
*********************PLACES THE LCD CURSOR AT ANY POSITION ON THE DISPLY******************																	  
*****************************************************************************************/
void Lcd_Cursor (char row, char column)
{
  switch (row) {
    case 1: Lcd_Cmd (0x80 + column - 1); break;
    case 2: Lcd_Cmd (0xc0 + column - 1); break;
    //case 3: Lcd_Cmd(0x94 + column - 1); break;
   // case 4: Lcd_Cmd (0xd4 + column - 1); break;
    default: break;
  }
}
/*****************************************************************************************
*********************FUNCTION TO DISPLAY STRING ON THE LCD********************************																	 
*****************************************************************************************
void Lcd_Chr(char row, char column, char c)
{
	Lcd_Cursor (row, column);
		Lcd_Data(c);
}
/*****************************************************************************************
*********************FUNCTION TO DISPLAY STRING ON THE LCD********************************																	 
*****************************************************************************************/
void Lcd_Write(char row, char column, char *s)
{
	Lcd_Cursor (row, column);
	while (*s)
	{
		Lcd_Data(*(s++));
	}
	return;
}
/*****************************************************************************************
*********************SCROLLS TEXT ON LCD SCREEN*******************************************																	  
***************************************************************************************** /
void Lcd_Scroll(char *word) 
{
	char *pos; // character pointers
	char *adder;
	int i,displayLen;
	pos=word;
	displayLen=16;
	while (*pos != &#039;&#039;) 
	{
		i=0;
		adder=pos;
		while ((i&lt;displayLen)&amp;&amp;(*adder!=&#039;&#039;)) 
		{
			Lcd_Data(*adder);
			adder++;
			i++;
		}
		 Delay_ms(200);
		Lcd_Cmd(_LCD_CLEAR);
		pos++;
	}
}

/*****************************************************************************************
*********************DISPLAY CHARACTER ON LCD AND USART***********************************																	  
*****************************************************************************************/
#endif
/*****************************************************************************************
********ENLOY*************ENJOY***********ENJOY***************ENJOY*************ENJOY******																	  
*****************************************************************************************/
    

Lib _Uart.h
/***************************************************************************
(((((((((((((((((((((((((((UART ..HEADER FILE...SUNDAY))))))))))))))))))))))
****************************************************************************/
#ifndef __Lb_Uart_H__
#define __Lb_Uart_H__

#define  FOSC  11059200//11059200	///xtal value
/***************************************************************************
(((((((((((((((((((((((((((BACIC SERIAL COM INITIALS))))))))))))))))))))))))
****************************************************************************/
void Uart_Init(unsigned long  BPS)
{
	#ifndef MONITOR51
    SCON  = 0x50;		        /* SCON: mode 1, 8-bit UART, enable rcvr      */
    TMOD &#124;= 0x21;               /* TMOD: timer 1, mode 2, 8-bit reload        */
		if(BPS==1200) {TH1=0xE8;TL1=0xE;}
		if(BPS==2400) {TH1=0xF4;TL1=0xF4;}
		if(BPS==4800) {TH1=0xFA;TL1=0xFA;}
		if(BPS==9600) {TH1=0xFD;TL1=0xFD;}
		if(BPS==19200) {TH1=0xFD;TL1=0xFD; PCON=0x80;}
		if(BPS==28800) {TH1=0xFF;TL1=0xFF; }
		if(BPS==38400) {TH1=0xFE;TL1=0xFE;;PCON=0x80;}
		if(BPS==57600) {TH1=0xFF;TL1=0xFF;PCON=0x80;}
    TR1   = 1;                  /* TR1:  timer 1 run                          */
    TI    = 1;                  /* TI:   set TI to send first char of UART    */
	#endif
}
#endif
/***************************************************************************
((((((((((NOTE:The baud rate  is accurate only at values ranging))))))))))))
 (((((((from 9600 to 1200////any bps  above 9600 gives errors))))))))))))///
****************************************************************************/

Lib_Delay.h

/*****************************************************************************************
*********************LIB_DELAY.H FOR 8051			***********************************																	  
*****************************************************************************************/
#ifndef Lib_Delay_H_
#define Lib_Delay_H_
#include 
#define  XTAL  11059200

unsigned char Delay8Plus2xCycles (unsigned char x);
unsigned char Delay8Plus2nCycles (unsigned char LoopCount)
{
    while (--LoopCount);
    return (LoopCount);
}

#define Crystal  11059200L          /* Crystal speed */
#define ClockRes (Crystal/12)       /* Clock ticks per second */

#define NanoSecondsPerCycle (1000000000L / ClockRes)
#define uSecToInstCycles(x) ((1000L * (x)) / NanoSecondsPerCycle)

/*
#define NOPS(x)		\ 
	(((x) &amp; 1) ? _nop_() : 0), \ 
	(((x) &amp; 2) ? _nop_(),_nop_() : 0), \ 
	(((x) &amp; 4) ? _nop_(),_nop_(),_nop_(),_nop_() : 0), \ 
	(((x) &amp; 8) ? _nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_() : 0)*/

/*****************************************************************************************
********************		*MICRO SEC DELAY MACRO				***************************																	  
*****************************************************************************************/
#define Delay_us(InstCycles) \ 
     (((InstCycles) &amp;  1) ? _nop_() : 0), \ 
     (((InstCycles) &amp;  2) ? _nop_(),_nop_() : 0), \ 
     (((InstCycles) &amp; ~7) ? Delay8Plus2nCycles(((InstCycles/4)-2)*2) \ 
     : (((InstCycles) &amp; 4) ? _nop_(),_nop_(),_nop_(),_nop_() : 0))

/*****************************************************************************************
********************		*DELAY IN MILI SECONDS	***********************************																	  
*****************************************************************************************/	 
void Delay_ms(unsigned  Time_ms) ;
void Delay_ms(unsigned  Time_ms) {
  unsigned long NumberOfCyc;
  NumberOfCyc =XTAL / 12000; // this will be done by compiler, no asm will be genereated except that for assignment;
  NumberOfCyc = NumberOfCyc *  Time_ms;
  NumberOfCyc = NumberOfCyc &gt;&gt; 5; // Dec and While below take around 32 instructions

  if (NumberOfCyc &gt; 8)
    NumberOfCyc -= 8;
  else
    NumberOfCyc = 0;   
  while (NumberOfCyc)             //  while loop takes 32 cycles
    {                             //
      --NumberOfCyc;              //
      _nop_();                   //
      _nop_();                    //
      _nop_();                    //                       
    }
}
/*****************************************************************************************
*********************			THE END				**********************************																	  
*****************************************************************************************/
#endif
/*****************************************************************************************
*********************		PLEASE DONOT EDIT			**********************************																	  
*****************************************************************************************/</description>
		<content:encoded><![CDATA[<p>for those asking for the header files publication, I have added the header files I used&#8230;&#8230; Regards</p>
<p>/************************************************************************************<br />
*********************FPM10A HEADER / DRIVER	&#8230;.WRITTEN BY SUNDAY*******************<br />
*****************COPY RIGHT &#8230; MICROSCALE EMBEDDED LTD. KADUNA NIG.*****************<br />
************************************************************************************/<br />
#ifndef __LIB_FPM10A_H__<br />
#define __LIB_FPM10A_H__<br />
/************************************************************************************<br />
************************************BASIC STORAGE DEFINTION*************************<br />
************************************************************************************/<br />
char cnt;<br />
unsigned int Templete_Num;<br />
unsigned int ACK_Sum;</p>
<p>//unsigned char idata RECEVICE_BUFFER[24];<br />
unsigned char idata receive_ACK[15];<br />
//char idata  receive_command[20];<br />
/************************************************************************************<br />
***************************FINGERPRINT PROTOCAL DEFINITION**************************<br />
************************************************************************************/<br />
const unsigned char code FP_SetPwd[10] = {0&#215;01,0&#215;00,0&#215;07,0&#215;12,0xff,0xff,0xff,0xff,0&#215;04,0&#215;16};<br />
const unsigned char code FP_Pack_Head[6] = {0xEF,0&#215;01,0xFF,0xFF,0xFF,0xFF};                                               //protcol header<br />
const unsigned char code FP_VfyPwd[10] = {0&#215;01,0&#215;00,0&#215;07,0&#215;13,0xff,0xff,0xff,0xff,0&#215;04,0&#215;17};<br />
const unsigned char code FP_Get_Img[6] = {0&#215;01,0&#215;00,0&#215;03,0&#215;01,0&#215;00,0&#215;05};                                                  //get/record fingerprint image<br />
const unsigned char code FP_Templete_Num[6] ={0&#215;01,0&#215;00,0&#215;03,0x1D,0&#215;00,0&#215;21 };                                            //get total number of template<br />
const unsigned char data FP_Search[11]={0&#215;01,0&#215;00,0&#215;08,0&#215;04,0&#215;01,0&#215;00,0&#215;00,0&#215;03,0xA1,0&#215;0,0xB2};                              //search range of fingeprints 0 &#8211; 929<br />
const unsigned char data FP_Search_0_9[11]={0&#215;01,0&#215;00,0&#215;08,0&#215;04,0&#215;01,0&#215;0,0&#215;00,0&#215;00,0&#215;13,0&#215;00,0&#215;21};                           //search fingerprint no.0-9<br />
unsigned char idata FP_Img_To_Buffer1[7]={0&#215;01,0&#215;00,0&#215;04,0&#215;02,0&#215;01,0&#215;0,0&#215;08};                                               //save image to BUFFER1<br />
unsigned char idata FP_Img_To_Buffer2[7]={0&#215;01,0&#215;00,0&#215;04,0&#215;02,0&#215;02,0&#215;0,0&#215;09};                                               //save image to BUFFER2<br />
unsigned char idata FP_Reg_Model[6]={0&#215;01,0&#215;00,0&#215;03,0&#215;05,0&#215;0,0&#215;09};                                                         //Combine BUFFER1 and BUFFER2 to generate feature template<br />
unsigned char idata FP_Delet_All_Model[6]={0&#215;01,0&#215;00,0&#215;03,0x0d,0&#215;00,0&#215;11};                                                  //clean up all templates in fingerprint module<br />
unsigned char idata FP_Reg_Match[6]={0&#215;01,0&#215;00,0&#215;03,0&#215;03,0&#215;00,0&#215;07};                                                       //compare charbuffer1 and charbuffer2<br />
unsigned char FP_Reg_Store[9]={0&#215;01,0&#215;00,0&#215;06,0&#215;06,0&#215;02,0&#215;00,0&#215;00,0&#215;00,0x0f};                                        //save charbuffer2 to template  ID0<br />
unsigned char FP_Reg_LoadChar[9]={0&#215;01,0&#215;00,0&#215;06,0&#215;07,0&#215;02,0&#215;00,0&#215;00,0&#215;00,0&#215;10};                                     //read  template ID0 to charbuffer2<br />
volatile unsigned char idata FP_Save_Finger[9]={0&#215;01,0&#215;00,0&#215;06,0&#215;06,0&#215;01,0&#215;00,0x0B,0&#215;00,0&#215;19};                            //save the feature of BUFFER1 to specified position<br />
volatile unsigned char idata FP_Delete_Model[10]={0&#215;01,0&#215;00,0&#215;07,0x0C,0&#215;00,0&#215;0,0&#215;00,0&#215;01,0&#215;00,0&#215;00};<br />
/************************************************************************************<br />
************************************ACK storage, 12 bytes****************************<br />
************************************************************************************/<br />
void array_ACK(unsigned char temp)<br />
{<br />
unsigned char i;<br />
    for( i=0;i&lt;temp;i++)<br />
    {<br />
       receive_ACK[i]= getkey();<br />
    }<br />
}<br />
/************************************************************************************<br />
************************************PASSWORD VERIFICATION COMMAND*******************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_vfypwd(void)<br />
{<br />
    unsigned char i;</p>
<p>    for(i=0;i&lt;6;i++) //send header<br />
       putchar(FP_Pack_Head[i]);</p>
<p>    for(i=0;i&lt;10;i++) //send command 0x1d<br />
       putchar(FP_VfyPwd[i]);<br />
}<br />
/************************************************************************************<br />
************************************PASSWORD SET COMMAND****************************<br />
************************************************************************************/<br />
 void FINGERPRINT_Cmd_Setpwd(void)<br />
{<br />
    unsigned char i;</p>
<p>    for(i=0;i&lt;6;i++) //send header<br />
       putchar(FP_Pack_Head[i]);</p>
<p>    for(i=0;i&lt;10;i++) //send command 0x1d<br />
       putchar(FP_SetPwd[i]);<br />
}<br />
/************************************************************************************<br />
************************************GETS FINGER PRINT ON SCANNER*********************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Get_Img(void)<br />
{<br />
    unsigned char i;<br />
    for(i=0;i&lt;6;i++) //send header<br />
       putchar(FP_Pack_Head[i]);</p>
<p>    for(i=0;i&lt;6;i++) //send command 0x1d<br />
       putchar(FP_Get_Img[i]);<br />
}<br />
/************************************************************************************<br />
************************************SAVES IMAGE TO BUFFER1****************************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Img_To_Buffer1(void)<br />
{<br />
 	    unsigned char i;<br />
	       for(i=0;i&lt;6;i++)<br />
		   putchar(FP_Pack_Head[i]);   </p>
<p>   		   for(i=0;i&lt;7;i++)<br />
		   putchar(FP_Img_To_Buffer1[i]);<br />
}<br />
/************************************************************************************<br />
************************************SAVES IMAGE TO BUFFER2***************************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Img_To_Buffer2(void)<br />
{<br />
     unsigned char i;<br />
           for(i=0;i&lt;6;i++)<br />
		   putchar(FP_Pack_Head[i]);</p>
<p>   		   for(i=0;i&lt;7;i++)<br />
		   putchar(FP_Img_To_Buffer2[i]);<br />
}<br />
/************************************************************************************<br />
************************************REG MODEL BUFFER1 AND BUFFER2********************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Reg_Model(void)<br />
{<br />
    unsigned char i;<br />
    for(i=0;i&lt;6;i++)<br />
	putchar(FP_Pack_Head[i]);</p>
<p>    for(i=0;i&lt;6;i++)<br />
	putchar(FP_Reg_Model[i]);<br />
}<br />
/************************************************************************************<br />
****************************COMPARES CONTENTS OF BUFFER1 AND BUFFER2*****************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Match(void)<br />
{<br />
    unsigned char i;<br />
    for(i=0;i&lt;6;i++)<br />
	putchar(FP_Pack_Head[i]); </p>
<p>    for(i=0;i&lt;6;i++)<br />
	putchar(FP_Reg_Match[i]);<br />
}<br />
/************************************************************************************<br />
****************************STORES CONTENTS OF BUFFER1 AND BUFFER2*****************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Store(void)<br />
{<br />
    unsigned char i;<br />
    for(i=0;i&lt;6;i++)<br />
	putchar(FP_Pack_Head[i]);</p>
<p>    for(i=0;i&lt;9;i++)<br />
	putchar(FP_Reg_Store[i]);<br />
}<br />
/************************************************************************************<br />
************************************ DATA TO BUFFER1 OR BUFFER2**********************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_LoadChar(void)<br />
{<br />
    unsigned char i;    </p>
<p>    for(i=0;i&lt;6;i++)<br />
      putchar(FP_Pack_Head[i]);   </p>
<p>    for(i=0;i&lt;9;i++)<br />
      putchar(FP_Reg_LoadChar[i]);<br />
}<br />
/************************************************************************************<br />
**********************************DELETES ALL FINGER PRINT MODULES******************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Delete_All_Model(void)<br />
{<br />
     unsigned char i;    </p>
<p>    for(i=0;i&lt;6;i++)<br />
      putchar(FP_Pack_Head[i]);   </p>
<p>    for(i=0;i&gt;8;<br />
	FP_Delete_Model[5]=(uiID_temp&amp;0x00FF);</p>
<p>	for(i=0;i&gt;8;<br />
	FP_Delete_Model[9]=uiSum_temp&amp;0x00FF;</p>
<p>    for(i=0;i&lt;6;i++)<br />
      putchar(FP_Pack_Head[i]);   </p>
<p>    for(i=0;i&lt;10;i++)<br />
      putchar(FP_Delete_Model[i]);<br />
}<br />
/************************************************************************************<br />
************************************GETS TEMPLATE NUMBER ****************************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Get_Templete_Num(void)<br />
{  unsigned int i;<br />
//  unsigned char temp[14];<br />
   for(i=0;i&lt;6;i++)<br />
      putchar(FP_Pack_Head[i]);<br />
   for(i=0;i&lt;6;i++)<br />
     putchar(FP_Templete_Num[i]);<br />
}<br />
/************************************************************************************<br />
*****************SEARCHES FINGER PRINT MODULE ***************************************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Search_Finger(void)<br />
{<br />
       unsigned char i;<br />
	   for(i=0;i&lt;6;i++)<br />
	   putchar(FP_Pack_Head[i]);</p>
<p>       for(i=0;i&lt;11;i++)<br />
	   putchar(FP_Search[i]);<br />
}<br />
/************************************************************************************<br />
******************************SEARCHES FINGER PRINT MODULE **************************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Search_Finger_Admin(void)<br />
{<br />
       unsigned char i;<br />
	   for(i=0;i&lt;6;i++)<br />
	   putchar(FP_Pack_Head[i]);   </p>
<p>       for(i=0;i&lt;11;i++)<br />
	   putchar(FP_Search_0_9[i]);<br />
}<br />
/************************************************************************************<br />
************************************SAVES FINGER PRINT MODULE************************<br />
************************************************************************************/<br />
void FINGERPRINT_Cmd_Save_Finger( unsigned char ucH_Char,unsigned char ucL_Char )<br />
{<br />
           unsigned long temp = 0;<br />
		   unsigned char i;</p>
<p>           FP_Save_Finger[5] = ucH_Char;<br />
           FP_Save_Finger[6] = ucL_Char;</p>
<p>		   for(i=0;i&gt; 8;<br />
		   FP_Save_Finger[8]= temp &amp; 0x0000FF;</p>
<p>           for(i=0;i&lt;6;i++)<br />
    	      putchar(FP_Pack_Head[i]);      </p>
<p>           for(i=0;i&gt; 4) &amp; 0x0F)|LCD_EN;<br />
        DATA_PORT  = ((cmd &gt;&gt; 4) &amp; 0x0F);</p>
<p>        DATA_PORT  = (cmd &amp; 0x0F)|LCD_EN;<br />
        DATA_PORT  = (cmd &amp; 0x0F);</p>
<p>        Delay_ms(10);<br />
}<br />
/*****************************************************************************************<br />
*********************FUNCTION TO DISPLAY CHARACTER ON THE LCD********************************<br />
*****************************************************************************************/<br />
void Lcd_Data (unsigned dat)<br />
{<br />
        DATA_PORT  = (((dat &gt;&gt; 4) &amp; 0x0F)|LCD_EN|LCD_RS);<br />
        DATA_PORT  = (((dat &gt;&gt; 4) &amp; 0x0F)|LCD_RS);</p>
<p>        DATA_PORT  = ((dat &amp; 0x0F)|LCD_EN|LCD_RS);<br />
        DATA_PORT = ((dat &amp; 0x0F)|LCD_RS);</p>
<p>        Delay_ms(5);<br />
}</p>
<p>/*****************************************************************************************<br />
*********************LCD INITIALIZATION PARAMETERS****************************************<br />
*****************************************************************************************/<br />
void Lcd_Init ()<br />
{<br />
        Lcd_Reset();         // Call LCD reset<br />
        Lcd_Cmd (0&#215;28);       // 4-bit mode &#8211; 2 line &#8211; 5&#215;7 font.<br />
        Lcd_Cmd (0x0C);       // Display no cursor &#8211; no blink.<br />
        Lcd_Cmd (0&#215;06);       // Automatic Increment &#8211; No Display shift.<br />
        Lcd_Cmd (0&#215;80);       // Address DDRAM with 0 offset 80h.<br />
 }<br />
 /*****************************************************************************************<br />
*********************PLACES THE LCD CURSOR AT ANY POSITION ON THE DISPLY******************<br />
*****************************************************************************************/<br />
void Lcd_Cursor (char row, char column)<br />
{<br />
  switch (row) {<br />
    case 1: Lcd_Cmd (0&#215;80 + column &#8211; 1); break;<br />
    case 2: Lcd_Cmd (0xc0 + column &#8211; 1); break;<br />
    //case 3: Lcd_Cmd(0&#215;94 + column &#8211; 1); break;<br />
   // case 4: Lcd_Cmd (0xd4 + column &#8211; 1); break;<br />
    default: break;<br />
  }<br />
}<br />
/*****************************************************************************************<br />
*********************FUNCTION TO DISPLAY STRING ON THE LCD********************************<br />
*****************************************************************************************<br />
void Lcd_Chr(char row, char column, char c)<br />
{<br />
	Lcd_Cursor (row, column);<br />
		Lcd_Data(c);<br />
}<br />
/*****************************************************************************************<br />
*********************FUNCTION TO DISPLAY STRING ON THE LCD********************************<br />
*****************************************************************************************/<br />
void Lcd_Write(char row, char column, char *s)<br />
{<br />
	Lcd_Cursor (row, column);<br />
	while (*s)<br />
	{<br />
		Lcd_Data(*(s++));<br />
	}<br />
	return;<br />
}<br />
/*****************************************************************************************<br />
*********************SCROLLS TEXT ON LCD SCREEN*******************************************<br />
***************************************************************************************** /<br />
void Lcd_Scroll(char *word)<br />
{<br />
	char *pos; // character pointers<br />
	char *adder;<br />
	int i,displayLen;<br />
	pos=word;<br />
	displayLen=16;<br />
	while (*pos != &#8221;)<br />
	{<br />
		i=0;<br />
		adder=pos;<br />
		while ((i&lt;displayLen)&amp;&amp;(*adder!=&#039;&#039;))<br />
		{<br />
			Lcd_Data(*adder);<br />
			adder++;<br />
			i++;<br />
		}<br />
		 Delay_ms(200);<br />
		Lcd_Cmd(_LCD_CLEAR);<br />
		pos++;<br />
	}<br />
}</p>
<p>/*****************************************************************************************<br />
*********************DISPLAY CHARACTER ON LCD AND USART***********************************<br />
*****************************************************************************************/<br />
#endif<br />
/*****************************************************************************************<br />
********ENLOY*************ENJOY***********ENJOY***************ENJOY*************ENJOY******<br />
*****************************************************************************************/</p>
<p>Lib _Uart.h<br />
/***************************************************************************<br />
(((((((((((((((((((((((((((UART ..HEADER FILE&#8230;SUNDAY))))))))))))))))))))))<br />
****************************************************************************/<br />
#ifndef __Lb_Uart_H__<br />
#define __Lb_Uart_H__</p>
<p>#define  FOSC  11059200//11059200	///xtal value<br />
/***************************************************************************<br />
(((((((((((((((((((((((((((BACIC SERIAL COM INITIALS))))))))))))))))))))))))<br />
****************************************************************************/<br />
void Uart_Init(unsigned long  BPS)<br />
{<br />
	#ifndef MONITOR51<br />
    SCON  = 0&#215;50;		        /* SCON: mode 1, 8-bit UART, enable rcvr      */<br />
    TMOD |= 0&#215;21;               /* TMOD: timer 1, mode 2, 8-bit reload        */<br />
		if(BPS==1200) {TH1=0xE8;TL1=0xE;}<br />
		if(BPS==2400) {TH1=0xF4;TL1=0xF4;}<br />
		if(BPS==4800) {TH1=0xFA;TL1=0xFA;}<br />
		if(BPS==9600) {TH1=0xFD;TL1=0xFD;}<br />
		if(BPS==19200) {TH1=0xFD;TL1=0xFD; PCON=0&#215;80;}<br />
		if(BPS==28800) {TH1=0xFF;TL1=0xFF; }<br />
		if(BPS==38400) {TH1=0xFE;TL1=0xFE;;PCON=0&#215;80;}<br />
		if(BPS==57600) {TH1=0xFF;TL1=0xFF;PCON=0&#215;80;}<br />
    TR1   = 1;                  /* TR1:  timer 1 run                          */<br />
    TI    = 1;                  /* TI:   set TI to send first char of UART    */<br />
	#endif<br />
}<br />
#endif<br />
/***************************************************************************<br />
((((((((((NOTE:The baud rate  is accurate only at values ranging))))))))))))<br />
 (((((((from 9600 to 1200////any bps  above 9600 gives errors))))))))))))///<br />
****************************************************************************/</p>
<p>Lib_Delay.h</p>
<p>/*****************************************************************************************<br />
*********************LIB_DELAY.H FOR 8051			***********************************<br />
*****************************************************************************************/<br />
#ifndef Lib_Delay_H_<br />
#define Lib_Delay_H_<br />
#include<br />
#define  XTAL  11059200</p>
<p>unsigned char Delay8Plus2xCycles (unsigned char x);<br />
unsigned char Delay8Plus2nCycles (unsigned char LoopCount)<br />
{<br />
    while (&#8211;LoopCount);<br />
    return (LoopCount);<br />
}</p>
<p>#define Crystal  11059200L          /* Crystal speed */<br />
#define ClockRes (Crystal/12)       /* Clock ticks per second */</p>
<p>#define NanoSecondsPerCycle (1000000000L / ClockRes)<br />
#define uSecToInstCycles(x) ((1000L * (x)) / NanoSecondsPerCycle)</p>
<p>/*<br />
#define NOPS(x)		\<br />
	(((x) &amp; 1) ? _nop_() : 0), \<br />
	(((x) &amp; 2) ? _nop_(),_nop_() : 0), \<br />
	(((x) &amp; 4) ? _nop_(),_nop_(),_nop_(),_nop_() : 0), \<br />
	(((x) &amp; <img src='http://microscale-embedded.com/blog/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ? _nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_() : 0)*/</p>
<p>/*****************************************************************************************<br />
********************		*MICRO SEC DELAY MACRO				***************************<br />
*****************************************************************************************/<br />
#define Delay_us(InstCycles) \<br />
     (((InstCycles) &amp;  1) ? _nop_() : 0), \<br />
     (((InstCycles) &amp;  2) ? _nop_(),_nop_() : 0), \<br />
     (((InstCycles) &amp; ~7) ? Delay8Plus2nCycles(((InstCycles/4)-2)*2) \<br />
     : (((InstCycles) &amp; 4) ? _nop_(),_nop_(),_nop_(),_nop_() : 0))</p>
<p>/*****************************************************************************************<br />
********************		*DELAY IN MILI SECONDS	***********************************<br />
*****************************************************************************************/<br />
void Delay_ms(unsigned  Time_ms) ;<br />
void Delay_ms(unsigned  Time_ms) {<br />
  unsigned long NumberOfCyc;<br />
  NumberOfCyc =XTAL / 12000; // this will be done by compiler, no asm will be genereated except that for assignment;<br />
  NumberOfCyc = NumberOfCyc *  Time_ms;<br />
  NumberOfCyc = NumberOfCyc &gt;&gt; 5; // Dec and While below take around 32 instructions</p>
<p>  if (NumberOfCyc &gt; <img src='http://microscale-embedded.com/blog/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' />     NumberOfCyc -= 8;<br />
  else<br />
    NumberOfCyc = 0;<br />
  while (NumberOfCyc)             //  while loop takes 32 cycles<br />
    {                             //<br />
      &#8211;NumberOfCyc;              //<br />
      _nop_();                   //<br />
      _nop_();                    //<br />
      _nop_();                    //<br />
    }<br />
}<br />
/*****************************************************************************************<br />
*********************			THE END				**********************************<br />
*****************************************************************************************/<br />
#endif<br />
/*****************************************************************************************<br />
*********************		PLEASE DONOT EDIT			**********************************<br />
*****************************************************************************************/</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Control Appliances using SMS by kumar</title>
		<link>http://microscale-embedded.com/blog/?p=132#comment-236</link>
		<dc:creator>kumar</dc:creator>
		<pubDate>Mon, 26 Mar 2012 11:41:16 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=132#comment-236</guid>
		<description>hi abbas, i am using the same concept of controlling the device using SMS, i executed the similar code in AVR STUDIO5 but it  giving errors, I had one doubt ,can u plz tell me the  controller has to read the sms from sim300 for that AT+CMGR is not required?  

		if(rx[i-2]==13 &amp;&amp; rx[i-1]==10)
		{
			rx[i-1]=&#039;&#039;;
			rx[i-2]=&#039;&#039;;
			i=0;

can u plz tell me the functioning of this block before any string comparison....

thanks in advance</description>
		<content:encoded><![CDATA[<p>hi abbas, i am using the same concept of controlling the device using SMS, i executed the similar code in AVR STUDIO5 but it  giving errors, I had one doubt ,can u plz tell me the  controller has to read the sms from sim300 for that AT+CMGR is not required?  </p>
<p>		if(rx[i-2]==13 &amp;&amp; rx[i-1]==10)<br />
		{<br />
			rx[i-1]=&#8221;;<br />
			rx[i-2]=&#8221;;<br />
			i=0;</p>
<p>can u plz tell me the functioning of this block before any string comparison&#8230;.</p>
<p>thanks in advance</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Finger print based security system by pirusrch</title>
		<link>http://microscale-embedded.com/blog/?p=143#comment-235</link>
		<dc:creator>pirusrch</dc:creator>
		<pubDate>Sun, 25 Mar 2012 19:30:24 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=143#comment-235</guid>
		<description>Is ther a way that you can publish all header files?</description>
		<content:encoded><![CDATA[<p>Is ther a way that you can publish all header files?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Control Appliances using SMS by admin</title>
		<link>http://microscale-embedded.com/blog/?p=132#comment-234</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 07 Mar 2012 11:38:19 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=132#comment-234</guid>
		<description>@embedded java master, 
can you redo this project using java/MIDP? we will post it....

and by the way, not all applications requires a graphical user interface. when we need to use GUI we develop on java/android and other platforms such as ucGUi. if you have a sample that uses MIDP, please share...</description>
		<content:encoded><![CDATA[<p>@embedded java master,<br />
can you redo this project using java/MIDP? we will post it&#8230;.</p>
<p>and by the way, not all applications requires a graphical user interface. when we need to use GUI we develop on java/android and other platforms such as ucGUi. if you have a sample that uses MIDP, please share&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Control Appliances using SMS by embeded java master</title>
		<link>http://microscale-embedded.com/blog/?p=132#comment-233</link>
		<dc:creator>embeded java master</dc:creator>
		<pubDate>Wed, 07 Mar 2012 10:43:24 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=132#comment-233</guid>
		<description>is high time we shun des AT command of a thing to capture native SMS for sms remoting , we can use a higher techniques by writing a java application to run a MIDP devices (any java enabled Nokia phone modem) . using  a Generic connection Framework for  the SMS protocol.  then interface d phone modem to a micro-controller unit via its UART/USART interface. instead of  typing device1 ON , a user interface will be created in  the  user phone where he or she can initiate control via SMS. contact me  to learn more about that----08064288259 , email;  tsokohfrank@yahoo.com</description>
		<content:encoded><![CDATA[<p>is high time we shun des AT command of a thing to capture native SMS for sms remoting , we can use a higher techniques by writing a java application to run a MIDP devices (any java enabled Nokia phone modem) . using  a Generic connection Framework for  the SMS protocol.  then interface d phone modem to a micro-controller unit via its UART/USART interface. instead of  typing device1 ON , a user interface will be created in  the  user phone where he or she can initiate control via SMS. contact me  to learn more about that&#8212;-08064288259 , email;  <a href="mailto:tsokohfrank@yahoo.com">tsokohfrank@yahoo.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Control Appliances using SMS by embeded java master</title>
		<link>http://microscale-embedded.com/blog/?p=132#comment-232</link>
		<dc:creator>embeded java master</dc:creator>
		<pubDate>Wed, 07 Mar 2012 10:37:19 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=132#comment-232</guid>
		<description>U DONT</description>
		<content:encoded><![CDATA[<p>U DONT</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Finger print based security system by embeded java master</title>
		<link>http://microscale-embedded.com/blog/?p=143#comment-231</link>
		<dc:creator>embeded java master</dc:creator>
		<pubDate>Wed, 07 Mar 2012 10:18:05 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=143#comment-231</guid>
		<description>wel d code is okay . but i dont tink is a good practise to make most section of d program flow implemented in header file level.  for d sake of some beginners , d header file shud hav been neglected or shown ......</description>
		<content:encoded><![CDATA[<p>wel d code is okay . but i dont tink is a good practise to make most section of d program flow implemented in header file level.  for d sake of some beginners , d header file shud hav been neglected or shown &#8230;&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Build your own Calculator using PIC16F887, 16x2LCD and 4&#215;4 keypad by levuphuong</title>
		<link>http://microscale-embedded.com/blog/?p=184#comment-230</link>
		<dc:creator>levuphuong</dc:creator>
		<pubDate>Sat, 25 Feb 2012 17:06:36 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=184#comment-230</guid>
		<description>thanks Jude Ozioko
i run your code.it&#039;s good,but it can&#039;t display a number decimal.
printf(lcd_putc,&quot;%15.0f&quot;, display);
can you fix it,please?</description>
		<content:encoded><![CDATA[<p>thanks Jude Ozioko<br />
i run your code.it&#8217;s good,but it can&#8217;t display a number decimal.<br />
printf(lcd_putc,&#8221;%15.0f&#8221;, display);<br />
can you fix it,please?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Build your own Calculator using PIC16F887, 16x2LCD and 4&#215;4 keypad by drfixit</title>
		<link>http://microscale-embedded.com/blog/?p=184#comment-228</link>
		<dc:creator>drfixit</dc:creator>
		<pubDate>Tue, 24 Jan 2012 03:58:59 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=184#comment-228</guid>
		<description>...thanks alot Jude. I&#039;ll try out your suggestions. I&#039;ll be expecting the hex codes still. God bless...</description>
		<content:encoded><![CDATA[<p>&#8230;thanks alot Jude. I&#8217;ll try out your suggestions. I&#8217;ll be expecting the hex codes still. God bless&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Build your own Calculator using PIC16F887, 16x2LCD and 4&#215;4 keypad by Jude Ozioko</title>
		<link>http://microscale-embedded.com/blog/?p=184#comment-227</link>
		<dc:creator>Jude Ozioko</dc:creator>
		<pubDate>Sat, 21 Jan 2012 21:34:05 +0000</pubDate>
		<guid isPermaLink="false">http://microscale-embedded.com/blog/?p=184#comment-227</guid>
		<description>Hello drfixit,
This code was written with ccs c language. You have to install ccs c compiler before you can use the code. You will also replace this first line #include &quot;main.h&quot; with the following lines of code before it can compile.
#include     //The header file for the MCU you are using
#fuses XT, NOWDT, NOLVP
#use delay(clock = 4000000)    // 4000000 is the crystal value for 4MHz crytal

I will post the hex file if I recompile the code,but I will suggest that you try it again with this modification. If you don&#039;t have the ccs c compiler, you can download the demo version from this link http://ccsinfo.com/ccsfreedemo.php</description>
		<content:encoded><![CDATA[<p>Hello drfixit,<br />
This code was written with ccs c language. You have to install ccs c compiler before you can use the code. You will also replace this first line #include &#8220;main.h&#8221; with the following lines of code before it can compile.<br />
#include     //The header file for the MCU you are using<br />
#fuses XT, NOWDT, NOLVP<br />
#use delay(clock = 4000000)    // 4000000 is the crystal value for 4MHz crytal</p>
<p>I will post the hex file if I recompile the code,but I will suggest that you try it again with this modification. If you don&#8217;t have the ccs c compiler, you can download the demo version from this link <a href="http://ccsinfo.com/ccsfreedemo.php" rel="nofollow">http://ccsinfo.com/ccsfreedemo.php</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

