<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/&quot;CEYFSX06fSp7ImA9Wx9UGUs.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469</id><updated>2011-02-17T22:01:58.315+05:00</updated><title>Embedded Systems</title><subtitle type='html'>This blog is dedicated to Embedded Systems Engineering in particular and to informative articles and discussions on social matters and technology in general.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default?redirect=false&amp;v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry gd:etag='W/&quot;CEYFSX05eyp7ImA9Wx9UGUs.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-7658170900835931427</id><published>2011-02-17T19:38:00.004+05:00</published><updated>2011-02-17T22:01:58.323+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-17T22:01:58.323+05:00</app:edited><title>Parsing of GPS Data with PIC Microcontroller for Extraction and Processing of useful information</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;GPS stands for Global Positioning System.&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This is a space-based global navigation satellite system.GPS&amp;nbsp; provides reliable time and location information at all times and in all weather anywhere on or  near the Earth. However for its normal operation a GPS receiver needs an &lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=B000CSOXTO&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;unobstructed line of sight communication link to  four or more GPS satellites. It is maintained by the US government and is freely accessible anywhere around the world with a GPS receiver.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Raw GPS data need to be parsed so that useful information like position (in terms of Latitude and Longitude Coordinates),time,speed and date etc. may be extracted from the GPS receiver that is interfaced with computer or micorocntroller.Of the multiple strings generated by GPS Engine, one string starting with "$GPRMC" is of prime importance.This string contains almost alll the necessary information that may be required for tracking of a moving object like vehicle or person etc.The second important string produced by GPS engine is the string starting with "&lt;/span&gt;&lt;span style="font-size: small;"&gt;$GPGSV&lt;/span&gt;&lt;span style="font-size: small;"&gt;" which contains the information regarding the number of satellites that are visible to the GPS receiver.The information regarding satellites is important for the reason that at least four satellites should be visible to the GPS receiver for accurate estimation of location and time.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(under construction...)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-7658170900835931427?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/7658170900835931427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/parsing-of-gps-data-with-pic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/7658170900835931427?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/7658170900835931427?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/parsing-of-gps-data-with-pic.html' title='Parsing of GPS Data with PIC Microcontroller for Extraction and Processing of useful information'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;AkcAQngyeCp7ImA9Wx9UGEg.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-4389642213420991768</id><published>2011-02-16T15:48:00.010+05:00</published><updated>2011-02-16T17:07:23.690+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-16T17:07:23.690+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>SPI-to-SPI communication between two AVR microcontrollers in Master-Slave Mode</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;SPI stands for Serial Peripheral Interface.The Serial Peripheral Interface (SPI) allows high-speed synchronous data transfer between the ATmega32 and peripheral devices or between several AVR devices. The ATmega32 SPI includes the following features:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;br /&gt;
• Full-duplex, Three-wire Synchronous Data Transfer&lt;br /&gt;
• Master or Slave Operation&lt;br /&gt;
• LSB First or MSB First Data Transfer&lt;br /&gt;
• Seven Programmable Bit Rates&lt;br /&gt;
• End of Transmission Interrupt Flag&lt;br /&gt;
• Write Collision Flag Protection&lt;br /&gt;
• Wake-up from Idle Mode&lt;br /&gt;
• Double Speed (CK/2) Master SPI Mode&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;AVR micro-controller ATmega32 is equipped with a built-in hardware SPI port.For detailed description of SPI port of ATmega32 you may consult the data sheet of ATmega32 available at the website of &lt;a href="http://www2.atmel.com/"&gt;ATmel&lt;/a&gt;&lt;/span&gt; .&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The interconnection between Master and Slave CPUs with SPI is shown in the Figure 1 below.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-s-CeflK5JPk/TVutEDgLuaI/AAAAAAAAAFk/R2vYoQfpZAA/s1600/SPI-SPI+Master-Slave.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="147" src="http://1.bp.blogspot.com/-s-CeflK5JPk/TVutEDgLuaI/AAAAAAAAAFk/R2vYoQfpZAA/s400/SPI-SPI+Master-Slave.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Figure 1 : Master-Slave Interconnection between two CPUs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=B004N1N680&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;In this Proteus VSM based simulation i have demonstrated how two AVR micro-controller (ATmega32) may communicate with each other through their SPI ports in Master-Slave Mode.One micro-controller serves as master while the other one which is receiving data from master controller is serving as Slave.Though this code is not doing much it is just a demonstration of how you can make two AVR micro-controllers communicate withe each other through their SPI ports in Master-Slave Mode.In this simulation the master micro-controller is sending a character continuously to the slave micro-controller through SPI port,while the slave micro-controller is displaying that character, received from the master micro-controller through its SPI port, to the virtual terminal available in Proteus VSM through it serial port.The schematic diagram of this simulation is shown in the Figure 2.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7envLI41dws/TVuwkNebatI/AAAAAAAAAFo/tyfQgkkRyK8/s1600/cct01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://1.bp.blogspot.com/-7envLI41dws/TVuwkNebatI/AAAAAAAAAFo/tyfQgkkRyK8/s320/cct01.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Figure 2 : Circuit Schematic of simulation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;A screen shot of the test run of this simulation is shown in Figure 3 below.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-u65C82ojI9Y/TVu1auDM8DI/AAAAAAAAAFs/CVyPpb83kB0/s1600/cct02.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="229" src="http://3.bp.blogspot.com/-u65C82ojI9Y/TVu1auDM8DI/AAAAAAAAAFs/CVyPpb83kB0/s320/cct02.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Figure 3 : Screen Shot of simulation&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;C Code for Master Controller:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;//ICC-AVR application builder : 4/16/2009 6:56:37 PM&lt;br /&gt;
// Target : M32&lt;br /&gt;
// Crystal: 11.059Mhz&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iom32v.h&amp;gt;&lt;br /&gt;
#include &amp;lt;macros.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define cs 0x10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unsigned int timer0_counter=0,j=0;&lt;br /&gt;
&lt;br /&gt;
unsigned char testMsg[]="Hello this is test message for SPI-to-SPI\&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; communication in master-slave mode\n\r";&lt;br /&gt;
&lt;br /&gt;
void port_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTA = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRA&amp;nbsp; = 0x03;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTB = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRB&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC = 0x00; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRC&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTD = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRD&amp;nbsp; = 0x00;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//TIMER0 initialize - prescale:1024&lt;br /&gt;
// WGM: Normal&lt;br /&gt;
// desired value: 100Hz&lt;br /&gt;
// actual value: 100.933Hz (0.9%)&lt;br /&gt;
void timer0_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCCR0 = 0x00; //stop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCNT0 = 0x95; //set count&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;OCR0&amp;nbsp; = 0x6B;&amp;nbsp; //set compare&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCCR0 = 0x05; //start timer&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF&lt;br /&gt;
#pragma interrupt_handler timer0_ovf_isr:12&lt;br /&gt;
void timer0_ovf_isr(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCNT0 = 0x95; //reload counter value&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timer0_counter++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(timer0_counter==2)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA^=0x03;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; timer0_counter=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//SPI initialize&lt;br /&gt;
// clock rate: 2764749hz&lt;br /&gt;
void spi_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPCR = 0x50; //setup SPI - SPE,MSTR,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPSR = 0x00; //setup SPI&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//PORTB=(1&amp;lt;&amp;lt;PORTB4)|(1&amp;lt;&amp;lt;PORTB5)|(1&amp;lt;&amp;lt;PORTB7);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTB=(1&amp;lt;&amp;lt;PB4)|(1&amp;lt;&amp;lt;PB5)|(1&amp;lt;&amp;lt;PB7);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRB=(1&amp;lt;&amp;lt;DDB4)|(1&amp;lt;&amp;lt;DDB5)|(1&amp;lt;&amp;lt;DDB7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void SPI_MasterTransmit(char cData)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Start transmission */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPDR = cData;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Wait for transmission complete */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(!(SPSR &amp;amp; (1&amp;lt;&amp;lt;SPIF)))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//UART0 initialize&lt;br /&gt;
// desired baud rate: 57600&lt;br /&gt;
// actual: baud rate:57599 (0.0%)&lt;br /&gt;
void uart0_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = 0x00; //disable while setting baud rate&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRA = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRC = BIT(URSEL) | 0x06;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UBRRL = 0x0B; //set baud rate lo&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UBRRH = 0x00; //set baud rate hi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = 0x18;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//call this routine to initialize all peripherals&lt;br /&gt;
void init_devices(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//stop errant interrupts until set up&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLI(); //disable all interrupts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;port_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timer0_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;spi_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;uart0_init();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCUCR = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GICR&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TIMSK = 0x01; //timer interrupt sources&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SEI(); //re-enable interrupts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//all peripherals are now initialized&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; init_devices();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//insert your functional code here...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB &amp;amp;=~cs;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; SPI_MasterTransmit( 'a' );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; PORTB |=cs;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;/i&gt;                &lt;b&gt;&lt;br /&gt;
C Code for Slave Controller :&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;//ICC-AVR application builder : 3/31/2009 1:09:34 PM&lt;br /&gt;
// Target : M32&lt;br /&gt;
// Crystal: 11.059Mhz&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iom32v.h&amp;gt;&lt;br /&gt;
#include &amp;lt;macros.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unsigned char spiData = 0;&lt;br /&gt;
&lt;br /&gt;
unsigned int k = 0;&lt;br /&gt;
&lt;br /&gt;
void port_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTA = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRA&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTB = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRB&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC = 0x00; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRC&amp;nbsp; = 0x03;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTD = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRD&amp;nbsp; = 0x00;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//TIMER0 initialize - prescale:1024&lt;br /&gt;
// WGM: Normal&lt;br /&gt;
// desired value: 100Hz&lt;br /&gt;
// actual value: 100.933Hz (0.9%)&lt;br /&gt;
void timer0_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCCR0 = 0x00; //stop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCNT0 = 0x95; //set count&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;OCR0&amp;nbsp; = 0x6B;&amp;nbsp; //set compare&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCCR0 = 0x05; //start timer&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#pragma interrupt_handler timer0_ovf_isr:12&lt;br /&gt;
void timer0_ovf_isr(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCNT0 = 0x95; //reload counter value&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//SPI initialize&lt;br /&gt;
// clock rate: 2764749hz&lt;br /&gt;
void SPI_SlaveInit(void)&lt;br /&gt;
{&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTB=(1&amp;lt;&amp;lt;PB6);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPCR = 0x40; //setup SPI&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPSR = 0x00; //setup SPI&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char SPI_SlaveReceive(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Wait for reception complete */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(!(SPSR &amp;amp; (1&amp;lt;&amp;lt;SPIF)))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Return data register */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return SPDR;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//UART0 initialize&lt;br /&gt;
// desired baud rate: 57600&lt;br /&gt;
// actual: baud rate:57599 (0.0%)&lt;br /&gt;
void uart0_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = 0x00; //disable while setting baud rate&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRA = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRC = BIT(URSEL) | 0x06;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UBRRL = 0x0B; //set baud rate lo&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UBRRH = 0x00; //set baud rate hi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = 0x18;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//call this routine to initialize all peripherals&lt;br /&gt;
void init_devices(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//stop errant interrupts until set up&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLI(); //disable all interrupts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;port_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timer0_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPI_SlaveInit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;uart0_init();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCUCR = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GICR&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TIMSK = 0x01; //timer interrupt sources&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SEI(); //re-enable interrupts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//all peripherals are now initialized&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void USART_Transmit( unsigned char data )&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Wait for empty transmit buffer */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while ( !( UCSRA &amp;amp; (1&amp;lt;&amp;lt;UDRE)) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Put data into buffer, sends the data */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UDR = data;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;init_devices();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//insert your functional code here...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spiData=SPI_SlaveReceive();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if( (k%32)==0 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Transmit( '\r' );USART_Transmit( '\n' );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; k++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; USART_Transmit( spiData );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/i&gt;               &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-4389642213420991768?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/4389642213420991768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/spi-to-spi-communication-between-two.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/4389642213420991768?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/4389642213420991768?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/spi-to-spi-communication-between-two.html' title='SPI-to-SPI communication between two AVR microcontrollers in Master-Slave Mode'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-s-CeflK5JPk/TVutEDgLuaI/AAAAAAAAAFk/R2vYoQfpZAA/s72-c/SPI-SPI+Master-Slave.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DEQEQn87eSp7ImA9Wx9UGEs.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-5262814977872113269</id><published>2011-02-15T20:29:00.009+05:00</published><updated>2011-02-16T19:25:03.101+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-16T19:25:03.101+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Software UART for ATmega32 AVR microcontroller</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Sometimes,while developing a micro-controller based embedded system,you may find your &lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=007134666X&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;micro-controller short of built-in hardware peripheral resources like serial port,SPI port and I2C interface etc.,in such a case,if you cannot change the micro-controller that you are interested in utilizing in design of your embedded system,you may put your software development skills to work for you to solve this issue.You may develop code for adding additional dedicated peripheral ports like serial port to your existing micro-controller, without changing the micro-controller,to meet your design requirements,by utilizing general purpose IO ports.In such a case you can make a general purpose IO port behave like a dedicated&amp;nbsp; hardware peripheral port like serial port or SPI port etc.,.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;In this Proteus VSM simulation project,i have given a code for Software UART for ATmega32 AVR micro-controller.I have utilized general purpose IO pins 0 and 1 of PORTB of ATmega32 micro-controller.The screen shot of the test run of this simulation in Proteus VSM is shown in Figure 1 below:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-oW6Tt70_gus/TVqwVJQfWZI/AAAAAAAAAFY/ErDnwtSROqg/s1600/Fig01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://3.bp.blogspot.com/-oW6Tt70_gus/TVqwVJQfWZI/AAAAAAAAAFY/ErDnwtSROqg/s320/Fig01.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Figure 1 : Soft UART simulation and Schematic &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;For sharp timing control,the code for Soft UART has been written in Assembly Language for ATmega32.The C code simply prints a test string to the virtual terminal of Proteus VSM.Whenever any key is pressed, the C code prints the test string again on the virtual terminal&lt;/span&gt;&lt;/span&gt;.&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The C and Assembly Language Codes are given below.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;b&gt;C Code :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;//ICC-AVR application builder : 5/28/2009 3:28:30 PM&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// Target : M32&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// Crystal: 7.3728Mhz&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#include &amp;lt;iom32v.h&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#include &amp;lt;macros.h&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//function prototypes for soft_uart.s&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//one byte return value in R16 !!!&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;extern unsigned char Get_Character(void);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//one byte argument in R16 !!!&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;extern Put_Charcter(register unsigned char key);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//initialise TxD,RxD port pins&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;extern void init_soft_uart(void);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void port_init(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTA = 0xFF;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRA&amp;nbsp; = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTB = 0xFF;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRB&amp;nbsp; = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC = 0xFF; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRC&amp;nbsp; = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTD = 0xFF;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRD&amp;nbsp; = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//call this routine to initialize all peripherals&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void init_devices(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//stop errant interrupts until set up&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLI(); //disable all interrupts&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;port_init();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCUCR = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GICR&amp;nbsp; = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TIMSK = 0x00; //timer interrupt sources&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SEI(); //re-enable interrupts&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//all peripherals are now initialized&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void main(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char s;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned int j=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned char test_Message[] = "This is test message from Soft\&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART of ATmega32!!!\r\n";&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //default&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; init_devices();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //insert your functional code here...&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //do custom settings in sUART.s !!!&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;init_soft_uart();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(1)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for(j=0;j&amp;lt;sizeof(test_Message);j++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Put_Charcter(test_Message[j]);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s = Get_Character();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // press enter or any button to print more messages&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }//end while&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;Assembly Language Code:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;;*** Software UART for ATmega32 AVR Microntroller ***&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;*** Assembly Code for Soft UART&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ***&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;*** Developed in Imagecraft Compiler for AVR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ***&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.area text&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;....................................................................................&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;include correct file here ................................................ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.include "aiom32.s"&amp;nbsp; ;see path´s,same directory as *.h !!!&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;....................................................................................&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;volatile registers (not needed to restore)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.define bitcnt&amp;nbsp;&amp;nbsp;&amp;nbsp; R24 &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.define Temp_Variable R25&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.define TxD_Byte&amp;nbsp; R26&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.define RxD_Byte&amp;nbsp; R27&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;; ****** Customizable settings BEGIN ******&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;change here if wanted/required !!!&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.define out_port&amp;nbsp; PORTB ; PORTB is used for TxD here&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.define dir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDRB&amp;nbsp;&amp;nbsp; ; DDRB is used here&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;.define in_port&amp;nbsp;&amp;nbsp; PINB&amp;nbsp; ; PINB is used for RxD here &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;TxD = 0&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ; Px0 pin is used for sending &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;RxD = 1&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;; Px0 pin is used for receiving &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sb = 1&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ; 1 stop bit&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Osc_Frequency = 7372800&amp;nbsp; ; Crystal frequency&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Baud_Rate = 57600&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;; Serial bitrate in bps : 0.5% error&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;; ****** Customizable settings END ******&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;; The b value corresponds to the table on last page &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;; of Application Note AVR 305: Software UART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;b = (((Osc_Frequency/Baud_Rate)-22)/6) &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;function to init PORTx and DDRx for sending and receiving&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;_init_soft_uart::&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;for sending&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sbi out_port,TxD ;TxD is high&amp;nbsp;&amp;nbsp; - set bit in I/O register &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sbi dir,TxD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;TxD is output - clear bit in I/O register&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;for receiving&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sbi out_port,RxD ;RxD is pull up &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;cbi dir,RxD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;RxD is input&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;ret&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;function to send a byte :first argument is in R16&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;_Put_Charcter::&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp; &amp;nbsp;TxD_Byte,R16&amp;nbsp;&amp;nbsp; ;given char to TxD_Byte&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldi&amp;nbsp;&amp;nbsp; &amp;nbsp;bitcnt,9+sb&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;1+8+sb (sb is # of stop bits)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; com&amp;nbsp;&amp;nbsp; &amp;nbsp;TxD_Byte&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;inverte everything&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sec&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;start bit&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Put_Charcter0:&amp;nbsp;&amp;nbsp; &amp;nbsp;brcc&amp;nbsp;&amp;nbsp; &amp;nbsp;Put_Charcter1&amp;nbsp;&amp;nbsp; &amp;nbsp;;if carry set&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cbi&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out_port,TxD;send a '0'&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rjmp&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Put_Charcter2&amp;nbsp;&amp;nbsp; &amp;nbsp;;else&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Put_Charcter1:&amp;nbsp;&amp;nbsp; &amp;nbsp;sbi&amp;nbsp;&amp;nbsp; &amp;nbsp;out_port,TxD&amp;nbsp;&amp;nbsp; &amp;nbsp;;send a '1'&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nop&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Put_Charcter2:&amp;nbsp;&amp;nbsp; &amp;nbsp;rcall UART_Delay&amp;nbsp;&amp;nbsp; &amp;nbsp;;one bit delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rcall UART_Delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lsr&amp;nbsp; TxD_Byte&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;get next bit&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec&amp;nbsp;&amp;nbsp; &amp;nbsp; bitcnt&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;if not all bit sent&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; brne&amp;nbsp;&amp;nbsp; &amp;nbsp;Put_Charcter0&amp;nbsp; ;send next&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;else&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;done return&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;function for delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;UART_Delay:&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldi&amp;nbsp;&amp;nbsp; &amp;nbsp;Temp_Variable,b&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;UART_Delay01:&amp;nbsp;&amp;nbsp; &amp;nbsp;dec&amp;nbsp;&amp;nbsp; &amp;nbsp;Temp_Variable&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; brne&amp;nbsp;&amp;nbsp; &amp;nbsp;UART_Delay01&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;;function to receive a byte and return in R16&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;_Get_Character::&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ldi &amp;nbsp;&amp;nbsp; &amp;nbsp;bitcnt,9&amp;nbsp;&amp;nbsp; &amp;nbsp;;8 data bit + 1 stop bit&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Get_Character1:&amp;nbsp;&amp;nbsp; &amp;nbsp;sbic &amp;nbsp;&amp;nbsp; &amp;nbsp;in_port,RxD&amp;nbsp;&amp;nbsp; &amp;nbsp;;wait for start bit&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rjmp &amp;nbsp;&amp;nbsp; &amp;nbsp;Get_Character1&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rcall UART_Delay&amp;nbsp;&amp;nbsp; &amp;nbsp;;0.5 bit delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Get_Character2:&amp;nbsp;&amp;nbsp; &amp;nbsp;rcall UART_Delay&amp;nbsp;&amp;nbsp; &amp;nbsp;;1 bit delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rcall UART_Delay&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clc&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;clear carry&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sbic &amp;nbsp;&amp;nbsp; &amp;nbsp;in_port,RxD&amp;nbsp;&amp;nbsp; &amp;nbsp;;if RX pin high&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sec&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;set carry flag in SREG&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;dec &amp;nbsp;&amp;nbsp; &amp;nbsp;bitcnt&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;if bit is stop bit&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;breq &amp;nbsp;&amp;nbsp; &amp;nbsp;Get_Character3&amp;nbsp;&amp;nbsp; &amp;nbsp;;return&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;else&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ror &amp;nbsp;&amp;nbsp; &amp;nbsp;RxD_Byte&amp;nbsp;&amp;nbsp; &amp;nbsp;;shift bit into RxD_Byte&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rjmp &amp;nbsp;&amp;nbsp; &amp;nbsp;Get_Character2&amp;nbsp;&amp;nbsp; &amp;nbsp;;go get next&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Get_Character3:&amp;nbsp;&amp;nbsp; &amp;nbsp;mov R16,RxD_Byte&amp;nbsp;&amp;nbsp;&amp;nbsp; ;move RxD_Byte to R16&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;return from function call&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-5262814977872113269?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/5262814977872113269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/software-uart-for-atmega32-avr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/5262814977872113269?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/5262814977872113269?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/software-uart-for-atmega32-avr.html' title='Software UART for ATmega32 AVR microcontroller'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-oW6Tt70_gus/TVqwVJQfWZI/AAAAAAAAAFY/ErDnwtSROqg/s72-c/Fig01.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DkcASH0-fCp7ImA9Wx9UGEk.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-5170960984596178754</id><published>2011-02-12T23:30:00.032+05:00</published><updated>2011-02-16T13:14:09.354+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-16T13:14:09.354+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Difference between PDU mode and Text mode for SMS</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;1. Introduction &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Some applications need low cost,long range and reliable wireless connectivity&amp;nbsp; rather than high data rate wireless links.The GSM network employed by&amp;nbsp; mobile phones is particularly suitable for such applications.Mobile phone or GSM modem may be utilized for such applications where you need to remotely operate a switch or relay in your applications like turning on or turning off a fan,heater, or electric motor remotely by sending SMS to a mobile phone or GSM&amp;nbsp; modem interfaced with a micro-controller or computer in your control applications.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;The interface between a GSM modem or a cell phone and a host controller (PC or microcontoller) is a textual protocol call Hayes AT Commands.The GSM Modem or Cell phone can be made to perform different operations like text messaging,deleting messages and dialing etc.,through AT commands issued by host controller. &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;There are two modes of operation for sending&amp;nbsp; and receiving SMS through a GSM modem or a mobile phone when interfaced with a microcontroller or a PC:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
1. Text Mode&lt;br /&gt;
2. PDU (Protocol Description Unit) Mode &lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;By default most modems and mobile phones support PDU mode for sending and receiving SMS.Text mode in which any information or message may be read as a plain text is not supported by all modems and mobile phones.However,some modems and mobile phones do support text mode as well as PDU mode for sending and receiving SMS.Text mode is actually encoding of bit stream represented by PDU mode.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;You can select between PDU mode and text mode using AT commands.The following AT command returns the current status of the mode of the GSM modem:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;AT+CMGF?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &amp;lt;Enter&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;To set the text mode the following AT command is used:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;AT+CMGF = 1 &amp;lt;Enter&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;To set the PDU mode the following AT command is used:&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;AT+CMGF = 0 &amp;lt;Enter&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;2. PDU Mode&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;PDU mode offers support to send messages as either 8-bit per character or 7-bit per character.The SMS message is specified by the&amp;nbsp;&lt;a href="http://www.etsi.org/website/homepage.aspx"&gt;ETSI&lt;/a&gt; Organization (documents GSM 03.40 and GSM 03.38).According to these documents&amp;nbsp; the&amp;nbsp; maximum length of an SMS message could&amp;nbsp; be up to 160 characters,where each character according to GSM 03.38 is 7-bits in &lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=B002OT92CC&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;size.Mobile phones and GSM modems&amp;nbsp; usually do not treat eigit-bit messages (up to 140 characters) as text messages.Eight-bit messages are used for data like ring tones,images and Wap settings.Sixteen-bit messages (upto 70 characters) are viewable by most mobile phones .Sixteen-bit messages are used for Unicode (UCS32) text messages. &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;You can apply encryption,encoding and data compression to messages in PDU mode.There are several encoding options available when reading a SMS message in PDU mode.The most commonly available options in this regard are : "GSM", "PCDN", "PCCP437", "IRA" and "8859-1".While reading an SMS message in computer application,any of these options may be selected by the At-command "AT+CSCS". If&amp;nbsp; the SMS message is read by the cell phone, the&amp;nbsp; phone itself will choose the appropriate encoding.A computer Application developed for reading incoming SMS messages can be configured to employ either text mode or PDU mode. Text&amp;nbsp; mode deprives the user of flexibility to choose from several available encoding options.In text mode there is a limited set of options for encoding available for the application to choose from.&amp;nbsp; In some applications,this is not acceptable,in such a case PDU mode is a good choice&amp;nbsp; where any encoding option can be implemented.&lt;br /&gt;
There are three special data types that are supported&amp;nbsp; by PDU mode:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. Octet: Group of 8-bits in hexa-decimal encoding (0x00 - 0xFF),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; like D9.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. Semi-Octet: Group of 8-bits in decimal encoding (0 - 153),like 12.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. Septet : Group 7-bits in integer encoding (0 - 127) like 120.&lt;br /&gt;
&lt;br /&gt;
By default,7-bits are used by GSM alphabets to represent characters.The message "hello", when represented by 7-bits per character,comprises five characters called septets.For SMS transfer a septet string need to be encoded to octet stream for transfer through SMS.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-uOAcFNdRyqU/TVtpDq0YXCI/AAAAAAAAAFc/S0RvudsmNe4/s1600/compression.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="102" src="http://2.bp.blogspot.com/-uOAcFNdRyqU/TVtpDq0YXCI/AAAAAAAAAFc/S0RvudsmNe4/s400/compression.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Table 1 : Compression septet string into octet stream&lt;br /&gt;
&lt;br /&gt;
The first septet (&lt;b&gt;h&lt;/b&gt;) is converted into an octet by adding the rightmost bit of the second septet (shown in bold).This bit from taken from second&amp;nbsp; septet is inserted at the left&amp;nbsp; of fist septet, this gives: 1 + 1101000 = 11101000 ("E8"). The second septet then&amp;nbsp; gets two bits (shown in bold) from the third septet, so the second character (e) become an octet: 00 + 110010 = 00110010 ("32"). The five first bits of the last char (o) is padded with zeros (shown in bold).&lt;br /&gt;
Messages encoded this way can then be added as payload to “AT+CMGS” command as has been shown in one of my previous posts.&lt;br /&gt;
The received message can be read from the memory location ,where it resides ,using the AT command :&amp;nbsp; “AT+CMGR”.This command will return an octet stream from the modem.For extracting useful information from the octet stream read from the modem memory a decompression method is required.An example decoding the octet&amp;nbsp; stream for&amp;nbsp; "hello" back to septets is shown in Table 2.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-fP3N-78hKUQ/TVtvyUvGcAI/AAAAAAAAAFg/qDH3nRfzlb0/s1600/decompression.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="85" src="http://2.bp.blogspot.com/-fP3N-78hKUQ/TVtvyUvGcAI/AAAAAAAAAFg/qDH3nRfzlb0/s400/decompression.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Table 2 : Decompressing octet stream into septets&lt;br /&gt;
For getting septets back from octet stream,the leading 1 (shown in bold)&amp;nbsp; from first octet is removed and appended at the back of second septet,meanwhile two leading zeros from second septet are discarded.The fifth octet (06) loses its leading zero padding and&amp;nbsp; leading 1111 received from fourth octet is appended at its end.&amp;nbsp; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;For further details regarding PDU mode you can consult application note titled "Interfacing GSM Modems" available at the website of &lt;a href="http://www2.atmel.com/"&gt;ATmel&lt;/a&gt; .&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;3. Text Mode for SMS&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Text mode for sending SMS is simpler and easier to implement as compared with PDU mode.Unlike PDU mode,text mode is not supported by all mobile phones.In text mode you do not need to do bit level manipulations for sending SMS message.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
(under construction...)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-5170960984596178754?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/5170960984596178754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/difference-between-pdu-mode-and-text.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/5170960984596178754?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/5170960984596178754?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/difference-between-pdu-mode-and-text.html' title='Difference between PDU mode and Text mode for SMS'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-uOAcFNdRyqU/TVtpDq0YXCI/AAAAAAAAAFc/S0RvudsmNe4/s72-c/compression.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;AkUDQH4-fSp7ImA9Wx9UGEg.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-4121238483379164451</id><published>2011-02-11T19:09:00.008+05:00</published><updated>2011-02-16T17:11:11.055+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-16T17:11:11.055+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Sending SMS in PDU Mode though GSM modem connected with PC Serial Port and operated with PIC Microcontroller model in Proteus VSM</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;GSM modem may be operated with 'Hayes Programming Language' using 'AT Commands'.AT commands are used for operating GSM modem either when it is physically connected with serial port of PC or with serial port of micro-controller.There are two modes in which a modem can be used to send SMS to any mobile number i.e., Text Mode and PDU Mode.Sending SMS in Text Mode is easier than sending SMS in PDU mode.PDU mode for SMS is supported by almost all mobile devices but text mode for SMS is not supported by all devices. &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;In this post,it has been shown how a GSM modem,physically connected with serial port of PC, may be interfaced with serial port of Proteus VSM model of PIC micro-controller through COMPIM simulation module for serial port in Proteus VSM.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Krp5RHV2oro/TVVHxqwt-lI/AAAAAAAAAFQ/zclNQX9dRRk/s1600/cct.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://3.bp.blogspot.com/-Krp5RHV2oro/TVVHxqwt-lI/AAAAAAAAAFQ/zclNQX9dRRk/s320/cct.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Figure 1 : Schematic Diagram for GSM Modem Interface in Proteus VSM&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;The C code for PIC micro-controller PIC18F4520&lt;/span&gt;&lt;/span&gt; has been developed in mikroC for PIC compiler.This simulation sends the following text message in PDU mode through GSM modem to a predefined mobile number: "Hello! This is test message from Proteus VSM in PDU mode".&lt;br /&gt;
&lt;br /&gt;
The GSM modem used in this simulation is WismoQuik2403A,which is interfaced with PC through serial port.This modem is shown in Figure2. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xRI7CVQE2-0/TVVc86zzfPI/AAAAAAAAAFU/nE2UufejFtg/s1600/WismoQuik2403a.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-xRI7CVQE2-0/TVVc86zzfPI/AAAAAAAAAFU/nE2UufejFtg/s1600/WismoQuik2403a.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Figure 2 WismoQuik2403A GSM Modem&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The C code is given below :&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;C-Code for PIC18F4520 :&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;/****************************************************************************************&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;* Project name:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SMS in PDU mode&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;* Copyright:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (c) M.Yasir&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;* Description:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This code demonstrates how to to send SMS through PDU mode with GSM modem&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;* Test configuration:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; P18F4520&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Oscillator:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HS, 8.0000 MHz&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ext. Modules:&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SW:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mikroC v8.0&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;* NOTES:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1-&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;****************************************************************************************/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define Size 50&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char TextMsg[]= "Hello! This is test message from Proteus VSM in PDU mode" ; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char Command_CMGF[]="AT+CMGF=0\r"; // AT+CMGF for selecting PDU mode&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char CtrlZ=0x1A;&amp;nbsp; // CTRL+Z for sedning SMS after the message has been entered&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char Command_CMGS[]="AT+CMGS =";&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char Command_AT[]="AT\r";&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int SeptetCount = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char TextMessage01[20][8];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char PDU_SMS_Message01[] ="0011000C912903508201640000AA";&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// 13 (hex) octets exclding 1st octet&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int i=0,j=0,k=0,m=0,q=0;// indexes&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int&amp;nbsp; Size_Of_PDU_SMS = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char Size_Of_PDU_SMS_MSD = 0,&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size_Of_PDU_SMS_LSD = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char a1[Size];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char mask[Size];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char aa1[Size];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char bb[Size];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char PDU_String[Size];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char msg01[Size];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char TempBuffer[8],TempBuffer01[8];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char temp=0,temp01=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//*** Function Prottypes ****&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char Dec2ASCII(unsigned int );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int Char2ASCIIinDec(unsigned char);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int Char2ASCIIinHex(unsigned char);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char Hex2ASCII(unsigned char);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void ShiftRight( unsigned char *, unsigned int );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void GenerateMasks( unsigned int );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void BitsExtraction( unsigned int );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void Generate_PDU_Message_String( unsigned int );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void Generate_PDU_Octets( unsigned char *,unsigned int );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void Get_SeptetCount( unsigned int );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//unsigned char Dec2Hex( unsigned char );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int MessageLength = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char EightChSet = 0,ExtraCh = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//******** Function for converting decimal to ascii value ***********&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Dec2ASCII( unsigned int Dec2Value )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char ASCII_Value = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASCII_Value = Dec2Value + 48;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return( ASCII_Value );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Char2ASCIIinDec( unsigned char Ch )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int ASCIIinDec = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( Ch &amp;gt;= ' ' &amp;amp;&amp;amp; Ch &amp;lt;= '~')&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; // printable characters start from space character with&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ASCII value in decimal = 32, and end at tida character&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // '~' with ASCII value in decimal = 126&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( Ch == ' ' )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASCIIinDec = 32;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( Ch &amp;gt; ' ' )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASCIIinDec = ( Ch - ' ') + 32;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ( ASCIIinDec );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Char2ASCIIinHex( unsigned char Ch )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int ASCIIinHex = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( Ch &amp;gt;= ' ' &amp;amp;&amp;amp; Ch &amp;lt;= '~')&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; // printable characters start from space character with&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ASCII value in decimal = 32, and end at tida character&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // '~' with ASCII value in decimal = 126&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( Ch == ' ' )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASCIIinHex = 0x20;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( Ch &amp;gt; ' ' )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASCIIinHex = ( Ch - ' ') + 0x20;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ( ASCIIinHex );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Hex2ASCII( unsigned char HexValue )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char ASCII_Value;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ( HexValue &amp;gt;= 0x00 )&amp;amp;&amp;amp; ( HexValue &amp;lt;= 0x09 ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASCII_Value = ( HexValue - 0x00 ) + 0x30;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if( ( HexValue &amp;gt;= 0x0A )&amp;amp;&amp;amp; ( HexValue &amp;lt;= 0x0F ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASCII_Value = ( HexValue-0x0A ) + 0x41;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return( ASCII_Value );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dec2Hex( unsigned char DecValue )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char&amp;nbsp; HexValue = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ( DecValue &amp;gt;= 0 )&amp;amp;&amp;amp; ( DecValue &amp;lt;= 9 ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HexValue&amp;nbsp; = DecValue;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if( ( DecValue &amp;gt; 9 )&amp;amp;&amp;amp; ( DecValue &amp;lt;= 15 ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //HexValue = ( HexValue-0x0A ) + 0x41;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch( DecValue )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 10:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HexValue = 'A';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 11:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HexValue = 'B';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 12:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HexValue = 'C';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 13:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HexValue = 'D';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 14:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HexValue = 'E';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 15:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HexValue = 'F';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HexValue = 0 ;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return( HexValue );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;ShiftRight( unsigned char *Data , unsigned int DataLength )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i=0; i &amp;lt; DataLength; i++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = msg01[i];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a1[i] =&amp;nbsp; temp &amp;gt;&amp;gt;i;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// generate mask&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;GenerateMasks( unsigned int DataLength )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i = 0; i &amp;lt; DataLength; i++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( i == 0 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mask[i] = 0x01;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mask[i] = ( 2*mask[i-1] ) + 0x01;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// bit extraction&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;BitsExtraction( unsigned int DataLength )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i=0; i&amp;lt;DataLength; i++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( i == 0 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aa1[i] =&amp;nbsp; msg01[i];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bb[i] =&amp;nbsp;&amp;nbsp; aa1[i];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aa1[i] =&amp;nbsp; msg01[i] &amp;amp; mask[i-1];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bb[i]&amp;nbsp; = aa1[i];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aa1[i] =&amp;nbsp; msg01[i] &amp;lt;&amp;lt; (8-i);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// generate PDU string&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Generate_PDU_Message_String( unsigned int DataLength )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i=0; i&amp;lt;DataLength; i++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( i != ( sizeof(TextMsg)-1 ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PDU_String[i] =&amp;nbsp; aa1[i+1] | a1[i];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( i == ( sizeof(TextMsg)-1 ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PDU_String[i] =&amp;nbsp; a1[ sizeof(TextMsg)-1 ];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// Generate PDU Octets&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Generate_PDU_Octets( unsigned char *Data,unsigned int DataLength )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get ascii (in Hex) values for the characters&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i=0; i&amp;lt;DataLength; i++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //msg01[i] = Char2ASCIIinHex( TextMsg[i] );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg01[i] = Char2ASCIIinHex( *(Data+i) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //USART_Write( msg01[i] ); // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // shift right&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShiftRight( msg01 , DataLength&amp;nbsp; );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // shit bits of message character to right&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // generate mask&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GenerateMasks( DataLength );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // bit extraction&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitsExtraction( DataLength );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // generate PDU string&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Generate_PDU_Message_String( DataLength );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( j=0; j&amp;lt;DataLength; j++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( PDU_String[j] != 0x00 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp =( PDU_String[j]&amp;amp; 0xF0 );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp=(temp&amp;gt;&amp;gt;4);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Hex2ASCII( temp ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp=(PDU_String[j]&amp;amp; 0x0F);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Hex2ASCII( temp ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//==================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// For septet count&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void Get_SeptetCount( unsigned int DataLength )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char TempVariable = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==========================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // problem is occurring here,here you have to convert&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //decimal value to hex value&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // e.g. 25d = 0x19&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // proper conversion should be done&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( (DataLength &amp;gt; 9)&amp;amp;&amp;amp;(DataLength!=140)&amp;nbsp; )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = DataLength / 16;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = DataLength % 16;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ( TempVariable &amp;gt;= 0 )||( TempVariable &amp;lt;= 9 ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send data via USART;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp; TempVariable == 10 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = 'A';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp; TempVariable == 11 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = 'B';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp; TempVariable == 12 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = 'C';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp; TempVariable == 13 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = 'D';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp; TempVariable == 14 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = 'E';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp; TempVariable == 15 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = 'F';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //TempVariable = Dec2Hex( TempVariable );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Char2ASCIIinHex( unsigned char Ch )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //USART_Write( Dec2ASCII( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( DataLength &amp;lt;= 9 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write('0'); // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII( DataLength ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( DataLength == 140 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = '8';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempVariable = 'C';&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TempVariable ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//=================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void main()&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{ // start of main Function&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTD = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRISD = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PORTD is output&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_init( 57600 );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // initialize USART module - ( 8 bit, 57600 baud rate, no parity bit... )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // message01 sent as ASCII values in Hex&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(j=0;j&amp;lt;sizeof(TextMsg);j++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Char2ASCIIinHex( TextMsg[j] ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( '\r' ); // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( '\n' ); // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( '\r' ); // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( '\n' ); // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=0;i&amp;lt;sizeof(Command_AT);i++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write(Command_AT[i]);&amp;nbsp; // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //=================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_ms(100);&amp;nbsp; // 100 msecond delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=0;i&amp;lt;sizeof(Command_CMGF);i++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write(Command_CMGF[i]);&amp;nbsp;&amp;nbsp;&amp;nbsp; // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_ms(100);&amp;nbsp; // 100 msecond delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_ms(100);&amp;nbsp; // 100 msecond delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while( Command_CMGS[i] != '\0' )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write(Command_CMGS[i]);&amp;nbsp; // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageLength = sizeof(TextMsg)-1;&amp;nbsp;&amp;nbsp;&amp;nbsp; // size of text message = septet count&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( MessageLength &amp;gt;= 8 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if( MessageLength == 8 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EightChSet = MessageLength/8;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // no of 8 charater sets in text message&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExtraCh = MessageLength - (EightChSet*8);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // no of charaters more after 8 chataer sets&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // over 8 charaters one hex valeu at the end&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // equals 0x00 and may be discarded&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if( MessageLength &amp;lt; 8 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EightChSet =0; // no of 8 charater sets in text message&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExtraCh = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // no of charaters more after 8 chataer sets&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // over 8 charaters one hex valeu at the end&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // equals 0x00 and may be discarded&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //===================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PDU message size for sending message to modem is 19&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // excluding the starting zeros '00'&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size_Of_PDU_SMS = sizeof( PDU_SMS_Message01 ) - 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 13 octets fixed in our case&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( MessageLength &amp;lt; 8 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size_Of_PDU_SMS = ( (Size_Of_PDU_SMS/2) - 1 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + MessageLength + 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // add on for length octet&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( MessageLength == 8 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size_Of_PDU_SMS = ( (Size_Of_PDU_SMS/2) - 1 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + MessageLength;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( MessageLength &amp;gt; 8 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size_Of_PDU_SMS = ( (Size_Of_PDU_SMS/2) - 1 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + MessageLength + 1 - EightChSet;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp; Size_Of_PDU_SMS &amp;lt;= 9 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII( Size_Of_PDU_SMS ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ( Size_Of_PDU_SMS &amp;gt; 9 )&amp;amp;&amp;amp; ( Size_Of_PDU_SMS &amp;lt;100 ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size_Of_PDU_SMS_MSD = Size_Of_PDU_SMS/10;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size_Of_PDU_SMS_LSD = Size_Of_PDU_SMS%10;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII( Size_Of_PDU_SMS_MSD ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII( Size_Of_PDU_SMS_LSD ) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ( Size_Of_PDU_SMS &amp;gt;=100 )&amp;amp;&amp;amp; ( Size_Of_PDU_SMS &amp;lt;=140 ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( Size_Of_PDU_SMS ==100 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( '1' );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( '0' );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( '0' );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( (Size_Of_PDU_SMS !=100) &amp;amp;&amp;amp; (Size_Of_PDU_SMS !=140) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = Size_Of_PDU_SMS/100;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII(temp) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = Size_Of_PDU_SMS/10;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = temp%10;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII(temp) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = Size_Of_PDU_SMS%100;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = temp%10;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( Dec2ASCII(temp) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( '\r' ); // send data via USART&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==============================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==============================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initial part of&amp;nbsp; part of PDU&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i = 0;i&amp;lt;( sizeof( PDU_SMS_Message01 ) - 1 );i++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( PDU_SMS_Message01[i] );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // For septet count&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SeptetCount = sizeof( TextMsg ) - 1 ;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get_SeptetCount( SeptetCount );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==============================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( MessageLength &amp;lt;= 8 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Generate_PDU_Octets( TextMsg,sizeof(TextMsg)-1 );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // valid working code- for&amp;nbsp; EightChSet*8&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //(which equals 136 for EightChSet = 17 ) characters&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ( MessageLength &amp;gt; 8 )&amp;amp;&amp;amp;( MessageLength == (EightChSet*8) ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( q=0; q&amp;lt; EightChSet; q++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( j = (q*8);j&amp;lt; ( 8+ (q*8) );j++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempBuffer[m] = TextMsg[j]; m++;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Generate_PDU_Octets( TempBuffer,8 );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // valid working code&amp;nbsp; - for&amp;nbsp; MessageLength !=&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //EightChSet*8, upto 140 characters&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ( MessageLength &amp;gt; 8 )&amp;amp;&amp;amp;( MessageLength != (EightChSet*8) ) )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( q=0; q&amp;lt; EightChSet; q++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( j = (q*8);j&amp;lt; ( 8+ (q*8) );j++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempBuffer[m] = TextMsg[j]; m++;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Generate_PDU_Octets( TempBuffer,8 );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( j = (EightChSet*8);j&amp;lt;MessageLength;j++ )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TempBuffer[j-(EightChSet*8)] = TextMsg[j];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Generate_PDU_Octets( TempBuffer,ExtraCh );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//=================================================&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write( CtrlZ ); // Ctrl + Z&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {//Start of endless while loop&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTD^=0x0F;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_ms(100);&amp;nbsp; // 100 msecond delay&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }//End of endless while loop&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}//~ End of main Function&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-4121238483379164451?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/4121238483379164451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/sending-sms-in-pdu-mode-though-gsm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/4121238483379164451?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/4121238483379164451?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/sending-sms-in-pdu-mode-though-gsm.html' title='Sending SMS in PDU Mode though GSM modem connected with PC Serial Port and operated with PIC Microcontroller model in Proteus VSM'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Krp5RHV2oro/TVVHxqwt-lI/AAAAAAAAAFQ/zclNQX9dRRk/s72-c/cct.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;A0QFQ3w9eSp7ImA9Wx9UEkg.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-2396245417942780276</id><published>2011-02-08T21:32:00.010+05:00</published><updated>2011-02-09T18:48:32.261+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-09T18:48:32.261+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Virtual GPS Engine for simulation in Proteus</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;This  post is regarding how to read a text file,through Proteus VSM for simulation and&amp;nbsp; post processing,containing&amp;nbsp;unprocessed GPS  data the has previously been recorded on a text file in laptop computer  by GPS Engine by carrying the GPS Engine connected with Laptop in a  vehicle.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;I stored GPS data (without parsing in raw format) in a text file through hyper terminal in a Laptop,by connecting GPS with my laptop computer and carrying that laptop along in a moving vehicle.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;I needed to process that data in Proteus Simulation software.For this purpose, i would have to read that GPS data in Proteus VSM from text file for developing algorithm for parsing and post processing in micro-controller.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small; line-height: 16px;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;For this purpose you need following components:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;ol style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;Eltima Virtual Serial Port Driver Sofware for creating virtual serial ports.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;Visualbasic6 code for reading data from Text File and sending it to Proteus COMPIM model&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;Proteus VSM Software &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;I have used Eltima Virtual Serial Port Driver and COMPIM model in Proteus to send text file (in which GPS data has been saved) through an application developed in Visual Basic6 to the COMPIM model in Proteus simulation.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;The circuit schematic drawn in Proteus VSM i shown in Figure1 below :&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_WyqB9Ls02ZM/TVFw6Ryb4vI/AAAAAAAAAFA/CQso5fUhM7g/s1600/Fig01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://1.bp.blogspot.com/_WyqB9Ls02ZM/TVFw6Ryb4vI/AAAAAAAAAFA/CQso5fUhM7g/s320/Fig01.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Figure 1: Circuit Schematic&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;A test run of this Proteus VSM simulation is shown in the Figure2 below.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TVGF764viOI/AAAAAAAAAFE/O5DcydceSnY/s1600/TestCct.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="234" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TVGF764viOI/AAAAAAAAAFE/O5DcydceSnY/s320/TestCct.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Figure 2 : Test run of Simulation&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;A screen shot of Eltima Software Interface for Virtual serial port connection establishment is shown in the Figure 3 below: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TVGREvDWh0I/AAAAAAAAAFI/Xbheh0lCaKM/s1600/Eltima_Fig.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="209" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TVGREvDWh0I/AAAAAAAAAFI/Xbheh0lCaKM/s320/Eltima_Fig.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;Figure 3 : Eltima Software Interface&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The objective of this simulation is to read the GPS data stored in a text file in Proteus VSM Simulation Software,where this data can be fed to the serial port of the microcontroller simulation model for developing logic and code for real hardware to extract desired information from raw GPS data.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;A screen shot of the Visual Basic6 project is shown in the Figure 4 below:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TVKOKCR898I/AAAAAAAAAFM/XDzO4YocTAk/s1600/VB01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TVKOKCR898I/AAAAAAAAAFM/XDzO4YocTAk/s320/VB01.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Figure 4 : Screen Shot of VB project&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The VB Codes for project shown in Figure4 are given below.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;VB6 Code 01 (File named : ReadWrite.cls) :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Public Function ReadLine(fname As String, LineNumber As Long) _&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; As String&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; Dim oFSO As New FileSystemObject&lt;br /&gt;
&amp;nbsp; Dim oFSTR As Scripting.TextStream&lt;br /&gt;
&amp;nbsp; Dim lCtr As Long&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; If oFSO.FileExists(fname) Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set oFSTR = oFSO.OpenTextFile(fname)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do While Not oFSTR.AtEndOfStream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lCtr = lCtr + 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If lCtr = LineNumber Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReadLine = oFSTR.ReadLine&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oFSTR.SkipLine&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oFSTR.Close&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set oFSTR = Nothing&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;
&amp;nbsp;End Function&lt;br /&gt;
&lt;br /&gt;
Public Function SaveTextToFile(FileFullPath As String, _&lt;br /&gt;
&amp;nbsp;sText As String, Optional Overwrite As Boolean = False) As _&lt;br /&gt;
&amp;nbsp;Boolean&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
On Error GoTo ErrorHandler&lt;br /&gt;
Dim iFileNumber As Integer&lt;br /&gt;
iFileNumber = FreeFile&lt;br /&gt;
&lt;br /&gt;
If Overwrite Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Open FileFullPath For Output As #iFileNumber&lt;br /&gt;
Else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Open FileFullPath For Append As #iFileNumber&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
Print #iFileNumber, sText&lt;br /&gt;
SaveTextToFile = True&lt;br /&gt;
&lt;br /&gt;
ErrorHandler:&lt;br /&gt;
Close #iFileNumber&lt;br /&gt;
End Function&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;VB6 Code 02 (File named : TextFiles.cls) :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;Option Explicit&lt;br /&gt;
&lt;br /&gt;
Private m_sFilePath As String&lt;br /&gt;
Private m_lSize As Long&lt;br /&gt;
Private strLines() As String&lt;br /&gt;
Private m_lines As Long&lt;br /&gt;
Public completeFile As String&lt;br /&gt;
&lt;br /&gt;
Private Sub ReadFile()&lt;br /&gt;
m_lines = 0&lt;br /&gt;
Dim fso As New Scripting.FileSystemObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim ts As Scripting.TextStream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim str As String&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; '// Store size&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; m_lSize = fso.GetFile(m_sFilePath).Size&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Dim i As Long&lt;br /&gt;
&amp;nbsp;&amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReDim Preserve strLines(0 To 800000) As String&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; '// Get number of lines&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = fso.OpenTextFile(m_sFilePath, ForReading, False)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; While Not ts.AtEndOfStream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = ts.ReadLine&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i + 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strLines(i - 1) = str&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_lines = i&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'completeFile = completeFile &amp;amp; str&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Wend&lt;br /&gt;
&amp;nbsp;&amp;nbsp; completeFile = Join(strLines, vbCrLf)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; '// Close file&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.Close&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; '// Release objects&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = Nothing&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set fso = Nothing&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
Public Property Get ReadLines(n As Long, m As Long) As String&lt;br /&gt;
&amp;nbsp;Dim buf As String&lt;br /&gt;
&amp;nbsp;buf = ""&lt;br /&gt;
&amp;nbsp;Dim i As Long&lt;br /&gt;
&amp;nbsp;For i = n To m&lt;br /&gt;
&amp;nbsp; If i &amp;gt;= n And i &amp;lt;= m Then&lt;br /&gt;
&amp;nbsp; buf = buf &amp;amp; strLines(i - 1) &amp;amp; vbCrLf&lt;br /&gt;
&amp;nbsp; DoEvents&lt;br /&gt;
&amp;nbsp; End If&lt;br /&gt;
&amp;nbsp; If i &amp;gt; m Then&lt;br /&gt;
&amp;nbsp; ReadLines = buf&lt;br /&gt;
&amp;nbsp; Exit Property&lt;br /&gt;
&amp;nbsp; End If&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;Next&lt;br /&gt;
&amp;nbsp;ReadLines = buf&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get ReadLine(ByVal n As Long) As String&lt;br /&gt;
If n &amp;lt;= 0 Then n = 1&lt;br /&gt;
If n &amp;gt;= m_lines Then n = m_lines&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ReadLine = strLines(n - 1)&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Let TextFilePath(ByVal pVal As String)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; m_sFilePath = pVal&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ReadFile&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get FileSize() As Long&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; FileSize = m_lSize&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Property Get NoOfLines() As Long&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NoOfLines = m_lines&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Sub WriteNewLine(ByVal str As String)&lt;br /&gt;
m_lines = m_lines + 1&lt;br /&gt;
ReDim Preserve strLines(0 To m_lines) As String&lt;br /&gt;
strLines(m_lines - 1) = str&lt;br /&gt;
WriteFile&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
Private Sub WriteFile()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Long&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim fso As New Scripting.FileSystemObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim ts As Scripting.TextStream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = fso.OpenTextFile(m_sFilePath, ForWriting, False)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 0 To m_lines - 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.WriteLine (strLines(i))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.Close&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; '// Release objects&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = Nothing&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set fso = Nothing&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub WriteFileAtPosi(ByVal str As String, ByVal posi As Long)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Long&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim fso As New Scripting.FileSystemObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim ts As Scripting.TextStream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = fso.OpenTextFile(m_sFilePath, ForWriting, False)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 0 To m_lines - 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (i = posi) Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.WriteLine (str)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.WriteLine (strLines(i))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.Close&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; '// Release objects&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = Nothing&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set fso = Nothing&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Sub InsertNewLine(ByVal str As String, ByVal posi As Long)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; WriteFileAtPosi str, posi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ReadFile&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub ReplaceFileAtPosi(ByVal str As String, ByVal posi As Integer)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Integer&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim fso As New Scripting.FileSystemObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim ts As Scripting.TextStream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = fso.OpenTextFile(m_sFilePath, ForWriting, False)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 0 To m_lines - 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (i = posi - 1) Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.WriteLine (str)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i + 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.WriteLine (strLines(i))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.Close&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; '// Release objects&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = Nothing&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set fso = Nothing&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Sub ReplaceLine(ByVal str As String, ByVal LineNum As Integer)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ReplaceFileAtPosi str, LineNum&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ReadFile&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Public Sub DeleteLines()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i As Long&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim fso As New Scripting.FileSystemObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim ts As Scripting.TextStream&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = fso.OpenTextFile(m_sFilePath, ForWriting, False)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 5000 To m_lines - 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.WriteLine (strLines(i))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Next&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ts.Close&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; '// Release objects&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set ts = Nothing&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set fso = Nothing&lt;br /&gt;
ReadFile&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: verdana,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-2396245417942780276?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/2396245417942780276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/virtual-gps-engine-for-simulation-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/2396245417942780276?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/2396245417942780276?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/virtual-gps-engine-for-simulation-in.html' title='Virtual GPS Engine for simulation in Proteus'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WyqB9Ls02ZM/TVFw6Ryb4vI/AAAAAAAAAFA/CQso5fUhM7g/s72-c/Fig01.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;A0IEQH0yeip7ImA9Wx9UEUo.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-2890006098113302458</id><published>2011-02-05T22:18:00.022+05:00</published><updated>2011-02-08T20:38:21.392+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-08T20:38:21.392+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Tips on buying a potable DVD Player</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Technology,especially electronics and computer technology, evolves so fast and at such an enormous pace that the electronics products that were being commonly used a few years back have now become completely obsolete.This holds true especially in the case of audio and video players.Just a few years back people used to have VHS tapes and VHS players for watching movies on TV,but now we see that DVD and DVD player have taken the place of VHS tape and VHS player.&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;VHS tapes have become almost obsolete now.Further development in this regard is that Blue Ray Disc is next in line to take place of DVD.No wonder the DVDs may become obsolete after about a couple of years.So it is highly advisable to do some research and maket survey before you actually decide to buy some electronics or computer related product otherwise lest you should regret after making a purchase. &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=B0039XRUBM&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;This article discusses some of the salient features and factors that you should consider while buying a DVD player.In my view the following are some of the important factors that you should consider while buying a DVD player:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;1. How much is your budget?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;First and the foremost factor that dictates the quality and features that the DVD player ,that you plan to buy, is supposed to equipped with is how much you can afford&amp;nbsp; to invest in buying a DVD player.So in layman's term quality obviously comes at a price.The bigger the price the better the quality and features the DVD player will be equipped with.Also there is always a limit to how much you can afford to invest in buying any thing from the market.So ,while buying a DVD player,inevitably you will have to make&amp;nbsp; a trade-off between how much you can afford and the quality and features that you are interested in.Therefore,before buying a DVD player,it is recommended that first you should figure out your budgetary constraints and then you should do a market survey about the options available in the market.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;2.Brand of DVD Player&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Some techies hold the opinion that brand of DVD player does not matter provided that the DVD player is being sold with a warranty of one year. I personally do not agree fully with this opinion.I think brand of the DVD player is a very important factor to consider.The DVD player that you intend to buy should not only be of some reputed brand available in the market but also it should be&amp;nbsp; covered under one year after sale warranty,so that in case if any fault&amp;nbsp; arises&amp;nbsp; during the warranty period,the warranty of the DVD player may being claimed without any hassle.Though the reputed brand might cost more than&amp;nbsp; any ordinary brand,but it is really worth this extra cost.In this regard,Sony,Toshiba and Samsung are some of the good brand names. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;3.Remote&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Remote is an essential item of the DVD player.You&amp;nbsp; may need to&amp;nbsp; navigate through&amp;nbsp; the DVD&amp;nbsp; movie while you are sitting at a distance in your bed or couch before your TV&amp;nbsp; and enjoying the movie being played on the DVD player.Some techies hold the opinion that quality of remote of the DVD player is reflective of the quality of the DVD player.I think this is true as low end DVD players usually have remotes of inferior quality that break and get damaged easily if they are not handled with care.Buttons of such remotes are not good either as they are stiff to press and numbers printed on them fade away after some use.Therefor while buying a DVD player you must take into consideration the quality and functionality of the remote of the DVD player that you plan to buy. &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;4.Connections&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Like an old-timer VHS  player you need to connect your DVD player with TV.Therefore the DVD  player must be equipped with connections to hook-up with TV.&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;In order to get the best picture quality that a DVD player could offer, you should utilize the best video connection that the DVD player you buy might be equipped with.This is usually constrained by the type of input connections that your TV set is equipped with. In addition to the common VHS type audio and video connections that DVD players are ordinarily equipped with there are some new connections that you must consider:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;a.Component video Out : This is supposed to be the best way to connect your DVD player with TV.This connection needs three cables to hook-up your DVD player with TV.However, downside&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TU5fBvn1qfI/AAAAAAAAAEw/3cWzVCtkdVI/s1600/ComponentVideo_output_med.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TU5fBvn1qfI/AAAAAAAAAEw/3cWzVCtkdVI/s1600/ComponentVideo_output_med.jpg" /&gt;&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt; to this connection is that many TV sets do not support this connection.However,if your TV set supports this connection or you have plans to buy a new TV set as well,then you should make sure that the DVD player that you intend to buy should be equipped with Component video Out connection.The video being played when the DVD is hooked-up with TV set through component video out connection gives the best color fidelity and picture quality. &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TU8Hr-bawlI/AAAAAAAAAE0/eCnZRBD2kLY/s1600/S-video_output_med.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TU8Hr-bawlI/AAAAAAAAAE0/eCnZRBD2kLY/s1600/S-video_output_med.jpg" /&gt;&lt;/a&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;b.S-Video : After Component video Out connection S-video connection is supposed to be the second best connection for hooking up your DVD player with TV set.The picture quality and color reproduction accuracy offered by S-Video connection is considered inferior to what is offered by component video connection.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TU8IO2LXAKI/AAAAAAAAAE4/AEFc5AKQKFM/s1600/CompositeVideo_output_large.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TU8IO2LXAKI/AAAAAAAAAE4/AEFc5AKQKFM/s1600/CompositeVideo_output_large.jpg" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TU8I8O5bpNI/AAAAAAAAAE8/4prtPUbP9Z4/s1600/CompositeVideo_cable_med.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TU8I8O5bpNI/AAAAAAAAAE8/4prtPUbP9Z4/s1600/CompositeVideo_cable_med.jpg" /&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;c.composite Video Connection : Composite Video is the most basic type of connection,comprising a single RCA cable, between the video player (VHS VCR, DVD player,analog camcorders etc.&lt;/span&gt;&lt;span style="font-size: small;"&gt;) and the display (Digital TV-HDTV Set or analog TV).&lt;/span&gt;&lt;span style="font-size: small;"&gt;This connection gives picture of inferior quality as compared with component video and s-video connections.There this connection should only be used if both of the above mentioned options are not available.Despite its lower quality performance as compared with the above to connections, the picture produced by this connection this connection is&amp;nbsp; way better than what you can get with a VHS VCR.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;5.Special Effects&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Make sure that the DVD player that you intend to buy is equipped with features for special effects like pause,slow-motion,zoom.3-d virtual surround sound,forward and reverse scan capability with multiple speeds,capability to play movie frame-by-frame both in forward and reverse direction etc.&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;6.Audio Features&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;The audio&amp;nbsp; and sound quality played by the DVD player is an important feature that&amp;nbsp; you should take into special consideration,particularly if you have home theater surround system or you have plans for putting together a home theater surround system.The features important in this regard are player's audio analog-to-digital conversion capability,surround features and audio outputs. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;7.Ease of use&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;In my view the most important and usually overlooked factor about a&amp;nbsp; DVD player is its ease of use.The DVD player that you like to buy should be user-friendly and easy to&amp;nbsp; operate in every-day use.The DVD player should be equipped with properly designed on-screen displays and menus that should be handy for an ordinary user to operate the DVD player without much effort.Therefore,while buying a DVD player should carefully inspect the front panel of the DVD player and you should note what buttons are available on the front panel and whether the buttons on the front panel seem logically laid out or not.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;It should not be a rocket science to operate the DVD player.Otherwise,if you have go through bulky user manuals to familiarize yourself with the use of your DVD player then this is never desirable.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-2890006098113302458?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/2890006098113302458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/tips-on-buying-dvd-player.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/2890006098113302458?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/2890006098113302458?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/02/tips-on-buying-dvd-player.html' title='Tips on buying a potable DVD Player'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WyqB9Ls02ZM/TU5fBvn1qfI/AAAAAAAAAEw/3cWzVCtkdVI/s72-c/ComponentVideo_output_med.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUYFQns6eCp7ImA9Wx9UGEo.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-4557288506317004756</id><published>2011-01-31T01:18:00.005+05:00</published><updated>2011-02-16T21:18:33.510+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-16T21:18:33.510+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Interfacing AVR micro-controller ATmega32 with Multimedia Card (MMC)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=B000J47W12&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;Multimedia card (MMC) is a data storage device used mostly in mobile phones and digital camera.Multimedia cards are available in market in a wide range of data storage capacities ranging from&amp;nbsp; tens of Mega Bytes (MBs) to about 2 Giga Bytes and even more.A multimedia card can be interfaced with any device either through SPI (Serial Peripheral Interface) or Multimedia protocol.SPI&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;The C code&amp;nbsp; for writing data on MMC and reading data from MMC is  given below.This code simply writes data to five sectors if MMC when  upper button (active low),connected with PA0, is pressed.When the lower  button (active high) ,connected with PA1, is pressed the  micro-controller reads the data, that has been written earlier on five  sectors, and then displays the read data on Virtual Serial Terminal.In  this code sector size of MMC is 512 Bytes.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TUXBQFvg6OI/AAAAAAAAAEg/j8xiE7kkP94/s1600/MMC32.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TUXBQFvg6OI/AAAAAAAAAEg/j8xiE7kkP94/s320/MMC32.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;
Figure 1 : Schematic diagram of Proteus simulation &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;C Code:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i&gt;////////////////////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//ICC-AVR application builder : 1/21/2007 12:37:44 AM&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// Target : M32&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// Crystal: 11.059Mhz&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;////////////////////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#include &amp;lt;iom32v.h&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#include &amp;lt;macros.h&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#include&amp;lt;stdio.h&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#include&amp;lt;string.h&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#include&amp;lt;stdlib.h&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define SPIDDR&amp;nbsp; DDRB&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define SPIPORT PORTB&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define SPIPIN&amp;nbsp; PINB&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define CS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define BinToASCII(t) ((t&amp;lt;=9) ? (t|0x30):(t+55))&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define ASCIIToBin(t) ((t&amp;gt;='A'&amp;amp;&amp;amp; t&amp;lt;='F')?t-55:((t&amp;gt;='0'&amp;amp;&amp;amp; t&amp;lt;='9') ? t-'0':0))&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define BYTELOW(v)&amp;nbsp; (*((unsigned char *)(&amp;amp;v))) &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define BYTEHIGH(v) (*(((unsigned char *)(&amp;amp;v) + 1)))&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#define BLOCK_SIZE&amp;nbsp;&amp;nbsp; &amp;nbsp;512&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char CMD0_RST_IDLE[]={0x40,0x00,0x00,0x00,0x00,0x95};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//command 0 reset all card to idle state&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char CMD1_SND_OPCND[]={0x41,0x00,0x00,0x00,0x00,0xFF};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//command 1 for read OPERATION CONDITION register &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp; CMD16_SET_BLOCKLEN[]= {0x50,0x00,0x00,0x02,0x00,0xFF};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//command 16 TO SET BLOCK LENGHT=512 BYTE TO READ &amp;amp; WRITE&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//0x000200=512 &amp;amp; 0x00000010=16&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;MSGF[] ={"\rMMC CARD INTERFACE\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;MSG0[] ={"\rMMC CARD COMMAND 0\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;MSG1[] ={"\rMMC CARD COMMAND 1\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;MSGB[] ={"\rMMC CARD COMMAND BLOCK=512\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;MSGW[] ={"\rMMC CARD SECTOR WRITE\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;MSGR[] ={"\rMMC CARD SECTOR READ\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;MSG[]&amp;nbsp; ={"\nMMC CARD IS INITIALIZED SPI MODE\n"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;CSD[]&amp;nbsp; ={"\rCSD INFORMATION:\r"};&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;CID[]&amp;nbsp; ={"\rCID INFORMATION:\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;WACK[] ={"\rWRITE ACKNOLEDGE:\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;const unsigned char&amp;nbsp;&amp;nbsp; &amp;nbsp;WNFSH[]={"\rWRITE NOT FINISH:\r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char TEMP;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int iSIZE;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int iSIZE1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char BUFFER[128];&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char adc_low,adc_high;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int timer0_counter=0,tcounter0=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char Data=65;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int RdFlag=0,WrtFlag=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char Button1Pressed=0,Button2Pressed=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*****************************************************/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//****************** Port initialisation **********************/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/******************************************************/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void port_init(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTA = 0x00; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; DDRA&amp;nbsp; = 0x03; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTB = 0xFF; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; DDRB&amp;nbsp; = 0xFF;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTC = 0x00; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDRC&amp;nbsp; = 0x00; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTD = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; DDRD&amp;nbsp; = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//UART0 initialize&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// desired baud rate: 57600&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/* *************************************************** */&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void uart0_init(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;UCSRB = 0x00; //disable while setting baud rate&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;UCSRA = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;UCSRC = BIT(URSEL) | 0x06;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;UBRRL = 0x0B; //set baud rate lo&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;UBRRH = 0x00; //set baud rate hi&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;UCSRB = 0x18;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;////////////////////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPI port initilaisation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;////////////////////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void SpiInit()&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; DDRB = 0xB0;&amp;nbsp;&amp;nbsp; // Set SCK, MOSI &amp;amp; SS as outputs&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; SPCR = 0x53;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; PORTB = 0xEF;&amp;nbsp; // clear bits MOSI, &amp;amp; SCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//TIMER0 initialize - prescale:1024&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// WGM: Normal&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// desired value: 100Hz&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// actual value: 100.933Hz (0.9%)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void timer0_init(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; TCCR0 = 0x00; //stop&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; TCNT0 = 0x95; //set count&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; OCR0&amp;nbsp; = 0x6B;&amp;nbsp; //set compare&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; TCCR0 = 0x05; //start timer&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void timer0_ovf_isr(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; TCNT0 = 0x95; //reload counter value&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; timer0_counter++;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; tcounter0++;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; if(Button1Pressed==1)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTA^=0x01;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; timer0_counter=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Button1Pressed=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; if(Button2Pressed==1)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTA^=0x02;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; tcounter0=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Button2Pressed=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;///////////////////////// UART data receive routine //////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char ReceiveByte(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; while(!(UCSRA &amp;amp; BIT(RXC)));&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; return UDR;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;///////////////////////// UART data transmit routine //////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void SEND_CHAR_UART(char ch)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(UCSRA &amp;amp; BIT(UDRE))) ;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UDR = ch;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void SendStr(const char *ch)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(*ch != 0x00) &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; SEND_CHAR_UART(*ch++);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void PRINT_ASCII (unsigned char PRNT)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; unsigned char PRN=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; PRN=PRNT&amp;gt;&amp;gt;4; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; SEND_CHAR_UART(BinToASCII(PRN)); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRN=PRNT&amp;amp;0x0F;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; SEND_CHAR_UART(BinToASCII(PRN)); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;} &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/***&amp;nbsp; SpiWriteByte() writes a byte to the SPI and waits until &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;it has been transmitted.This function doesn't&amp;nbsp; return any value back.**/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char CHAR_SPI(unsigned char byte)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; SPDR = byte;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(SPSR &amp;amp; 0x80));&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; return SPDR;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//**************************************&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// void Delay_1ms(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//**************************************&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void Delay_1ms(int Del)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; int i;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; while(Del--)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i=0;i&amp;lt;200;i++) &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WDR();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//-----------------------------------------------------------------//&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MMC GET RESPONSE&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//-----------------------------------------------------------------//&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char MMC_RESPONCE(unsigned char RESPONSE )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned int COUNT=0xFFF; // for 64 MB card &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//unsigned int COUNT=0xFFFF;&amp;nbsp; // for 1 GB&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned&amp;nbsp; char&amp;nbsp; RESULT;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(COUNT!=0)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; RESULT = CHAR_SPI(0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; // PRINT_ASCII (RESULT); SEND_CHAR_UART('\r'); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if(RESULT==RESPONSE)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; break;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; COUNT--;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(COUNT==0)return 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/************************************************/ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char MMC_WAIT_FOR_WRITE_FINISH( void ) &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned char LPCNT=0xFF;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned char&amp;nbsp; RESULT = 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* The delay is set to maximum considering the longest data&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; block length to handle */&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while( (RESULT == 0) &amp;amp;&amp;amp; LPCNT ) &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RESULT = CHAR_SPI( 0XFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; LPCNT--;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (LPCNT== 0 ) &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;&amp;nbsp; &amp;nbsp;&amp;nbsp; /* Failure, loop was exited due to timeout */ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else return 0;&amp;nbsp; /* Normal , loop was exited before timeout */&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*-----------------------------------------------------------------------*/ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char&amp;nbsp; MMC_INIT()&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char LPCNT=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* start off with 80 bits of high data with card deselected */&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPIPORT |=CS; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for(LPCNT=0;LPCNT&amp;lt;10; LPCNT++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHAR_SPI(0xff);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*------------------------------------CMD 0-------------------------------*/&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPIPORT &amp;amp;= ~CS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* select card */&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHAR_SPI( 0X40);CHAR_SPI( 0X00);CHAR_SPI( 0X00);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHAR_SPI( 0X00);CHAR_SPI( 0X00);CHAR_SPI( 0X95);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if( (MMC_RESPONCE(0x01)) == 1 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPIPORT |=CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SendStr( MSG0);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*-------------------------------------------------------------------------*/ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPIPORT |= CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI(0xFF); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*----------------------------------CMD1---------------------------------*/ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPIPORT &amp;amp;= ~CS;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPCNT=0xFF;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI( 0X41); CHAR_SPI( 0X00);CHAR_SPI( 0X00);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI( 0X00); CHAR_SPI( 0X00);CHAR_SPI( 0XFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LPCNT--;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while ( (MMC_RESPONCE(0x00) != 0) &amp;amp;&amp;amp; (LPCNT&amp;gt;0) );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(LPCNT==0)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPIPORT |= CS; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SendStr( MSG1);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*--------------------------------------------------------------------*/ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPIPORT |= CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI(0xFF); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*---------------------CMD16&amp;nbsp; SET BLOCK LENGTH-------------*/ &amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPIPORT &amp;amp;= ~CS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // select card &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHAR_SPI( 0X50);CHAR_SPI( 0X00);CHAR_SPI( 0X00);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHAR_SPI( 0X02);CHAR_SPI( 0X00);CHAR_SPI( 0XFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if( (MMC_RESPONCE(0x00)) == 1 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; SPIPORT |=CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; return 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SendStr( MSGB);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPIPORT |= CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI(0xFF); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*------------------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//unsigned char&amp;nbsp; MMC_WRITE_BLOCK(unsigned&amp;nbsp; long SECTOR)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*----------------------------------------------------------- */&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void GET_CSD()&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; SPIPORT &amp;amp;= ~CS; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0x49);CHAR_SPI( 0x00); CHAR_SPI( 0X00);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0x00);CHAR_SPI( 0x00); CHAR_SPI( 0XFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((MMC_RESPONCE(0x00)) == 1);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while( (MMC_RESPONCE(0xFE)) == 1 );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; for(TEMP=0;TEMP&amp;lt;=35;TEMP++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; BUFFER[TEMP]=CHAR_SPI(0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SendStr(CSD);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; for(TEMP=0;TEMP&amp;lt;=15;TEMP++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PRINT_ASCII(BUFFER[TEMP]);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SEND_CHAR_UART('\n');&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPIPORT |= CS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Deselect card&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*------------------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//void GET_CID()&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*----------------------------------------------------------- */&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void GET_CID()&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; SPIPORT &amp;amp;= ~CS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // select card &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI(0x4A);CHAR_SPI(0x00);CHAR_SPI(0X00);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI(0x00);CHAR_SPI(0x00);CHAR_SPI(0XFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((MMC_RESPONCE(0x00)) == 1);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while( (MMC_RESPONCE(0xFE)) == 1 );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; for(TEMP=0;TEMP&amp;lt;=35;TEMP++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; BUFFER[TEMP]=CHAR_SPI(0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SendStr(CID);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; for(TEMP=0;TEMP&amp;lt;=15;TEMP++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PRINT_ASCII(BUFFER[TEMP]); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SEND_CHAR_UART('\n');&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPIPORT |= CS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Deselect card&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*----------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void INSULATOR()&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0xFF);CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*------------------------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char MMC_WRITE_BLOCK( unsigned&amp;nbsp;&amp;nbsp; int SECTOR)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; unsigned char WRT=65;// A&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; unsigned int LPCNT=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; unsigned long ADDRESS=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; ADDRESS=(unsigned long)SECTOR*BLOCK_SIZE;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*-----------------------CMD24-----------------------------------*/&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; SPIPORT &amp;amp;= ~CS; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0x58); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI (ADDRESS&amp;gt;&amp;gt;24);CHAR_SPI (ADDRESS&amp;gt;&amp;gt;16);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI (ADDRESS&amp;gt;&amp;gt;8);CHAR_SPI (ADDRESS&amp;gt;&amp;gt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; if( (MMC_RESPONCE(0x00)) == 1 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPIPORT |=CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI(0xFF); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI(0xFE); //start of DATABLOCK&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; for(LPCNT=0;LPCNT&amp;lt;512; LPCNT++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; { &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI(Data);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if((LPCNT%32)==0)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {SEND_CHAR_UART('\n');SEND_CHAR_UART('\r');}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; SEND_CHAR_UART(Data);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //CHAR_SPI(WRT);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //SEND_CHAR_UART(WRT);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CHAR_SPI(0xFF); CHAR_SPI(0xFF);&amp;nbsp;&amp;nbsp; // dummy chksum&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; LPCNT= CHAR_SPI(0xFF); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //SendStr(WACK);&amp;nbsp;&amp;nbsp; &amp;nbsp;PRINT_ASCII(LPCNT);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PRINT_ASCII((LPCNT &amp;amp; 0x0F)); // disabled for debugging &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if ( (LPCNT &amp;amp; 0x0F) != 0x05 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPIPORT |=CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( MMC_WAIT_FOR_WRITE_FINISH()==1)&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //disabled for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SendStr(WNFSH); // disabled for debugging&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SPIPORT |=CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;SendStr( MSGW); //disabled for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*-------------------------------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;SPIPORT |= CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;CHAR_SPI(0xFF); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;return 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*-------------------------------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char&amp;nbsp; MMC_READ_BLOCK( unsigned long SECTOR)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned int LPCNT=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned long ADDRESS=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;unsigned char mmcData=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;ADDRESS=(unsigned long)SECTOR*BLOCK_SIZE;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*-----------------------CMD17-----------------------------------------*/&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// CMD17 READ_SINGLE_BLOCK&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// Function : Single block read &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;// [31:0] Data address R1&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; SPIPORT &amp;amp;= ~CS; // Deslect Card&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0x51); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI (ADDRESS&amp;gt;&amp;gt;24);CHAR_SPI (ADDRESS&amp;gt;&amp;gt;16);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI (ADDRESS&amp;gt;&amp;gt;8);&amp;nbsp; CHAR_SPI (ADDRESS&amp;gt;&amp;gt;0);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; CHAR_SPI( 0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; if( (MMC_RESPONCE(0x00)) == 1 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&amp;nbsp; SPIPORT |= CS;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //while( (MMC_RESPONCE(0xFE)) == 1 )&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // disabled for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //SEND_CHAR_UART('r');&amp;nbsp; // disabled for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; //////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; while( (MMC_RESPONCE(0xFE)) == 1 );&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // added for debugging&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; for(LPCNT=0;LPCNT&amp;lt;512;LPCNT++)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if((LPCNT%32)==0)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {SEND_CHAR_UART('\n');SEND_CHAR_UART('\r');} &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mmcData=CHAR_SPI(0xFF);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SEND_CHAR_UART(mmcData); // added for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHAR_SPI(0xFF);&amp;nbsp; CHAR_SPI(0xFF);&amp;nbsp; //read CHKSUM&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;SendStr( MSGR); // disabled for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*-----------------------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;SPIPORT |= CS; // deslect card&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;CHAR_SPI(0xFF); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;return 0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//call this routine to initialize all peripherals&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void init_devices(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLI(); //disable all interrupts&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; port_init();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart0_init(); // for baud rate of 115200 bps&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; timer0_init();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCUCR = 0x00; // may be disabled for debugging?????&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GICR&amp;nbsp; = 0x00;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIMSK = (1&amp;lt;&amp;lt;TOIE0);//timer interrupt sources-timer0&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SEI(); //re-enable interrupts&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //all peripherals are now initialized}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;////////////////////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;void main(void)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;{&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i=0,LPCNT=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char rData;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int SECT=1000;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; init_devices(); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SpiInit();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;//////////////////////////////////////////////////////////////////////////////// &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; SEND_CHAR_UART(0x0D);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; SEND_CHAR_UART(0x0A);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; SendStr( MSGF);&amp;nbsp;&amp;nbsp; // Transmit welcome message.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // MSGF[]={"\rMMC CARD INTERFACE \r"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; SEND_CHAR_UART(0x0D);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; SEND_CHAR_UART(0x0A);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;////////////////////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; while ( MMC_INIT() != 0);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; //{ &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SendStr( MSG);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //SEND_CHAR_UART(0x0D);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //SEND_CHAR_UART(0x0A);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //break; disabled for debugging &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; //} &amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; SEND_CHAR_UART(0x0D);&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; SEND_CHAR_UART(0x0A);&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MSG[]&amp;nbsp; ={"\nMMC CARD IS INITIALIZED SPI MODE&amp;nbsp; \n"};&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; INSULATOR();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*----------------------------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; SPCR&amp;nbsp; = 0x50;SPSR|=0x01;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;/*-----------------------------------------------------------------------*/&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; GET_CSD();&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; INSULATOR(); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; GET_CID();&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; INSULATOR(); &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RdFlag=0,WrtFlag=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //insert your functional code here...&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; while(1)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {//start of while loop for data read &amp;amp; write&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ////////////////////////// write routine ///////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; //if(&amp;nbsp; ( (PINC&amp;amp;0x01)!=1 )&amp;amp;&amp;amp;( ((PINC&amp;amp;0x02)!=0))&amp;nbsp; )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // added for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; //{Button1Pressed=0;Button2Pressed=0;RdFlag=0,&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // WrtFlag=0;SECT=1000;} // added for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if((PINC&amp;amp;0x01)==1)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; {Button1Pressed=1;Button2Pressed=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RdFlag=0,WrtFlag=1;SECT=1000;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if((PINC&amp;amp;0x02)==0)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; {Button2Pressed=1;Button1Pressed=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RdFlag=1,WrtFlag=0;SECT=1000;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if(WrtFlag==1)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; {//if for write button&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Routines for writing data&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MMC_WRITE_BLOCK(SECT);&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;INSULATOR();&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Data++;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SECT++; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(SECT&amp;gt;1005)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SECT=1000;Data=65;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//RdFlag=1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WrtFlag=0;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }//end of if block for write button&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ///////////////// end of write routine /////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if(RdFlag==1)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; {&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if swicth connected to PD3 closed then read&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ////////////////////////////////////////////////////////////////////////////&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Routine for reading data&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; MMC_READ_BLOCK(SECT);INSULATOR();&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; SECT++; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if(SECT&amp;gt;1005)&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SECT=1000;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RdFlag=0;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //WrtFlag=1;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}// closing bracket of if block for reading data&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHAR_SPI(0x55); // added for debugging&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }//ending bracket for while loop for read &amp;amp; write&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;}&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-4557288506317004756?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/4557288506317004756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/interfacing-avr-micro-controller.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/4557288506317004756?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/4557288506317004756?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/interfacing-avr-micro-controller.html' title='Interfacing AVR micro-controller ATmega32 with Multimedia Card (MMC)'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WyqB9Ls02ZM/TUXBQFvg6OI/AAAAAAAAAEg/j8xiE7kkP94/s72-c/MMC32.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;D0UMQ3szfCp7ImA9Wx9UFkw.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-9208006852459825922</id><published>2011-01-29T01:54:00.033+05:00</published><updated>2011-02-13T21:41:22.584+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-13T21:41:22.584+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><title>Things to consider when buying a laptop computer</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Buying a laptop computer is not a child's play,especially when there so many features and options available in the market in this regard.It is indeed a big purchase to make.Most of the people who use desktop computers are not much familiar with the features and options to focus on when it comes to buying a laptop computer.Computer vendors and dealers usually twist and exaggerate facts to entice the customers into buying their products.An average user who does not has a deep understanding of the technicalities of laptop computers may easily be overwhelmed by the features and options available in laptop computers that are advertised by the vendors.so an average user who is familiar with the use of desktop computers may easily end up buying a laptop computer which might prove to be a trash later on.Therefore it is suggested to do some research in this regard before you decide on buying a laptop computer.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;In my view here are a few features and options that you should concentrate on when buying a laptop computer.&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TUb8SeYSn5I/AAAAAAAAAEk/0FuEQlzrkQc/s1600/41pusg4FW0L._AA300_.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TUb8SeYSn5I/AAAAAAAAAEk/0FuEQlzrkQc/s1600/41pusg4FW0L._AA300_.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;b&gt;1. Figure Out your requirements&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;The most attractive feature of a laptop computer, as compared to the desktop computer, is its portability.Portability means it can be easily carried anywhere you like.If you need to travel frequently or you work out doors and you need to carry your computer with you then you definitely&amp;nbsp; need  a portable laptop computer.Laptop computers are usually much more expensive as compared to the desktop computers.Roughly a laptop computer costs almost twice as much as a desktop computer does.Downside to buying a laptop computer is its lack of flexibility to be upgraded like a desktop computer.Unlike a laptop computer a desktop computer can be easily upgraded according to user's needs.The portability of a laptop computer depends upon its size and weight.The lighter in weight and smaller in size a laptop computer is the more portable it is supposed to be.However,the portability comes at the cost of reduction in computing power of the computer.The more portable a laptop computer is the lesser the computing power it is equipped with.Therefore,it is highly recommended that until unless potability and mobility of your computer are your inevitable requirements,you should not buy a laptop computer instead of a desktop computer.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;1. Processor &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Processor (Microprocessor) is the heart and soul of your laptop computer.The performance of your computer is greatly dependent upon the type,brand,speed and cache memory of&amp;nbsp; the processor of your computer.One of the two most reputed brands of processors available in the market are Intel and AMD.You can choose either one of these two.At the moment Intel's Core 2 Duo is considered to be the best processor for laptop computers that caters to needs of an ordinary user.The choice of processor greatly depends upon the type of&amp;nbsp; the application programs that you mostly like to run on your laptop computer.For gaming enthusiasts &lt;/span&gt;&lt;span class="dek"&gt;Intel's Core 2 Quad and Core i7 CPUs are a more appropriate.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;The speed of the microprocessor of computer is usually expressed in terms of Giga Hertz (GHz).This is an important factor that should be considered while buying a laptop computer.This figure represents the clock speed of microprocessor.It is actually the measure of the millions of instructions a microprocessor is capable of processing in one second.The higher the clock speed of the microprocessor,in terms of GHz's, the faster is the&amp;nbsp; information processing capabilities of your computer.In my opinion the speed of your processor should be at least 3GHz.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Although the processing speed of the microprocessor is a very important factor that greatly affects the performance and computing power of your computer,but&amp;nbsp; it should be noted that ,its&amp;nbsp; not the only factor that you should concentrate on while buying a laptop computer.There are scores of other factors like cache memory,bus speed,RAM etc., as well that greatly affect the processing power and performance of your computer.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;&lt;b&gt;2. RAM&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;RAM stands for random access memory.This is the volatile memory where your operating system,application programs and data being used in different processes currently ongoing in your computer is loaded by your processor for fast acess.Data stays in RAM as long as your PC is running.As soon as your PC is powered off all the data loaded in your RAM is lost.RAM is much faster to read from and write to as compared with other types of storage media in your computer like Hard Disc,USB disc and CD ROM etc.Whenever your PC is turned on again,operating system and other files from your hard disc are loaded again into the RAM of your computer.RAM comes in the form of computer chips.These chips plug into special connectors in your computer.RAM is usually measured in terms of Mega Bytes (MBs).The processing speed of your computer also depends upon the amount of RAM in terms of MBs&amp;nbsp; and access time of the RAM installed in your computer.The access time of the RAM is the amount of time the RAM takes to write data and to read it once that request has been placed by the processor.Typical access times vary from 9 nanoseconds to 70 nanoseconds depending upon the type of RAM.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;In my view at least 1GByte of RAM should be installed in your laptop computer,preferably it should be 2GBs.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;3.Motherboard&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Motherboard  is the main circuit board of your computer which has interfaces for  connection with CPU and all the peripheral devices like hard disk,CD ROM  and BIOS etc., which are essential for the functioning of your  computer.Motherboard also contains expansion slots and ports like serial  port,USB port and parallel port etc.,for connection with peripheral  devices like mouse,keyboard and display etc.The design,architecture and brand of the motherboard of your laptop computer greatly affect the performance and computational power of your computer.Usually the motherboard of the laptop computer is proprietary.You cannot just fit any motherboard in your laptop casing.Keeping&amp;nbsp; in view the significance of motherboard in laptop computer,while buying a laptop computer,you must overview the salient features and architecture of the motherboard of the laptop computer that you intend to purchase. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;4. Battery Life and Quality&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The most important motive behind purchasing a laptop computer is its portability and mobility.A good laptop computer is considered to be one which has battery which is good enough to last for at least two hours,once it has been charged,under normal operation conditions of laptop.So you should pay special attention to the type,quality and life of the battery of your laptop computer.So there is no use buying a laptop whose battery cannot last more than thirty minutes when the battery is fully charged and laptop is being powered by the battery.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;5. Display Screen&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;All laptop computers come with built-in LCD displays,however you can also hookup an LCD monitor externally with your laptop computer.LCD screen of your laptop computer is an important factor that dictate the cost,power consumption,size and weight of your computer.The bigger the size of the display screen of your laptop computer the bigger will be the weight,size and power consumption requirements of your laptop computer and consequently the more difficult it will be to carry your laptop along with you.So the size of the display screen of your laptop computer greatly affects the potability and mobility of your laptop computer.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;So,if you are a highly mobile type of person and you have to carry your laptop a lot along with you while traveling&amp;nbsp; by road or by air then you definitely need a light weight and portable laptop computer.In such a case 14 inch display screen will be good for you.Otherwise,if you do not have such constraints then 17inch display screen is a good option.In short to decide upon the size of the display screen of your laptop computer you should first figure out your needs for portability and mobility of your laptop computer.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;6. Ports&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;One of the most important factors that you should take into consideration while buying a&amp;nbsp; laptop computer is that your computer should be equipped with fairly a good number of ports&amp;nbsp; to meet your potential requirements for interfacing peripheral devices with your computer.These days due to growing competition in computer market&amp;nbsp; and to reduce the cost of laptop computer many manufacturers are keeping the number of ports in new designs of laptops very low which may not be enough for potential needs of the end user.So be careful while buying a laptop ,so that your laptop should not be deficient in number of ports that you may need for your applications.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;7.Wireless Connectivity&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The laptop computer you intend to buy should be equipped with features for wireless connectivity like bluetooth,wifi and Infra-red connection etc.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Your laptop should preferably equipped with a built-in integrated wireless network card (like &lt;/span&gt;&lt;/span&gt;802.11b/g/n&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;)and an integrated bluetooth device.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;8.Operating System&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=B00367A8NS&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;There are three well known operating systems Microsoft Windows,Mac OSX and Linux that a&amp;nbsp; laptop computer may be shipped preloaded with.Each of the three operating systems has its own&amp;nbsp; individual advantages and disadvantages.However,it is recommended that the laptop computer you intend to buy should be preloaded with windows operating system.Although Microsoft Windows has security related bugs and is usually infested with viruses but because of wealth of applications available for Microsoft Windows,it is deemed to be industry standard operating system.Therefore by and large Microsoft windows Operating System is a good choice for a laptop computer.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;9.Hard Drive&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The hard disk of the laptop computer that you intend to buy should be capacious enough to contain your essential soft-wares and back up of your important data that you may need off and on.In addition to the capacity of hard drive in terms of GBs,it is also important to take into consideration the rpm speed of the hard drive.The bigger the rpm figure the faster the hard drive will be.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;10.DVD ROM Drive&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Soft-wares are usually available on CD and DVD ROMs,also you need to store the back up copies of your important data and softwares by writing them on CDs and DVDs.The&amp;nbsp; laptop computer you intend to buy should be equipped with a DVD ROM Drive that should not only be able to read CDs and DVDs but also it should be able to write your data on CDs and DVDs.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-9208006852459825922?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/9208006852459825922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/things-to-consider-when-buying-laptop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/9208006852459825922?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/9208006852459825922?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/things-to-consider-when-buying-laptop.html' title='Things to consider when buying a laptop computer'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WyqB9Ls02ZM/TUb8SeYSn5I/AAAAAAAAAEk/0FuEQlzrkQc/s72-c/41pusg4FW0L._AA300_.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DkQBQ3gyeip7ImA9Wx9VEUk.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-659931527351295113</id><published>2011-01-27T20:42:00.002+05:00</published><updated>2011-01-27T21:05:52.692+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-01-27T21:05:52.692+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Analog circuits'/><title>OpAmp based Voltage Translator Ciruit for ADC of Micro-controller</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;All the naturally occurring phenomena like sound,temperature and pressure etc, are analog in nature.Therefore to&amp;nbsp; make an micro-controller read analog signal for analog-to-digital conversion process, through built-in analog-to-digital converter&amp;nbsp; (ADC), it is necessary to subject the analog signal, generated by a transducer, to some analog signal conditioning and analog signal processing using analog circuits.The micro-controller can read such a signal,generated by a transducer,only if it has been conditioned and scaled down to a range which micro-controller can read for analog-to-digital conversion.This is necessary in particular for micro-controllers like&amp;nbsp; AVR,PIC and Free-scale which have built-in ADCs.These micro-controllers usually operate with 5Volts power supply.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The circuits shown in the Figure1 below is appropriate for scaling down the transducer generated voltages to 0-5 Volts range&lt;/span&gt;&lt;/span&gt;.&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;This circuit can translate the voltage falling in some other voltage range ( like -5 to +5 Volts or -10 to +10 Volts etc.) to 0-5Volt range so that a micro- controller ,being operated from 5Volt power supply, may read this signal, through its ADC input, without getting damaged.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TUGQ7mlkOuI/AAAAAAAAAEU/RheNhAckPMY/s1600/VT0.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TUGQ7mlkOuI/AAAAAAAAAEU/RheNhAckPMY/s320/VT0.bmp" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Figure1 : Voltage Translator Circuit Schematic Diagram&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;The formula for voltage translation (as shown in Figure1) is given below:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Vout = Vin (Rf/R1) - (Rf/R2)V1&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;VM = -V1&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;A typical voltage translation circuit for translating the input voltage ranging from -5V- to- +5V&amp;nbsp; to the 0-5V voltage range is shown in Figure2&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TUGVdylzGwI/AAAAAAAAAEY/1E_X-4b5Gw4/s1600/VT1.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TUGVdylzGwI/AAAAAAAAAEY/1E_X-4b5Gw4/s320/VT1.bmp" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Figure 2 : -5V-to-+5V input Voltage Translation to 0-5Volts&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;A sinusoidal input voltage of&amp;nbsp; frequency 1KHz and&amp;nbsp; -5V-to-+5V peak-to-peak&amp;nbsp; voltage has been applied to the input of this circuit,which is translated to a sinusoidal output voltage with&amp;nbsp; peak-to-peak amplitude varying from 0-5 Volts.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;The input and output waveform of this circuit simulated in Multisim software by NI is shown in Figure 3 below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TUGW60yIniI/AAAAAAAAAEc/g-svI0ii5DA/s1600/VT2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="151" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TUGW60yIniI/AAAAAAAAAEc/g-svI0ii5DA/s320/VT2.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: small;"&gt;Figure 3 : Input and Output waveform of Voltage Translator Circuit&amp;nbsp; (-5V-+5V to 0-5V)&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-659931527351295113?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/659931527351295113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/opamp-based-voltage-translator-ciruit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/659931527351295113?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/659931527351295113?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/opamp-based-voltage-translator-ciruit.html' title='OpAmp based Voltage Translator Ciruit for ADC of Micro-controller'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WyqB9Ls02ZM/TUGQ7mlkOuI/AAAAAAAAAEU/RheNhAckPMY/s72-c/VT0.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DkMMSHk4cCp7ImA9Wx9UGEs.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-6967489976160624360</id><published>2011-01-26T22:35:00.009+05:00</published><updated>2011-02-16T18:54:49.738+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-16T18:54:49.738+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Interfacing PIC18F4520 with serial memory through IIC or I2C Interface</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=1856177505&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;The Serial EEPROM&amp;nbsp; Memory (AT24C512) has been interfaced with PIC18F4520 micro-controller using I2C Interface.I2C Interface is also called Two-Wire Interface (TWI).TWI is ideally suited for typical micro-controller applications.This is a multi-master single-ended serial bus interface invented by Philips.The TWI protocol allows the embedded systems designer to interconnect up to 128 different devices with only two bi-directional bus lines, one for clock (SCL) and one for data (SDA). The only external hardware component&amp;nbsp; required&amp;nbsp; for implementation of the bus is a single pull-up resistor for each of the TWI bus lines. All devices connected to the bus have individual addresses, and mechanisms for resolving bus contention are inherent in the TWI protocol.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;The Proteus VSM simulation,Schematic diagrams and C code developed in mikroC for PIC for interfacing&amp;nbsp; serial memory AT24C512 (in this simulation 24LC512 has been used) with PIC18F4520 micro-controller is given below.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TUBWfmYE6eI/AAAAAAAAAEM/ExK8n0bizGQ/s1600/PIC18F4520I2C512-1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="188" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TUBWfmYE6eI/AAAAAAAAAEM/ExK8n0bizGQ/s320/PIC18F4520I2C512-1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Figure : Schematic Diagram &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TUBUtf6_-BI/AAAAAAAAAEE/MbPAiIjLN0s/s1600/PIC18F4520I2C512-2.JPG" imageanchor="1"&gt;&lt;img border="0" height="245" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TUBUtf6_-BI/AAAAAAAAAEE/MbPAiIjLN0s/s1600/PIC18F4520I2C512-2.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Figure 1 : Signal Waveform and Data written to and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; read from serial memory&lt;br /&gt;
&lt;br /&gt;
This C code simply writes a message string "Hello this is test message to be written to serial memory!" to the serial memory and then after that message has been written to the memory the micro-controller reads that message from serial memory and displays the retrieved message to the Virtual Terminal.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;C Code:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;/********************************************&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;* Project name:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial Memory (24C512) read and write test code&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;* Copyright:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; M.Yasir&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;* Description:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This code demonstrates how to use usart library routines.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Upon receiving data via RS232, PIC MCU immediately&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sends it back to the sender.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;* Test configuration:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; P18F4520&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dev.Board:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Oscillator:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HS, 08.0000 MHz&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ext. Modules:&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SW:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mikroC v8.0.0.0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;* NOTES:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Connect Rx jumper to RC7 and Tx jumper to RC6.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;*******************************************/&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;//************* Macros for serial memory ***************//&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define BIT7 0x80&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define BIT6 0x40&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define BIT5 0x20&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define BIT4 0x10&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define BIT3 0x08&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define BIT2 0x04&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define BIT1 0x02&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define BIT0 0x01&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define SDA BIT1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define SCL BIT0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define I2C_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;#define I2C_DIR&amp;nbsp;&amp;nbsp; TRISC&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;//***********************************************//&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;unsigned short i;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;unsigned int j=0,k=0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;unsigned char msg01[]="Hello! This is a test message from UART\n\r";&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;//*************** union for addressing **************//&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;typedef union&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int i;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char uc[sizeof(unsigned int)];&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;} i2c_un;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;i2c_un ibuffer;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;//***********************************************//&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;//***********************************************//&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;//************** I2C Memory Functions *************//&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; /*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; Send START, defined as high-to-low SDA with SCL high.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; Return with SCL, SDA low.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; Returns CY set ifbus is not available&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; */&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;void start(void)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Data changes on SDA line during SCL high periods&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // indicate a start or stop condition&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A high to low transition on SDA line while clock is&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // SCL is high is start condition&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SCL; I2C_PORT |= SCL;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLK_L = 1; CLK_T = OUTPUT; -&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SDA; I2C_PORT |= SDA;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SDA_L = 1; SDA_T = OUTPUT; -&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Delay_us(1);&amp;nbsp; /* One microseconds pause */&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT &amp;amp;= ~SDA;//SDA_L = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(4);&amp;nbsp; /* Four microseconds pause */&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT &amp;amp;= ~SCL;//CLK_L = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;/*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;Send STOP, defined as low-to-high SDA with SCL high.SCL&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt; expected low on entry.Return with SCL, SDA high.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;*/&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;void stop(void)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A low to high transition of SDA line while clock SCL is&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // high is stop condition&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SDA;I2C_PORT &amp;amp;= ~SDA;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SDA_L = 0; SDA_T = OUTPUT;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(1);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SCL; I2C_PORT |= SCL;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLK_L = 1; CLK_T = OUTPUT;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(4);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT |= SDA;//SDA_L = 1;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;/*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;The state of data line represents valid data,when after a&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;start condition, the data line is stable for the duration of&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;high period of the clock signal.The data on the line must&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;be changed during the low period of the clock signal.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;There is one bit of data per clock pulse&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;*/&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;// function&amp;nbsp; for shifting 8-bits serially out of SDA to slave&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;unsigned char shout(unsigned char out)&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char count1, ack_flag;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SDA;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SDA_T = OUTPUT;&amp;nbsp; // set SDA as output&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(count1=0; count1&amp;lt;=7; count1++)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((out &amp;amp; 0x80) == 0x80)&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Most Significant bit is shifted out first&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT |= SDA;//SDA_L = 1;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if MSB is 1 then set SDA to 1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT &amp;amp;= ~SDA;//SDA_L = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT |= SCL;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLK_L = 1;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Set CLK to high&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(4);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT &amp;amp;= ~SCL;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLK_L = 0;&amp;nbsp; // set SDA to low&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out &amp;lt;&amp;lt;= 1;&amp;nbsp; // shift bits to left by one bit&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR |= SDA;//SDA_T = INPUT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // after shifting 8 bits set SDA as input to&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get acknowledge bit from slave&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(1);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT |= SCL;//CLK_L = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set CLK high while getting the acknowledge&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // bit from the slave&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(4);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if(RC1 == 1) //??? check this code line&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // read SDA if SDA input is 1 sent by slave then set&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Acknowledge flag to 1 else set it to 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(PORTC &amp;amp; 0b00000010)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ack_flag = 1;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ack_flag = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT &amp;amp;= ~SCL;//CLK_L = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // after getting the acknowledge bit set CLK to 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ack_flag;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // return the acknowledge received from the&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // slave from the function&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;/*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;Each receiving device,when addressed,is obliged to generate and&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;Acknowledgment signal after the reception of each byte.The master&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;device must generate an extra clock pulse which is associate with&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;the Acknowledge bit.A device that acknowledges must pull down&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;the SDA line during the Acknowledge clock pulse in such a way that&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;the SDA line is stable low during the high period of the acknowledge&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;related clock pulse.Setup and hold times must be taken into account.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;During reads, a master must signal and end of data to the&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;slave by not generating and Acknowledgment bit on the last byte&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;that has been clocked out of the slave.In this case the slave will&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;leave the data line high to enable the master to generate the Stop&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt; condition&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;*/&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;////////////////////////////////////////////////////////////////////////////////&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;void write_byte(unsigned int address,unsigned char data)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char valid=0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int i;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ibuffer.i = address;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //error_flag = 1;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A control byte is the first byte received following the start&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; condition&amp;nbsp; start.The last bit of the control byte define the&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; read/write operation to be performed. 1 - for read,0 - for&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = shout(0xa0);&amp;nbsp; // 10100 000 0 - A0=0,A1=0,R/W=0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(valid != 1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {// if-1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = shout(ibuffer.uc[1]);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(valid != 1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { // if-2&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = shout(ibuffer.uc[0]);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(valid != 1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { // if-3&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = shout(data);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(valid != 1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //errror_flag = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } // end of if-3&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }// end of if-2&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }// end of if-1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=1; i&amp;lt;=2500; i++) // diabled for debug&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(4);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;/*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;Clock out an acknowledge bit (low).&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;SCL expected low on entry.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;Return with SCL, SDA low.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;*/&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;void ack(void)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SDA;I2C_PORT &amp;amp;= ~SDA;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SDA_L = 0; SDA_T = OUTPUT;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(1);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SCL;I2C_PORT |= SCL;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLK_L = 1; CLK_T = OUTPUT;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(4);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT &amp;amp;= ~SCL;//CLK_L = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;/*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;Clock out a negative acknowledge bit (high).&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;SCL expected low on entry.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;Return with SCL low, SDA high.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;*/&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;void nack(void)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SDA;I2C_PORT |= SDA;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SDA_L = 1; SDA_T = OUTPUT;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(1);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SCL;I2C_PORT |= SCL;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLK_L = 1; CLK_T = OUTPUT;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(4);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT &amp;amp;= ~SCL;//CLK_L = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;/*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;Shift in a byte from the AT24Cxx, most significant bit&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt; first.SCL expected low on entry. Return with SCL low.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;Returns received data byte in A.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;*/&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;unsigned char shin(void)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char count1, c=0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR |= SDA;//SDA_T = INPUT;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set SDA as input for shifting data in&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_DIR &amp;amp;= ~SCL;I2C_PORT &amp;amp;= ~SCL;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //CLK_L = 0; CLK_T = OUTPUT;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set clock as out put and set CLK to 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(count1=0; count1&amp;lt;=7; count1++)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(4);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT |= SCL;//CLK_L=1;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;lt;&amp;lt;=1; //&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if(RC1==1) //if(SDA_P)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(PORTC &amp;amp; 0b00000010)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = c | 0x01;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay_us(1);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C_PORT &amp;amp;= ~SCL;//CLK_L = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return c;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;unsigned char read_current(void)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char ch, valid;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = shout(0xa1);&amp;nbsp; // what does 0xa1 stand for&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(valid != 1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ch = shin();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nack();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ch;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;/*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; A random read requires a 'dummy' byte write sequence to load&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; in the data world address Once the device word address and data&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; word address are clocked in and acknowledged by the EEPROM,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; the micro-controller must generate another start condition.The&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; micro-controller now initiates a current address read by sending a&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; device address with read/write select bit high.The EEPROM&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; acknowledges the device address&amp;nbsp; and serially clocks out the&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; data word.The micro-controller does not respond with a zero but&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; generates a following stop condition&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;*/&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;unsigned char read_byte(unsigned int address)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char valid=0, ch=0xFF;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ibuffer.i=address;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = shout(0xa0);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // initiation of dummy byte write sequence for random read&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(valid != 1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = shout(ibuffer.uc[1]);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(valid != 1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid = shout(ibuffer.uc[0]);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(valid != 1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ch = read_current();&amp;nbsp; // current a&amp;nbsp;&amp;nbsp; address read&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop();&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ch;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;//*********** End of I2C Memory Functions ************//&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;void main()&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char ch;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; unsigned int m=0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; unsigned int memAddress=0x01;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; unsigned char msg02[]="\n\rHello this is test message\ &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to be written to serial memory!";&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMCON |= 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // turn off comparators&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCON1 |= 0x0F;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // turn off analog inputs&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //MEMCON.EBDIS = 1;&amp;nbsp; // disable external memory bus&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* In itialisation of Ports and peripherals */&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB = 0;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRISB = 0;&amp;nbsp;&amp;nbsp; // PORTD is output&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRISC = ( TRISC&amp;amp;0xF0 )|0x0F;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PORTC lower nibble as input&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_init(57600);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // initialize USART module (8 bit character size,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //57600 baud rate, no parity bit...)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //=====================================//&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(j=0;j&amp;lt;sizeof(msg01);j++)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write(msg01[j]);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( USART_Data_Ready() )&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if data is received&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = USART_Read(); // read the received data&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write(i);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // send data via USART&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( m=0; m&amp;lt; sizeof(msg02);m++ )&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write_byte( memAddress, msg02[m] );&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // writes byte to serial memory&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memAddress++;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memAddress=0x01;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( m=0; m&amp;lt;sizeof(msg02); m++)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ch=read_byte(memAddress);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USART_Write(ch);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memAddress++;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memAddress=0x01;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB = ~PORTB;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Bitwise negation of pins on PORTB&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Delay_ms(100);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 1 second delay&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-6967489976160624360?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/6967489976160624360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/interfacing-pic18f4520-with-serial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/6967489976160624360?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/6967489976160624360?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/interfacing-pic18f4520-with-serial.html' title='Interfacing PIC18F4520 with serial memory through IIC or I2C Interface'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WyqB9Ls02ZM/TUBWfmYE6eI/AAAAAAAAAEM/ExK8n0bizGQ/s72-c/PIC18F4520I2C512-1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUEHRHw4eCp7ImA9Wx9VEEo.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-6631339928807116416</id><published>2011-01-24T23:50:00.008+05:00</published><updated>2011-01-27T01:27:15.230+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-01-27T01:27:15.230+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Protues Simulation of Interfacing LCD LM044L with ATmega32 AVR Microcontroller</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;This post discusses how to interface an 8-bit AVR micro-controller (ATmega32) with a &lt;/span&gt;&lt;span style="font-size: small;"&gt;20characterx4lines LM044L LCD (Liquid Crystal display). &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;LCD&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;LCD stands for Liquid Crystal Display.It is a thin flat electronic visual display that uses the light modulating properties of Liquid Crystals (LCs) .LCD's are used in a wide range of consumer electronics devices and applications like calculators,gaming devices,watches,clocks,mobile phones,energy meters,video displays,computer monitors and television etc.LCDs have displaced Cathode Rays Tube (CRT) displays in most of the applications.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: small;"&gt;LM044L is a 20characterx4lines LCD manufactured by Hitachi.It requires a single 5V power supply for its operation.The LCD panel has a built-in HITACHI controller LSI HD44780.In the &lt;/span&gt;&lt;span style="font-size: small;"&gt;HD44780,the data can be sent in&amp;nbsp; two modes :&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;1. 4-bit two operations mode&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;2. 8-bit one operation mode&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;/ol&gt;&lt;span style="font-size: small;"&gt;so this makes it flexible either to interface with 4-bit MPU or with 8-bit&amp;nbsp; MPU.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;When interface data is 4-bits long,data is transferred using four buses of LCD only i.e.,DB4-DB7.In this case data buses DB0-DB3 are not used.In this mode data transfer between MPU and HD44780 completes when 4-bit data is transferred twice.Data of the higher order 4-bits (contents of DB4-DB7,when interface data is 8-bits long) is transferred first and then the lower order 4-bits &lt;/span&gt;&lt;span style="font-size: small;"&gt;(contents of DB0-DB3,when interface data is 8-bits long)&lt;/span&gt;&lt;span style="font-size: small;"&gt; are transferred.When interface is 8-bits long,data is transferred using the 8 data buses of BD0-BD7.In this simulation interface data is 8-bits long and this is why 8 data buses of &lt;/span&gt;&lt;span style="font-size: small;"&gt;BD0-BD7 have been interface with PORTB of ATmeha32 AVR micro-controller.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Further details about this LCD can be found from the website of Hitachi. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;AVR Micro-controller&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The AVR micro-controller used in this simulation is&amp;nbsp; ATmega32.ATmega32 is a powerful RISC 8-bit microcontroller,  with 32kB In-System Programmable FLASH memory, 1024 bytes EEPROM and 2KBytes of internal SRAM. Its RISC CPU core can execute almost one  instruction per cycle. The core is complemented with a rich set of  peripherals, including I/O ports, timers, PWM, A/D converters, etc.  Details can be found at &lt;/span&gt;&lt;a href="http://www.atmel.com/"&gt;&lt;b&gt;&lt;span style="font-family: Tahoma,sans-serif;"&gt;Atmel's Website&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;.&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;System Description:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;In this simulation the ATmega32 operates at Oscillator frequency of 7.3728Mhz.The schematic diagram of this simulation in Proteus VSM is shown in the Figure below:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;span id="goog_1917133639"&gt;&lt;/span&gt;&lt;span id="goog_1917133640"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TT3Jk8rQ57I/AAAAAAAAAD8/u0uxa4onLCU/s1600/LCD32a.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TT3Jk8rQ57I/AAAAAAAAAD8/u0uxa4onLCU/s320/LCD32a.JPG" width="320" /&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Figure: Schematic Diagram of Proteus Simulation&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Characters&amp;nbsp; typed on the Virtual Terminal of Protues VSM appear on LCD Screen.Virtual Terminal of Proteus VSM is in a way equivalent to the Hyper Terminal Software provided with Windows XP,which is used to read from or write data to the&amp;nbsp; Serial port of PC.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;The 8-data lines of LCD D0-D7 have been interfaced with PORTB of ATmega32.The control signals of LCD i.e.,RS,RW and E, are interface with PORTC0,PORTC1 and PORTC2 respectively. Serial port of ATmega32 is interfaced with Virtual Module of Proteus VSM.This is equivalent to interfacing ATmega32 with serial port of PC in real hardware.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;The C code developed in ImageCraft C Compiler for AVR is give below :&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;//ICC-AVR application builder : 5/29/2009 5:58:38 PM&lt;br /&gt;
// Target : M32&lt;br /&gt;
// Crystal: 7.3728Mhz&lt;br /&gt;
// one instruction cycle = 0.1356 usec&lt;br /&gt;
// 8insc=1.08usec&lt;br /&gt;
#include &amp;lt;iom32v.h&amp;gt;&lt;br /&gt;
#include &amp;lt;macros.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;/* defining pins for control signals */&lt;br /&gt;
&amp;nbsp;#define&amp;nbsp; RS&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x01&amp;nbsp;&amp;nbsp; /* register select DR/IR: 1/0*/&lt;br /&gt;
&amp;nbsp;#define&amp;nbsp; RW&amp;nbsp;&amp;nbsp; 0x02&amp;nbsp;&amp;nbsp; /* read/write: 1/0 */&lt;br /&gt;
&amp;nbsp;#define&amp;nbsp; E&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0x04&amp;nbsp;&amp;nbsp; /* enable/disable:: 1/0*/&lt;br /&gt;
&amp;nbsp;#define&amp;nbsp; busyCheck&amp;nbsp; 0x80&amp;nbsp; /* busy checking bit */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************&amp;nbsp; defining commands to run&amp;nbsp; **********************/&lt;br /&gt;
&amp;nbsp;unsigned char spec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x38;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;// for specifications as lines and char pixels i.e 5x8&lt;br /&gt;
&amp;nbsp;unsigned char LcdCur_ON&amp;nbsp; = 0x0E;&amp;nbsp; // Cursor ON/OFF:: 1/0&lt;br /&gt;
&amp;nbsp;unsigned char Lcd_Clr&amp;nbsp; = 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear LCD&lt;br /&gt;
&amp;nbsp;unsigned char Curser_Right = 0x06; // cursor movement to right direction&lt;br /&gt;
&amp;nbsp;unsigned char Curser_HOME&amp;nbsp; = 0x02;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;// Move cursor to home location&lt;br /&gt;
/**************************************************************************/ &lt;br /&gt;
/* text to display on LCD */&lt;br /&gt;
&amp;nbsp;unsigned char *text = " Muhammad Yasir ";&lt;br /&gt;
&amp;nbsp;unsigned char *engr = "Engineer";&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;unsigned int j=0,k=0;&lt;br /&gt;
&amp;nbsp;/* signatures of the function being to used*/&lt;br /&gt;
&amp;nbsp;void init(void);&amp;nbsp; /* LCD initialization function */&lt;br /&gt;
&amp;nbsp;void writeCmd( unsigned char );&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;/* function to run the commands on LCD*/&lt;br /&gt;
&amp;nbsp;void getReady(void);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;/* function to check either LCD free or in process i.e busy */&lt;br /&gt;
&amp;nbsp;void writeByte(unsigned char );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;/* function to write data/text to LCD. getting a pointer parameter.*/&lt;br /&gt;
&amp;nbsp;void writeString(unsigned char *);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;/* function to write data/text to LCD. getting a pointer parameter.*/&lt;br /&gt;
&amp;nbsp;void writeByte(unsigned char);&lt;br /&gt;
&amp;nbsp;/***************************************************************************/&lt;br /&gt;
&amp;nbsp;delay_1uSec(unsigned int);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;delay_1uSec(unsigned int m) // approximately m*1uSec Delay&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for(j=0;j&amp;lt;m;j++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; for(k=0;k&amp;lt;8;k++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; asm("nop");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void port_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTA = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRA&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTB = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRB&amp;nbsp; = 0xFF;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC = 0x00; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRC&amp;nbsp; = 0xFF;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTD = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRD&amp;nbsp; = 0x00;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//TIMER0 initialize - prescale:8&lt;br /&gt;
// WGM: Normal&lt;br /&gt;
// desired value: 8KHz&lt;br /&gt;
// actual value:&amp;nbsp; 8.021KHz (0.3%)&lt;br /&gt;
void timer0_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCCR0 = 0x00; //stop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCNT0 = 0x45; //set count&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;OCR0&amp;nbsp; = 0xBB;&amp;nbsp; //set compare&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCCR0 = 0x02; //start timer&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#pragma interrupt_handler timer0_ovf_isr:12&lt;br /&gt;
void timer0_ovf_isr(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCNT0 = 0x45; //reload counter value&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//UART0 initialize&lt;br /&gt;
// desired baud rate: 57600&lt;br /&gt;
/* ************************************************************************ */&lt;br /&gt;
&lt;br /&gt;
void uart0_init(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = 0x00; //disable while setting baud rate&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRA = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRC = BIT(URSEL) | 0x06;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UBRRL = 0x07; //set baud rate lo&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UBRRH = 0x00; //set baud rate hi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = 0x18;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/////////////// UART data receive routine //////////////////&lt;br /&gt;
unsigned char ReceiveByte(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; while(!(UCSRA &amp;amp; BIT(RXC)));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; return UDR;&lt;br /&gt;
}&lt;br /&gt;
////////////////// UART data transmit routine ///////////////&lt;br /&gt;
void SEND_CHAR_UART(char ch)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(UCSRA &amp;amp; BIT(UDRE))) ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UDR = ch;&lt;br /&gt;
}&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
//call this routine to initialize all peripherals&lt;br /&gt;
void init_devices(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//stop errant interrupts until set up&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLI(); //disable all interrupts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;port_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timer0_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; uart0_init();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCUCR = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GICR&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TIMSK = 0x00; //timer interrupt sources&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SEI(); //re-enable interrupts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//all peripherals are now initialized&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned char ch;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; unsigned int m=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; init_devices();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//insert your functional code here...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; init();&amp;nbsp; /* call to initialization function*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for(m=0;m&amp;lt;40;m++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ch=ReceiveByte();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writeByte(ch);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
&lt;/span&gt;&lt;span style="font-size: small;"&gt;/* init() function definition. this function sends commands to the LCD for */&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt; void init()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
{&amp;nbsp;&amp;nbsp;&amp;nbsp; /* initialization by calling the writeCmd(bit8) function.*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;writeCmd(spec);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;writeCmd(LcdCur_ON);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;writeCmd(Lcd_Clr);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;writeCmd(Curser_Right);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;writeCmd(Curser_HOME);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* function defination for writeCmd(bit8) */&lt;br /&gt;
void writeCmd(unsigned char cmd)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;getReady();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* function for checking either is LCD not busy?*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC &amp;amp;= ~E;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* make sure LCD not selected. that not be during initializing process*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTB = cmd;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* sending commmand to port3 bcz lcd conneted to..... */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC &amp;amp;= ~RS;&amp;nbsp; /*Select instruction register*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC &amp;amp;= ~RW; /* Write select control */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC |= E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC &amp;amp;= ~E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Check busy bit7 of the port3: function defination */&lt;br /&gt;
&lt;br /&gt;
void getReady()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC &amp;amp;= ~E;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* make sure lcd is not selected */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB |=busyCheck; /*&amp;nbsp; Make input Bit */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC &amp;amp;= ~RS;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; Command Register select */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC |= RW;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; /*&amp;nbsp; Read from LCD */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( (PINB &amp;amp; busyCheck) != 0x80) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC &amp;amp;= ~E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC |= E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC |= E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp;/* function defination to display data on LCD*/&lt;br /&gt;
void writeString(unsigned char *str)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char i;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int j;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; getReady();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC &amp;amp;= ~E;&amp;nbsp; /* make sure lcd is not selected&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i = 0; str[i] !='\0'; i++ )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB=str[i];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC |= RS;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC &amp;amp;= ~RW;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC |= E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTC &amp;amp;= ~E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; delay_1uSec(2000);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ////////////////////////////////////&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* function defination to display data on LCD*/&lt;br /&gt;
void writeByte(unsigned char Byte)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned char i;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned int j;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;getReady();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC &amp;amp;= ~E;&amp;nbsp; /* make sure lcd is not selected&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTB=Byte;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTC |= RS;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTC &amp;amp;= ~RW;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTC |= E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; delay_1uSec(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; PORTC &amp;amp;= ~E;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; delay_1uSec(2000);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ////////////////////////////////////&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-6631339928807116416?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/6631339928807116416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/protues-simulation-of-interfacing-lcd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/6631339928807116416?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/6631339928807116416?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/protues-simulation-of-interfacing-lcd.html' title='Protues Simulation of Interfacing LCD LM044L with ATmega32 AVR Microcontroller'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WyqB9Ls02ZM/TT3Jk8rQ57I/AAAAAAAAAD8/u0uxa4onLCU/s72-c/LCD32a.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUEHRHw4eCp7ImA9Wx9VEEo.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-2797745752900544408</id><published>2011-01-18T02:43:00.000+05:00</published><updated>2011-01-27T01:27:15.230+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-01-27T01:27:15.230+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>Speech Generation using Pulse Width Modulation (PWM) with AVR Microcontroller</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 27px; line-height: 31px;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;With advancement in microcontroller technology it has now become possible to generate speech using Pulse Width Modulation (PWM) feature of AVR microcontroller instead of using some specialized audio chip or DSP processor. This article discusses basic mechanism behind speech generation using Pulse Width Modulation (PWM) with 8-bit AVR microcontroller ATmega8535 has been utilized for generating speech from the speech samples that have been recorded, through Analog-to-digital Conversion, over Multimedia Card in SPI mode. For getting speech samples built-in Analog to digital converter of ATmega8535 has been utilized.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;Overview&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The heart and soul of this digital voice recording playback system is an Atmel ATmega8535 microcontroller.ATmega8535 is a powerful RISC 8-bit microcontroller, with 8kB In-System Programmable FLASH memory, 512 bytes EEPROM and 512 bytes of internal SRAM. Its RISC CPU core can execute almost one instruction per cycle. The core is complemented with a rich set of peripherals, including I/O ports, timers, PWM, A/D converters, etc. Details can be found at &lt;/span&gt;&lt;a href="http://www.atmel.com/"&gt;&lt;b&gt;&lt;span style="font-family: Tahoma,sans-serif;"&gt;Atmel's Website&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TTSu_6lzluI/AAAAAAAAADc/6u5eEHKlsbE/s1600/Figure1+Block+Diagram.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TTSu_6lzluI/AAAAAAAAADc/6u5eEHKlsbE/s320/Figure1+Block+Diagram.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px; line-height: 18px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px; line-height: 18px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px; line-height: 18px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Figure1: Block Diagram&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Multimedia&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; Card has been interfaced with AVR microcontroller through SPI port using SPI protocol. &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Multimedia&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; Card is commonly used in mobile phones for storing audio, video and image files. &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Multimedia&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; Card is commonly available in market in a wide range of memory capacities ranging from tens of megabytes of storage capacity to about 2GB and even more. Four LEDs and four push button switches have been added to the system. One push button switch is for recording the speech data on &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Multimedia&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; Card while the other push button switch is for play back of the recorded sound through PWM. One LED blinks while speech data is being recorded over &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Multimedia&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; Card, while other LED blinks when recorded data is being played back by MCU through PWM. While the other two push buttons and other two LEDs are for potential use so that features like fast forward and rewind may be added to this system. Speech data for almost 20 seconds is recorded on the &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Multimedia&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; Card which is subsequently played back by pressing the play button. The audio is picked up by a condenser microphone, and amplified by an LM386 based amplifier. The amplified signal is then filtered and passed to the built-in Analog-to-Digital Converter of ATmega8535.The analog speech input signal is sampled by Analog-to-Digital Converter at a frequency of 8kHz.Each of the speech samples generated by the A/D converter of MCU comprises 10-bits. The 10-bit speech samples are scaled down to-8 bit samples before storage. During playback, the samples stored in the &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Multimedia&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; Card are sent to the MCU's PWM module, which produces approximately a 16 KHz (here which is actually 15.686 KHz) PWM signal whose pulse width is proportional to the amplitude of the speech sample. This PWM signal is filtered, amplified, and then passed to a loudspeaker for playback. The loud speaker is driven by the amplifier circuit based on LM386.The loud speaker used for this system is an 8&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt; line-height: 115%;"&gt;Ω&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; and 0.5W loud speaker.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;Input Amplifier and Filter&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 14pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;The LM386 has been used as an input amplifier. The LM386 is a power amplifier designed for use in low voltage consumer applications. The gain is internally set to 20 to keep external part count low. Pins 1 and 8 serve for gain control. With pins 1 and 8 open, the 1.35 kW internal resistor sets the gain at 20 (26 dB). If a capacitor is put from pin 1 to 8, bypassing the 1.35 kW resistor, the gain will go up to 200 (46 dB). If a resistor is placed in series with the capacitor, the gain can be set to any value from 20 to 200.The inputs are ground referenced while the output automatically biases to one-half the supply voltage. The quiescent power drain is only 24 mill watts when operating from a 6 volt supply, making the LM386 ideal for battery operation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;When using the LM386 with higher gains (bypassing the 1.35 kW resistor between pins 1 and 8) it is necessary to bypass the unused input, preventing degradation of gain and possible instabilities. This is done with a 0.1 μF capacitor or a short to ground depending on the dc source resistance on the driven input.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TTSyUj8nkdI/AAAAAAAAADg/Whve0F7dmg8/s1600/Figure2+Input+Amplifier+and+Filter.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TTSyUj8nkdI/AAAAAAAAADg/Whve0F7dmg8/s320/Figure2+Input+Amplifier+and+Filter.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Figure2: Input Amplifier and Filter&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;The condenser microphone is biased using a resistor (R1) and the DC component blocked by a capacitor (C1).The variable resistor RV1 serves for volume control. While variable resistor placed in series with capacitor C2 serves for gain control of the amplifier. Maximum amplifier gain of 200 may be obtained by setting the variable resistor RV2 value to 0.The amplifier section is followed by a voltage level-shifter and an anti-aliasing filter. The anti-aliasing filter is a simple single-stage RC filter comprising R1 and C3.R4 protects the amplifier from any damage if the output is short-circuited. Different sub-circuits of the input amplifier and filter section are marked in the Figure 2 above.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;Speech Generation through PWM &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;Pulse Width Modulation (PWM) modules, which produces basically digital waveforms, can be used as cheap Digital-to-Analog (D/A) converters with only a few external components. A wide variety of micro-controller applications exist that need analog output but do not require high resolution D/A converters. Some speech applications (talk back units, speech synthesis systems in toys, etc.) also do not require high resolution D/A converters. For these applications, Pulse Width Modulated outputs may be converted to analog outputs. Conversion of PWM signals to analog waveforms involves the use of low-pass filters.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;Speech signal is generated from the recorded speech samples by Pulse Width Modulation. The width of the PWM output signal is proportional to the amplitude of the speech sample. The PWM output signal proportional to the amplitude of the speech sample is generated by operating the Timer1/Counter1 of the ATmega835 in Phase Correct PWM mode. In a typical PWM signal, the base frequency is fixed, but the pulse width is a variable. The pulse width is directly proportional to the amplitude of the original un-modulated signal. In other words, in a PWM signal, the frequency of the waveform is a constant while the duty cycle varies (from 0% to 100%) according to the amplitude of the original signal. A typical PWM signal is shown in Figure 2.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_WyqB9Ls02ZM/TTSyt1Xb32I/AAAAAAAAADk/FV397whzUD0/s1600/Figure+3+A+Typical+PWM+Waveform.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="147" src="http://1.bp.blogspot.com/_WyqB9Ls02ZM/TTSyt1Xb32I/AAAAAAAAADk/FV397whzUD0/s320/Figure+3+A+Typical+PWM+Waveform.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Figure 3: A Typical PWM Waveform &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;A Fourier analysis of a typical PWM signal (such as the one depicted in Figure 3) shows that there is a strong peak at frequency Fn = 1/T. Other strong harmonics also exist at F = K/T, where K is an integer. These peaks are unwanted noise and should be eliminated. This requires that the PWM signal be low-pass filtered&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;To generate PWM signal from speech samples, for playback of recorded speech, PWM module of ATmega8535 has been utilized in Phase Correct 8-bit mode (or mode1).The phase correct PWM mode is based on a dual-slope operation. This mode provides a high resolution phase correct PWM waveform generation option. For the PWM, 16-bit Timer/Counter1 is used with PWM output on OC1B pin. To compare value with Timer/Counter1 TCNT1 count value, compare register OCR1B has been used, which is loaded with the speech sample to be compared with TCNT1 either in down counting or up counting of TCNT1.Initially the output compare register OCR1B is loaded with 0 as soon as the Timer/Counter1 overflows the output compare register OCR1B is loaded with the speech sample. Depending on the mode of operation used, the counter is cleared, incremented, or decremented at each timer clock (clkT1).The clkT1 has been generated from an internal clock source without pre-scaling by configuring the Timer/Counter Control Register B (TCCR1B).The timing sequence of the Timer/Counter1 is determined by setting the Waveform Generation Mode bits (WGM13:0) located in the Timer/Counter Control Registers A and B (TCCR1A and TCCR1B). For running PWM at the highest possible frequency, the PWM clock divider is set to 1.In this article Waveform Generation Mode1 has been chosen at the highest possible frequency.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;The counter counts repeatedly from BOTTOM (0x0000) to TOP (0x00FF) and then from TOP to BOTTOM. In non-inverting Compare Output mode, the Output Compare (OC1A/ OC1B) is cleared on the Compare Match between TCNT1 and OCR1A/OCR1B while up-counting and set on the Compare Match while down counting. In inverting Output Compare mode, the operation is inverted. The PWM resolution for the phase correct PWM mode has been fixed to 8-bit.The PWM resolution can be calculated in bits by using the following formula:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0.0001pt 1in; text-align: justify; text-indent: 0.5in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt;"&gt;R&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 7pt;"&gt;PCPW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt;"&gt;=&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt; (&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt;"&gt;log (TOP+1)) ∕ Iog(2)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0.0001pt 1in; text-align: justify; text-indent: 0.5in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;In phase correct PWM mode implemented in this article, the counter is incremented until the counter value matches the fixed value 0x00FF, which is actually the TOP value. When the counter has reached the TOP it changes the count direction. The TCNT1 value will be equal to TOP for one timer clock cycle. The Timer/Counter Overflow Flag (TOV1) is set each time the counter reaches BOTTOM. The interrupt flags can be used to generate an interrupt each time the counter reaches the TOP or BOTTOM value. The OCR1B register, used for comparing value with TCNT1 value, is updated every time with speech sample amplitude value, whenever the timer/counter1 overflow interrupt occurs. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;In this article, the compare units,while operating in phase correct PWM mode allow generation of PWM waveform on OC1B pin. Also non-inverted PWM has been generated by setting the corresponding configuration registers. The PWM waveform is generated by clearing the OC1B Register at the Compare Match between OCR1B and TCNT1 when the counter increments, and setting the OC1B Register at Compare Match between OCR1B and TCNT1 when the counter decrements. The PWM frequency for the output when using phase-correct PWM can be calculated by the following equation:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0.0001pt 1.5in; text-align: justify; text-indent: 0.5in;"&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt;"&gt;f&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 6pt;"&gt;OCnxPCPWM&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt;"&gt;=&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt; (&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt;"&gt;f&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 6pt;"&gt;Clk_I/O&lt;/span&gt;&lt;span style="font-family: 'Arial Rounded MT Bold',sans-serif; font-size: 12pt;"&gt;) ∕ (2.N.TOP)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0.0001pt 1.5in; text-align: justify; text-indent: 0.5in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;The “N” variable represents the pre-scalar divider (which has been chosen to be 1).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 20pt;"&gt;The Output Filter&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The output filter section consists of a 5&lt;sup&gt;th&lt;/sup&gt; order, low pass Chebychev filter and a unary-gain amplifier. The filter is made up by two stagger-tuned, second-order Chebychev filters (&lt;/span&gt;    &lt;m:smallfrac m:val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin m:val="0"&gt;    &lt;m:rmargin m:val="0"&gt;    &lt;m:defjc m:val="centerGroup"&gt;    &lt;m:wrapindent m:val="1440"&gt;    &lt;m:intlim m:val="subSup"&gt;    &lt;m:narylim m:val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;R6, R7, R8, C7, C8 and R8,R9,R10,C9,C10&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;) and a passive first-order filter (R10,C11).The cut-off frequencies of these three filters are slightly shifted against each other (“staggered”) to limit pass-band ripple of the whole filter circuit. The overall cut-off frequency is set to 4000 Hz, which is roughly one-quarter of the PWM frequency (15,686 Hz). This ensures that almost the entire audio spectrum is passed through, but the PWM carrier (at 15,686 Hz) is cut off. This filter has been designed using Circuit Wizard of NI Multisim 11.0 Software by National Instruments. The unary-gain prevents the circuit from getting feedback from the output. The capacitor C12 ,shown in Figure5 blocks any DC component to the speaker.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TTSz7056t5I/AAAAAAAAADo/Fxs29Z4XHNQ/s1600/Figure+4+Output+Filter.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="101" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TTSz7056t5I/AAAAAAAAADo/Fxs29Z4XHNQ/s320/Figure+4+Output+Filter.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Figure 4: Output Filter&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0in 2in; text-indent: 0.5in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The filter and amplifier circuits are based on Operational Amplifier (OpAmp) LM324, which is being operated by single power supply of +5V; instead of utilizing dual power supply. This saves from the trouble of provision for dual power supply to operate OpAmps like 741.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 115%;"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;Power Amplifier&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 14pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 115%;"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 115%; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The power amplifier is a low-power design. This design is based on the LM386 monolithic power amplifier IC from National Semiconductor. This chip is capable of delivering 1W of output power.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 115%; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TTS0gowY0lI/AAAAAAAAADs/TLGGihw0G08/s1600/Figure+5+Power+Amplifier.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="167" src="http://4.bp.blogspot.com/_WyqB9Ls02ZM/TTS0gowY0lI/AAAAAAAAADs/TLGGihw0G08/s320/Figure+5+Power+Amplifier.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 115%; text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;Figure 5: Power Amplifier&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 115%; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 115%; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;It is a high-efficiency power amplifier, which is ideal for battery operated applications. The variable resistor RV3 shown in Figure 5 above serves for volume control. The effects of speaker impedance are canceled by the Zobel network connected on the output side of LM386 power amplifier.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The speaker connected with this system is 0.5W and 8 Ohm speaker. This amplifier can easily operate this speaker to play the sound generated by micro-controller using PWM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;Analysis of Code and Algorithm&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The primary focus of this article is speech generation using PWM, analog filters and amplifiers. Since speech may also be played back real-time simultaneously while the A/D converted samples are being taken from the analog input signal. Therefore, to keep the discussion simple and to the point, the analysis of code and algorithm is based only on Analog-to-digital conversion of input analog speech signal and simultaneous playback of the digital samples, without storing them in flash memory, through Pulse Width Modulation (PWM).So, in this analysis, the segment of the code that deals with recording of A/D converted speech samples on MMC would not be discussed, although this segment of the code has also been implemented.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Therefore, to perform the above mentioned operations, analog-to-digital converted speech samples are taken by the built-in ADC of ATmega8535 and simultaneously played back through PWM when a push-button (Play button) switch is pressed. The delay in play back of the digital speech samples taken from input analog speech signal is too small to be detected by human ear&lt;/span&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;.&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; The flow chart of this Algorithm is shown in the Figure 6.&lt;/span&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify; text-indent: 15pt;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The software that runs on the 8535 MCU is written in C. It is designed for the &lt;/span&gt;&lt;a href="http://www.imagecraft.com/" target="_new"&gt;&lt;b&gt;&lt;span style="font-family: Tahoma,sans-serif;"&gt;ImageCraft&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span style="color: black; font-family: Tahoma,sans-serif;"&gt; &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;C compiler for the AVR. It is interrupt driven, and makes use of the MCU's inbuilt timers to provide the sampling rate clock. Thus, a stable sampling frequency is produced. All operations of the software are based on this interrupts. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify; text-indent: 15pt;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify; text-indent: 15pt;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify; text-indent: 15pt;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The following steps are performed in this program code represented by Figure6:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin-left: 33pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;1.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Initialization of PORTs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 69pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;a.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Lower nibble of PORTC is initialized as output for interfacing with LEDs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 69pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;b.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Pin 7 of PORTA is configured for ADC input data.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 69pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;c.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Pin 4 of PORTD is configured for PWM output data.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 69pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;d.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;PORTB pin0 is initialized as input to read the play button connected to it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 33pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;2.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Timer1 is initialized in 8-bit Phase Correct PWM Mode and set to overflow approximately at a frequency of approximately 16 KHz (Actual value is 15,686 Hz).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0in 33pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;3.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;Timer0 is initialized to generate an overflow interrupt after every 25msec approximately.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="line-height: normal; margin: 0in 0in 0in 33pt; text-align: justify; text-indent: -0.25in;"&gt;4.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt;"&gt;ADC is in initialized and configured to scan ADC sample from input i.e., analog speech signal, upon overflow interrupt of timer1.The ADC data storage variable adc_high is initially set to 0.ADC generates 10 bit sample but only 8-bit sample is saved. The lower byte of ADC data register (ADCL), containg only two bits, is assigned to the unsigned variable adc_low i.e. adc_low = ADCL, which is discarded. The higher byte of ADC data register (ADCH) is assigned to the unsigned variable adc_high i.e. adc_high=ADCH, which is used for speech recording and speech generation.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_WyqB9Ls02ZM/TTXHtkuLaTI/AAAAAAAAAD0/hp_3RwgYsKQ/s1600/Figure+6+Algorithm+Flow+Chart.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_WyqB9Ls02ZM/TTXHtkuLaTI/AAAAAAAAAD0/hp_3RwgYsKQ/s320/Figure+6+Algorithm+Flow+Chart.jpg" width="218" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: 16px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Figure 6 : Algorithm Flow Chart&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TTS17yO2p3I/AAAAAAAAADw/C6blbIILhnQ/s1600/Figure+6+Algorithm+Flow+Chart.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 177pt; text-align: justify; text-indent: 3pt;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 33pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;5.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;In the main function the status of play button is continuously monitored if the play button is pressed then PWM Output driver is enabled otherwise PWM Output driver is disabled. The interrupts are awaited while monitoring the status of the input button.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 33pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;6.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Interrupts are serviced on the basis of interrupt priority levels as below:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 33pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 69pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;a.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Timer1 Overflow Interrupt has the highest priority. This interrupt may interrupt any other interrupt of lower priority in this code being serviced. Whenever this interrupt occur the PWM data compare register (OCR1B) is updated with the current value of variable adc_high defined to hold the current value of Analog-to-Digital converted sample. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 69pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;b.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Timer0 Overflow Interrupt has the second highest priority. Whenever this interrupt occur the lower nibble of the PORTC connected with LEDs toggles state.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 69pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;c.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Analog-to-Digital conversion complete Interrupt has the lowest priority. Whenever this interrupt occur the value of adc_high variable is updated with value of the currently obtained Analog-to-digital converted sample.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin-left: 33pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;7.&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The program control goes to step 5.The steps from 5 to 6 are repeated again and again until the microcontroller is powered off.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin-left: 69pt; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;Conclusion&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 14pt; line-height: 115%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 20pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;The speech generated by PWM module of this system is reasonably good in quality though not of very fine quality. Much finer quality of speech may be generated through PWM if better quality output filters are designed for converting PWM signal to speech signal played back through speaker. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 2in; text-align: justify; text-indent: 20px;"&gt;&lt;div style="text-indent: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-2797745752900544408?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/2797745752900544408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/speech-generation-using-pulse-width.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/2797745752900544408?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/2797745752900544408?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/speech-generation-using-pulse-width.html' title='Speech Generation using Pulse Width Modulation (PWM) with AVR Microcontroller'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WyqB9Ls02ZM/TTSu_6lzluI/AAAAAAAAADc/6u5eEHKlsbE/s72-c/Figure1+Block+Diagram.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;CUIFSXc5eip7ImA9Wx9VEEo.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-3071628436105927148</id><published>2011-01-12T21:18:00.000+05:00</published><updated>2011-01-27T01:25:18.922+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-01-27T01:25:18.922+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Analog circuits'/><title>Audio Amplifiers for Interfacing with Micro-controller</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;I have used the following two audio amplifier&amp;nbsp;circuits in my projects for speech recording using AVR micro-controllers&amp;nbsp;:&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Audio Amplifier&amp;nbsp;circuit&amp;nbsp;based on LM324&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Audio Amplifier&amp;nbsp;circuit&amp;nbsp;based on LM386&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;A brief description of these audio amplifier circuits is given below:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;1. Audio Amplifier based on LM324&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;This circuit is based on Operational Amplifier (OpAmp) IC LM324&lt;/span&gt;.&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 16px;"&gt;The LM324 series are low−cost, quad operational amplifiers with true differential inputs. They have several distinct advantages over standard operational amplifier types in single supply applications.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 16px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TS3Shkq30zI/AAAAAAAAADE/jHBl5ChRGfo/s1600/AAmp01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TS3Shkq30zI/AAAAAAAAADE/jHBl5ChRGfo/s320/AAmp01.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Figure 1 : Audio Amplifier based on LM324&lt;/div&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-align: justify; text-autospace: none; text-justify: inter-ideograph;"&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 12pt;"&gt;The quad amplifier can operate at supply voltages as low as 3.0 V or as high as 32 V with quiescent currents about one−fifth of those associated with the MC1741 (on a per amplifier basis). The common mode input range includes the negative supply, thereby eliminating the necessity for external biasing components in many applications. The output voltage range also includes the negative power supply voltage. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-align: justify; text-autospace: none; text-justify: inter-ideograph;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-align: justify; text-autospace: none; text-justify: inter-ideograph;"&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 12pt;"&gt;The condenser microphone is biased using a fixed resistor and the DC component blocked by a capacitor. The microphone amplifier and filter is implemented using an inverting op-amp amplifier configured for a high gain. The gain is, again, adjustable. The filter is a simple single-stage RC filter. The capacitor in the feedback loop introduces a roll-off at high frequencies, giving better stability since the gain is very high.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;2. Audio Amplifier based on LM386&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;This circuit is based on Power Amplifier LM386.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 16px; line-height: 18px;"&gt;There are four sub-sections of audio amplifier section. These sub-sections of the audio amplifier section are marked as a, b, c and d in Figure 2.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 12pt; line-height: 18px;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TS3TD35b4jI/AAAAAAAAADI/37Rzyefcjgw/s1600/LM386.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TS3TD35b4jI/AAAAAAAAADI/37Rzyefcjgw/s320/LM386.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Figure 2 :&amp;nbsp;Audio Amplifier based on LM386&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="mso-outline-level: 1;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 16px;"&gt;The LM386 has been used as an input amplifier. The LM386 is a power amplifier designed for use in low voltage consumer applications. The gain is internally set to 20 to keep external part count low. Pins 1 and 8 serve for gain control. With pins 1 and 8 open, the 1.35 kW resistor sets the gain at 20 (26 dB). If a capacitor is put from pin 1 to 8, bypassing the 1.35 kW resistor, the gain will go up to 200 (46 dB). If a resistor is placed in series with the capacitor, the gain can be set to any value from 20 to 200.The inputs are ground referenced while the output automatically biases to one-half the supply voltage. The quiescent power drain is only 24 mill watts when operating from a 6 volt supply, making the LM386 ideal for battery operation.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-align: justify; text-autospace: none;"&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 12pt;"&gt;When using the LM386 with higher gains (bypassing the 1.35 kW resistor between pins 1 and 8) it is necessary to bypass the unused input, preventing degradation of gain and possible instabilities. This is done with a 0.1μF capacitor or a short to ground depending on the dc source resistance on the driven input.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-align: justify; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-align: justify; text-autospace: none;"&gt;&lt;span style="font-family: Arial, sans-serif; font-size: 12pt;"&gt;The condenser microphone is biased using a resistor (R1) and the DC component blocked by a capacitor (C1). The amplifier section is followed by a voltage level-shifter and an anti-aliasing filter. The anti-aliasing filter is a simple single-stage RC filter comprising R4 and C3.R4 protects the amplifier from any damage if the output is short-circuited. Different sub-circuits of the input amplifier and filter section are marked in the Figure 2 above.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-3071628436105927148?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/3071628436105927148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/audio-amplifiers-for-interfacing-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/3071628436105927148?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/3071628436105927148?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/audio-amplifiers-for-interfacing-with.html' title='Audio Amplifiers for Interfacing with Micro-controller'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WyqB9Ls02ZM/TS3Shkq30zI/AAAAAAAAADE/jHBl5ChRGfo/s72-c/AAmp01.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;C04BQH45eip7ImA9Wx9VEkk.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-6935451820967626124</id><published>2011-01-10T20:59:00.007+05:00</published><updated>2011-01-29T00:12:31.022+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-01-29T00:12:31.022+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Microcontroller based Embedded Systems'/><title>ADAPTIVE DIFFERENTIAL PULSE CODE MODULATION (ADPCM) USING AVR MICRCONTROLLER</title><content type='html'>&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;Abstract&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;Efficient and simplified speech processing algorithms like Adaptive Differential Pulse Code Modulation (ADPCM) and enhanced features of micro-controllers have made it possible to add sophisticated and complex speech processing capabilities to any 8-bit AVR micro-controller.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;This application note discusses the ADPCM compression and decompression algorithms, its performance and practical implementation using an 8-bit AVR micro-controller (ATmega8535).&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 17px;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span style="font-size: 13pt;"&gt;Key words: &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt;Step Size, Quantization, Adaptive Quantization, Inverse Quantizer, ADPCM.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;Analysis of speech samples, obtained from analog to digital conversion process, reveals that a high correlation is found between consecutive speech samples. The ADPCM algorithm takes advantage of this high correlation property of speech data. This algorithm does not encode the actual speech samples.  This algorithm actually encodes the difference between a predicted speech sample and the actual speech sample. This speech encoding provides an efficient compression with a significant reduction in the number of bits per sample. The quality of speech signal is also significantly preserved by this speech processing algorithm. The practical implementation of ADPCM algorithm discussed in this application note is based upon Interactive Multimedia Associations (IMA) recommended practices for enhancing digital audio capability in multimedia systems revision 3.00. The IMA ADPCM Reference algorithm, upon which this article is based, has significantly reduced the mathematical complexity of the original International Telecommunication Union (ITU) Family G.721 ADPCM   algorithm by simplifying many operations and using the look up tables where appropriate&lt;/span&gt;.&lt;span style="font-size: 11pt;"&gt; The IMA, the Digital Audio Technical Working Group, is a trade association which includes technical representatives from different companies like Compaq&lt;/span&gt;&lt;span style="font-family: Symbol; font-size: 10pt;"&gt;Ò&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;, Apple Computer&lt;/span&gt;&lt;span style="font-family: Symbol; font-size: 10pt;"&gt;Ò&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;, Hewlett-Packard&lt;/span&gt;&lt;span style="font-family: Symbol; font-size: 10pt;"&gt;Ò&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;, Intel&lt;/span&gt;&lt;span style="font-family: Symbol; font-size: 10pt;"&gt;Ò&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;, Microsoft&lt;/span&gt;&lt;span style="font-family: Symbol; font-size: 10pt;"&gt;Ò&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;, Sony&lt;/span&gt;&lt;span style="font-family: Symbol; font-size: 10pt;"&gt;Ò&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;, and Texas Instruments&lt;/span&gt;&lt;span style="font-family: Symbol; font-size: 10pt;"&gt;Ò &lt;/span&gt;&lt;span style="font-size: 11pt;"&gt; to name a few. This association is working towards developing standards for high quality audio data exchange between computing machines. The speech compression and decompression algorithms discussed in this article were implemented by Rodger Richey of Microchip Technology Inc. on 8-bit PIC microcontroller. The algorithms and idea has been taken from an article by Rodger Richey of Microchip Technology Inc. Unlike Rodger Richey’s article this article discusses implementation of Speech compression algorithm on 8-bit AVR microcontroller, while decompression algorithm is implemented in Turbo C on PC side. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;Compression&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;The input signal &lt;b&gt;&lt;i&gt;s&lt;sub&gt;i&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt; to the speech encoder is supposed to be the 16-bit 2’s complement speech sample. For a 16-bit speech sample the range of available values is -32768 to +32767.Fig.1 shows the block diagram for ADPCM compression algorithm. For the next iteration of the encoder, the predicted sample &lt;b&gt;&lt;i&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/i&gt; &lt;/b&gt;and the quantizer step size index are saved in a structure. For this iterative process, the quantization step size index and the predicted sample &lt;b&gt;&lt;i&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;&lt;sub&gt; &lt;/sub&gt;are initially set to zero. The input &lt;b&gt;&lt;i&gt;s&lt;sub&gt;i&lt;/sub&gt; &lt;/i&gt;&lt;/b&gt;to the speech encoder is supposed to be a 16-bit 2’s complement speech sample, while the value returned by the speech encoder is an 8-bit number which contains the 4-bit sign magnitude ADPCM code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;The difference &lt;b&gt;&lt;i&gt;d&lt;/i&gt;&lt;/b&gt; is produced by subtracting the predicted sample &lt;b&gt;&lt;i&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt; from the input signal &lt;b&gt;&lt;i&gt;s&lt;sub&gt;i&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;. The &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;4-bit ADPCM value &lt;b&gt;&lt;i&gt;t&lt;/i&gt;&lt;/b&gt; is obtained by performing adaptive quantization on the difference obtained &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;in the previous step. Using that ADPCM value the encoder and decoder update their internal&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 0.5in; text-align: justify; text-indent: 0.5in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://1.bp.blogspot.com/_WyqB9Ls02ZM/TSsq8qQvSnI/AAAAAAAAAC4/8nIEk7Jlp4Y/s1600/Encoder.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://1.bp.blogspot.com/_WyqB9Ls02ZM/TSsq8qQvSnI/AAAAAAAAAC4/8nIEk7Jlp4Y/s400/Encoder.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;Figure 1: ADPCM Encoder Block diagram&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;variables. The encoder actually contains a full decoder embedded inside it. This ensures synchronization between encoder and decoder without requiring any additional data. The dotted lines shown in Fig.1 show the block comprising the embedded decoder. The ADPCM value is used by the embedded decoder to update the inverse quantizer, which in turn produces a dequantized version &lt;b&gt;&lt;i&gt;d&lt;sub&gt;q&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt; of the difference &lt;b&gt;&lt;i&gt;d&lt;/i&gt;&lt;/b&gt;. To simplify the speech compression process a fixed predictor has been used instead of an adaptive predictor, which significantly reduces the amount of data memory and instruction cycles required. A weighted average of the last six dequantized difference values and the last two predicted values are used by the adaptive predictor of ITU G.721 for its adjustment and updating according to the value of each input sample. At this point, new predicted sample &lt;/span&gt;&lt;b&gt;&lt;i&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt; is obtained by adding the dequantized difference &lt;b&gt;&lt;i&gt;d&lt;sub&gt;q&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt; to the predicted sample &lt;b&gt;&lt;i&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;. Finally, the new predicted sample &lt;/span&gt;&lt;b&gt;&lt;i&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt; is saved in &lt;/span&gt;&lt;b&gt;&lt;i&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify; text-indent: 1in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;Algorithm&lt;span style="font-size: 11pt;"&gt; 1 is a step-by-step description of the ADPCMEncoder function. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify; text-indent: 1in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;Algorithm 1: ADPCM Encoder Algorithm Step-by-step [6]&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 45pt 0in 0.75in; text-align: justify; text-indent: 0in;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;ADPCMEncoder takes a 16-bit signed number&amp;nbsp;&lt;span class="Apple-style-span"&gt;(Speech sample,-32768 to +32767) returns an 8-bit&amp;nbsp;number containing the 4-bit&amp;nbsp;ADPCM Code(0-15).&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Restore the previous values of the predicted&amp;nbsp;sample (&lt;b&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/b&gt;) and the&amp;nbsp;quantizer step size index.Find&amp;nbsp;the quantizer step size&amp;nbsp;(&lt;b&gt;q&lt;/b&gt;) from&amp;nbsp;a lookup table&amp;nbsp;using the quantizer step size index.&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Compute the difference(&lt;b&gt;d&lt;/b&gt;) between the actual&amp;nbsp;sample&amp;nbsp;(&lt;b&gt;s&lt;sub&gt;i&lt;/sub&gt;&lt;/b&gt;) and the&amp;nbsp;predicted sample&amp;nbsp;(&lt;b&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/b&gt;).&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Set the sign bit of the ADPCM code(&lt;b&gt;t&lt;/b&gt;) if&amp;nbsp;necessary&amp;nbsp;and find&amp;nbsp;the absolute value of&amp;nbsp;difference(&lt;b&gt;d&lt;/b&gt;).&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Save quantizer step size(&lt;b&gt;q&lt;/b&gt;) in a temporary&amp;nbsp;variable.&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Quantize the difference(&lt;b&gt;d&lt;/b&gt;) into the ADPCM&amp;nbsp;code(&lt;b&gt;t&lt;/b&gt;)using the&amp;nbsp;quantizer step size(&lt;b&gt;q&lt;/b&gt;).&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Inverse quantize the ADPCM code (&lt;b&gt;t&lt;/b&gt;) into a&amp;nbsp;predicted&amp;nbsp;difference (&lt;b&gt;d&lt;sub&gt;q&lt;/sub&gt;&lt;/b&gt;) using the quantizer step&amp;nbsp;size (&lt;b&gt;q&lt;/b&gt;).&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Fixed predictor computes new predicted sample(&lt;b&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;)&amp;nbsp;by adding&amp;nbsp;the&amp;nbsp;old predicted sample (&lt;b&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/b&gt;) to the&amp;nbsp;predicted difference(&lt;b&gt;d&lt;sub&gt;q&lt;/sub&gt;&lt;/b&gt;).&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Check for overflow of the new predicted sample&amp;nbsp;(&lt;b&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;).&lt;b&gt;&amp;nbsp;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;, which&amp;nbsp;is a signed 16-bit sample, must be in&amp;nbsp;the&amp;nbsp;range of -32768 to&amp;nbsp;+32767.&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Find the new quantizer step size&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;(&lt;/span&gt;&lt;b style="line-height: 23px;"&gt;q&lt;/b&gt;&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;) by&amp;nbsp;&lt;/span&gt;adding the&amp;nbsp;previous index and a look up table using the ADPCM&amp;nbsp;code&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;(&lt;b&gt;t&amp;nbsp;&lt;/b&gt;).&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;&lt;/span&gt;Check for overflow of the new quantizer step size&amp;nbsp;index.&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Save the new predicted sample (&lt;b&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;) and quantizer&amp;nbsp;step size&amp;nbsp;index for next iteration.&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Return the ADPCM code (&lt;b&gt;t&lt;/b&gt;). &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify; text-indent: 27pt;"&gt;&lt;span style="font-size: 11pt;"&gt;This function requires five 16 bit variables and two 8-bit variables. Some optimizations can be made in this code by combining steps 7 and 8.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify; text-indent: 27pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;Decompression&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;The input to the speech decoder is supposed to be an 8-bit number containing the 4-bit ADPCM data in sign magnitude format. The allowable values for&lt;b&gt;&lt;i&gt; t&lt;/i&gt;&lt;/b&gt; range from 0 to 15, where 7 = 0x07 and -7 = 0x0F.The block diagram of the ADPCM decompression is shown in Figure 2.For the next iteration of the decoder, the predicted sample value &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size: 13pt;"&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt; and the quantizer step size index are saved in a structure. The quantizer step size index and the predicted sample (&lt;/span&gt;&lt;b&gt;&lt;i&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt;) are initially set to zero. A 4-bit sign magnitude ADPCM code is fed as an input to the ADPCMDecoder() function, which in turn produces a 16-bit 2’s complement speech sample. The decoder is same as the one used by the encoder routine. For updating the inverse quantizer it uses the ADPCM value, which in turn produces the difference &lt;/span&gt;&lt;b&gt;&lt;i&gt;d&lt;sub&gt;q&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt;. The output sample &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size: 13pt;"&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt; is produced by adding the difference &lt;/span&gt;&lt;b&gt;&lt;i&gt;d&lt;sub&gt;q&lt;/sub&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt; to the predicted sample &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size: 13pt;"&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt;. For next iteration of the decoder the output sample &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size: 13pt;"&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: 11pt;"&gt; is saved into the predicted sample. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TSsrNCFu-uI/AAAAAAAAAC8/W5ZhDX3qNrI/s1600/Decoder.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TSsrNCFu-uI/AAAAAAAAAC8/W5ZhDX3qNrI/s400/Decoder.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;       &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;Figure 2: ADPCM Decoder Block Diagram&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;The Function ADPCMDecoder  function is listed in Algorithm 2.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;                            &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="font-size: medium; text-align: justify;"&gt;&lt;div style="margin: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;Algorithm 2: ADPCM Decoder Algorithm Step-by-step [6]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 45pt 0in 0.75in; text-align: justify; text-indent: 0in;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li style="font-size: medium;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;ADPCMDencoder takes an 8-bit signed number containing the 4-bit&lt;span class="Apple-style-span"&gt;&amp;nbsp;ADPCM Code (0-15) and returns a 16-bit signed number (Speech Sample,-32768 to +32767).&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="font-size: medium;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Restore the previous values of the predicted&amp;nbsp;sample&amp;nbsp;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;i&gt;(&lt;b&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;&amp;nbsp;and the&amp;nbsp;quantizer step size index.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;Find the quantizer step size&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;q&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;&amp;nbsp;from a lookup&amp;nbsp;table using&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;the&amp;nbsp;quantizer step size index.&lt;/i&gt;&lt;/span&gt;.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;Inverse quantize the ADPCM code&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;t&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;&amp;nbsp;into a&amp;nbsp;predicted&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;difference&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;d&lt;sub&gt;q&lt;/sub&gt;&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;&amp;nbsp;using the quantizer &amp;nbsp; step&amp;nbsp;size&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;q&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;.&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;Fixed predictor computes new predicted sample (&lt;b&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;)&amp;nbsp;by&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;adding the&amp;nbsp;old predicted sample (&lt;b&gt;s&lt;sub&gt;p&lt;/sub&gt;&lt;/b&gt;) to the&amp;nbsp;predicted&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;difference&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;d&lt;sub&gt;q&lt;/sub&gt;&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;Check for overflow of the new predicted sample&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;.&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;&lt;b&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;,&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;which is a&amp;nbsp;signed 16-bit sample, &amp;nbsp; must be in&amp;nbsp;the&lt;b&gt;&amp;nbsp;&lt;/b&gt;range of -&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;32768 to +32767.&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;Find the new quantizer step size&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;q&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;&amp;nbsp;by adding&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;the&amp;nbsp;previous&amp;nbsp;index and a lookup table &amp;nbsp;using the&amp;nbsp;&lt;i&gt;ADPCM&amp;nbsp;code&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;t&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;.&amp;nbsp;&lt;/i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;Check for overflow of the new quantizer step size&amp;nbsp;&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&lt;/span&gt;index.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;Save the new predicted sample&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;&amp;nbsp;and quantizer&amp;nbsp;step&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;i&gt;size index&amp;nbsp;for next iteration&lt;/i&gt;&lt;/span&gt;.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt;Return the new sample&amp;nbsp;&lt;span class="Apple-style-span" style="line-height: 23px;"&gt;&lt;span class="Apple-style-span" style="line-height: normal;"&gt;&lt;i&gt;(&lt;b&gt;s&lt;sub&gt;r&lt;/sub&gt;&lt;/b&gt;)&lt;/i&gt;&lt;/span&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;This function requires three 16-bit variables and one 8-bit variable.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;Performance&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;In this application note we have used AVR ATmega8535 microcontroller. The ATmega8535 is a low-power CMOS 8-bit microcontroller based on the AVR enhanced RISC architecture. By executing instructions in a single clock cycle, the ATmega8535 achieves throughputs approaching 1 MIPS per MHz allowing the system designer to optimize power consumption versus processing speed .The external oscillator frequency that we have chosen is 7.3728 MHz. This oscillator generates a baud rate for serial communication with PC with very little error in baud rate. The sampling rate chosen for Analog-to-Digital Conversion process is 8 kHz per sample. With this sampling rate the microcontroller has a time span of 125 µs seconds between two consecutive samples taken from ADC. So during this time span of 125 µs, considering the maximum code size, the microcontroller is not only required to compress and pack two speech data samples but also it has to transmit the compressed speech samples to the PC through serial port. The maximum instruction cycles taken by all the routines, including speech compression (281 instruction cycles), packing two compressed speech data sample in a single byte (5 instruction cycles), ISR for Timer0 over flow (5 instruction cycles), ISR for ADC (105 instruction cycles) and ISR for serial communication (40 instruction cycles) are approximately 473 instruction cycles.&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;Considering single-clock cycle&lt;b&gt; &lt;/b&gt;execution per instruction and 7.3728 MHz operating frequency, it may be noted that single instruction cycle takes 0.1356µs and 473 instruction cycles would take approximately 64.1547 µs. A single instruction cycle for AVR 8535 takes one clock cycle of external oscillator, this external oscillator frequency not only generates a good error free baud rate for serial communication with PC, but it is also more than sufficient for implementing ADPCM speech compression algorithm. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: 11pt;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;Application &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: 16pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;The hardware for this application note implements only the compression algorithm, while the decompression algorithm is implemented in PC using Turbo C.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;In order to implement the audio recording, the following components need to be added to the application hardware:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;ul&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;A microphone with  anti-aliasing filter&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;Amplifier with      adjustable gain&lt;/span&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;Built-in  A/D converter and Timer of AVR 8535 micro-controller&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;The conversion time for this application has been chosen to be 52µs.The sampling rate used by A/D converter is 8 kHz which takes input sample every 125µs. In this way the effective bandwidth of the input speech data is 4 kHz which is sufficient enough for human speech recording. The compiler used for this data compression and decompression application is ICC AVR version 7.14. For simulation of the speech compression code AVR Studio4 has been used. AVR Studio is an Integrated Development Environment (IDE) for writing and debugging AVR applications in Windows.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;The audio data is fed as input to the built-in ADC of the AVR micro-controller from microphone after filtering and amplification. The micro-controller generates the digital samples from analog audio input through Analog-to-Digital conversion process and then compresses the speech samples and then serially transmits the two compressed speech samples per byte. The speech data is recorded on PC in a binary file through Hyper Terminal. The binary file is used by the ADPCM speech decompression algorithm implemented in Turbo C. A Program written in Visual C++ is used on the PC side for converting the recorded and decompressed speech data to audio file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;Conclusion&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;The final results of the application hardware using the ATmega8535 are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 0.25in; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7pt 'Times New Roman';"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;b&gt;Compression&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 45pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;ul&gt;&lt;li style="text-indent: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;The ADPCM compression routine compresses 10 bits of uncompressed data sample to 4 bits of&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;compressed data. This ADPCM compression routine actually takes 16 bit input and generates a 4-bit&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;ADPCM code. In this way, it gives almost 60% compression of single input speech sample.&lt;/span&gt;&lt;/li&gt;
&lt;li style="text-indent: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;281 instruction cycles to encode single data sample to ADPCM compressed sample.&lt;/span&gt;&lt;/li&gt;
&lt;li style="text-indent: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;Upon compiling the compression code in ICCAVR7.14 compiler, the compiler shows the device to be&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;15% full.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 0.25in; text-align: justify; text-indent: -0.25in;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7pt 'Times New Roman';"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;b&gt;Decompression &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 45pt; text-align: justify; text-indent: -0.25in;"&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li style="text-indent: 0px;"&gt;&lt;span style="font-family: Wingdings; font-size: 11pt;"&gt;&lt;span style="font: 7pt 'Times New Roman';"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;It has been implemented on PC using Turbo C which receives compressed data bytes&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;through serial port decompress the received data and write the decompressed data in&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;binary File.&lt;/span&gt;&lt;/li&gt;
&lt;li style="text-indent: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;Visual C++ program is used for transforming binary file to wave file&lt;/span&gt;&lt;/li&gt;
&lt;li style="text-indent: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;Baud Rate used for receiving data at serial port is 115200 Bps&lt;/span&gt;&lt;/li&gt;
&lt;li style="text-indent: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;Data format used for serial communication is: 8bits per sample, 1 start bit, 1 stop bit &amp;amp;amp; no parity.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: 15pt;"&gt; References:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;1.    Recommended Practices for Enhancing Digital Audio Compatibility in Multimedia &lt;/span&gt;&lt;span style="font-size: 11pt;"&gt;Systems, &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;Revision 3.00, Interactive Multimedia Association, &lt;st1:date day="21" month="10" st="on" year="1992"&gt;October 21, 1992&lt;/st1:date&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;2.   Digital Audio Special Edition Proceedings, Volume 2, Issue 2, Interactive Multimedia  &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 27px;"&gt;Association, May 1992.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;3.    Panos E. Papamichalis Ph.D., Practical Approaches to Speech Coding, Prentice-Hall Inc.,&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 27px;"&gt;&lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Englewood&lt;/st1:place&gt;&lt;/st1:city&gt; Cliffs, N.J, 1987.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;4.    Adaptive Differential Pulse-Code Modulation, Digital Signal Processing Applications using &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 27px;"&gt; the ADSP-2100 Family, Volume 1, Analog Devices, Prentice-Hall, &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Englewood&lt;/st1:place&gt;&lt;/st1:city&gt; Cliffs, N.J., &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 26px;"&gt;1992.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;5.   32-kbits/s ADPCM with the TMS32010, Digital Signal Processing Applications with the &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 27px;"&gt;TMS320 Family, SPRA012, Jay Reimer, Mike McMahan, and &lt;st1:placetype st="on"&gt;&lt;st1:placename st="on"&gt;Masud Arjmand&lt;/st1:placename&gt;,  &lt;st1:state st="on"&gt;Texas&lt;/st1:state&gt;&lt;/st1:placetype&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 26px;"&gt;Instruments , 1986.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: 11pt;"&gt;6.   Adaptive Differential Pulse Code Modulation using PICmicro™ Microcontrollers, by Rodger Richy&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 27px;"&gt;&amp;nbsp;Microchip Technology Inc.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: 'Times New Roman',serif; font-size: 11pt;"&gt;7.   Data sheet of &lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;ATmega8535 from website of Atmel (www.atmel.com)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: 15pt;"&gt;C-Codes&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;1. The C-Code for ADPCM Speech Compression developed in Image Craft Compiler for AVR written for ATmega8535,is given below :&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;//**********************************************//&lt;br /&gt;
// ICC-AVR application builder : 1/21/2007 12:37:44 AM&lt;br /&gt;
// Target : M8535&lt;br /&gt;
// Crystal: 8.0000Mhz&lt;br /&gt;
// Crystal: 7.3728Mhz&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
#include&amp;lt;iom8535v.h&amp;gt;&lt;br /&gt;
#include&amp;lt;macros.h&amp;gt;&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;string.h&amp;gt;&lt;br /&gt;
#include&amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include"pcadpcm.h"&lt;br /&gt;
&lt;br /&gt;
/***********************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
unsigned char adc_low, adc_high;&lt;br /&gt;
unsigned int timer0_counter=0;&lt;br /&gt;
unsigned int adc_counter=2;&lt;br /&gt;
unsigned int uart0_counter=0;&lt;br /&gt;
&lt;br /&gt;
void USART_Transmit(void);&lt;br /&gt;
short sample;&lt;br /&gt;
unsigned int flag00=0,flag01=0;&lt;br /&gt;
//unsigned char data00=0,data01=0;&lt;br /&gt;
unsigned short data,data00=0,data01=0;&lt;br /&gt;
&lt;br /&gt;
unsigned char code;&lt;br /&gt;
&lt;br /&gt;
/********** Table of index changes *********/&lt;br /&gt;
signed char IndexTable[16] =&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1, -1, -1, -1, 2, 4, 6, 8,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1, -1, -1, -1, 2, 4, 6, 8,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;
/*** Quantizer step size lookup table ***/&lt;br /&gt;
int StepSizeTable[89] = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7, 8, 9, 10, 11, 12, 13,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14, 16, 17, 19, 21, 23, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 25, 28, 31, 34, 37, 41,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45,50, 55,60,66,73, 80,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 88,97,107,118,130,143,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 157, 173, 190, 209,230, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 253, 279, 307,337, 371,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 408, 449, 494, 544, 598,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 658, 724, 796,876, 963,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1060, 1166, 1282,1411, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1552, 1707, 1878, 2066,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2272, 2499, 2749,3024, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3327, 3660, 4026, 4428,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4871, 5358,5894, 6484,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7132, 7845, 8630, 9493,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10442,11487,12635,13899,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15289,16818,18500,20350,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22385,24623,27086,29794,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32767&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;
/************************************//&lt;br /&gt;
//********** Port initialisation **********//&lt;br /&gt;
/***********************************//&lt;br /&gt;
&lt;br /&gt;
void port_init(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTA = 0x80;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRA&amp;nbsp;&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTB = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRB&amp;nbsp;&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTC = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; DDRC&amp;nbsp;&amp;nbsp; = 0x90;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PORTD = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DDRD&amp;nbsp;&amp;nbsp; = 0x80;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
//////////////////////////////////////////////////////////////////&lt;br /&gt;
/******&amp;nbsp; uart initialization&amp;nbsp; **********/&lt;br /&gt;
/////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// UART0 initialize&lt;br /&gt;
// desired baud rate: 115200&lt;br /&gt;
&lt;br /&gt;
void uart0_init(unsigned int baud)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = 0x00; //disable while setting baud rate&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRA = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Set baud rate */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UBRRH = (unsigned char)(baud&amp;gt;&amp;gt;8);&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UBRRL = (unsigned char)baud;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Enable Receiver and Transmitter */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = (1&amp;lt;&amp;lt;RXEN)|(1&amp;lt;&amp;lt;TXEN);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set frame format: 8data, 2 stop bit */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set frame format: 8data, 1 stop bit */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRC = (1&amp;lt;&amp;lt;URSEL)|(3&amp;lt;&amp;lt;UCSZ0);&lt;br /&gt;
}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;//////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// TIMER0 initialize - prescale:8&lt;br /&gt;
// WGM: Normal&lt;br /&gt;
// desired value: 8KHz&lt;br /&gt;
// actual value:&amp;nbsp; 8.000KHz (0.0%)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
void timer0_init(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCCR0 = 0x00; //stop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCNT0 = 0x8d; //set count&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//OCR0&amp;nbsp; = 0x7D;&amp;nbsp; //set compare&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TCCR0 = 0x02; //start timer&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
/////////////////////////////////////////////////////////////////////// &lt;br /&gt;
// For 8 kHz sampling rate,the timer needs to&amp;nbsp; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;// overflow after every 125 micro secs intervals. &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;// Every Timer overflow after 125 us triggers the &lt;br /&gt;
// ADC to take sample.ADC produces 10 bit digital &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;// sample out of which lower 2 bits are discarded&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
#pragma interrupt_handler timer0_ovf_isr:10&lt;br /&gt;
void timer0_ovf_isr(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; TCNT0 = 0x8d; //reload counter value&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//TIMER0 has overflowed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/****************************/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//USART_Transmit(adc_high);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timer0_counter++;//&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(timer0_counter == 250)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; PORTD^=0x80;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer0_counter=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////&lt;br /&gt;
// ADC initialize&lt;br /&gt;
// Conversion time: 52uS&lt;br /&gt;
//////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
void adc_init(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ADCSRA = 0x00; //disable adc&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ACSR&amp;nbsp; = 0x80;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADMUX = (1&amp;lt;&amp;lt;REFS0)|(1&amp;lt;&amp;lt;ADLAR)|0x07;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //select adc input 7, AVCC&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SFIOR = (SFIOR&amp;amp;0X0F)|(1&amp;lt;&amp;lt;ADTS2);&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //select Timer0 Over flow Trig&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCSRA = (1&amp;lt;&amp;lt;ADEN)|(1&amp;lt;&amp;lt;ADATE)|(1&amp;lt;&amp;lt;ADIE)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |(1&amp;lt;&amp;lt;ADPS1)|(1&amp;lt;&amp;lt;ADIF);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;adc_high=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#pragma interrupt_handler adc_isr:15&lt;br /&gt;
void adc_isr(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//conversion complete&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adc_low=ADCL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Read 2 low bits first (important)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adc_high=ADCH; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //read 8 high bits and shift into top byte&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data= adc_high ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data=data&amp;lt;&amp;lt;8;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data = ( data &amp;amp; 0xFF00 )+&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( adc_low &amp;amp; 0xC0 ); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//PORTB^=0x01;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(adc_counter%2==0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //data00=adc_high;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data00=data;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; flag00=1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if(adc_counter%2!=0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //data01=adc_high;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data01=data;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; flag01=1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;adc_counter++;//&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
#pragma interrupt_handler&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart0_udre_isr:13&lt;br /&gt;
void uart0_udre_isr(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //character transferred to shift register&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //so UDR is now empty&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//UDR=adc_high;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UDR=code;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// USART I/O Data Register –UDR&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;UCSRB = (1&amp;lt;&amp;lt;RXEN)|(1&amp;lt;&amp;lt;TXEN);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;uart0_counter++;//&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// this function is not used&lt;br /&gt;
void USART_Transmit()&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;// the argument data seems to be surplus&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;// in this code&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; //UCSRB = 0x38;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; /* Wait for empty transmit buffer */&lt;br /&gt;
&amp;nbsp;&amp;nbsp; while ( !( UCSRA &amp;amp; (1&amp;lt;&amp;lt;UDRE)) );&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; /* Put data into buffer, sends the data */&lt;br /&gt;
&amp;nbsp;&amp;nbsp; //UDR = data;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp; // variable data now seems to be surplus&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*********************************/&lt;br /&gt;
&lt;br /&gt;
unsigned char USART_Receive( void )&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait for data to be received */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(UCSRA &amp;amp; (1&amp;lt;&amp;lt;RXC)) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Get and return received data&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from buffer */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return UDR;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***********************************/&lt;br /&gt;
&lt;br /&gt;
//call this routine to initialize all peripherals&lt;br /&gt;
void init_devices(void)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unsigned int baud=3;//baud rate=115200 bps&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//stop errant interrupts until set up&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLI(); //disable all interrupts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;port_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;adc_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//timer1_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timer0_init();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;uart0_init(baud);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MCUCR = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;GICR&amp;nbsp; = 0x00;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIMSK = (1&amp;lt;&amp;lt;TOIE0);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //timer interrupt sources-timer0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SEI(); //re-enable interrupts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//all peripherals are now initialized&lt;br /&gt;
}&lt;br /&gt;
//&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct ADPCMstate state;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This structure is defined in header&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // file pcadpcm.h&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;state.prevsample=0;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initially previous sample and previous&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;state.previndex=0;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // index both are taken as 0&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;init_devices();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//insert your functional code here...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(flag00==1)&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; PORTB^=0x02;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; //sample=(data00-128)&amp;lt;&amp;lt;8; //&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; sample=(data00-128); //&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag00=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; code=ADPCMEncoder(sample,&amp;amp;state);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; code= (code&amp;lt;&amp;lt;4) &amp;amp; 0xf0;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else if(flag01==1)&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //PORTB^=0x04;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; //sample = (data01-128)&amp;lt;&amp;lt;8; //&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; sample = (data01-128); //&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag01=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; code|= ADPCMEncoder(sample,&amp;amp;state)&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp; 0x0f;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; UCSRB = 0x38;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }//while(1)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//****************************************//&lt;br /&gt;
//** ADPCMEncoder - ADPCM encoder routine **//&lt;br /&gt;
//***************************************//&lt;br /&gt;
//* Input variables: *&lt;br /&gt;
//* short sample - 16-bit signed speech sample *&lt;br /&gt;
//* struct ADPCMstate *state - ADPCM structure *&lt;br /&gt;
//* Return variables: *&lt;br /&gt;
//* char - 8-bit number containing the 4-bit&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;// ADPCM code *&lt;br /&gt;
//**************************************//&lt;br /&gt;
&lt;br /&gt;
char ADPCMEncoder( short sample , struct ADPCMstate *state )&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int code;/* ADPCM output value */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int diff;/* Difference between sample and&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; the predicted sample */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int step;/* Quantizer step size */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int predsample;/* Output of ADPCM predictor */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int diffq;/* Dequantized predicted difference */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int index;/* Index into step size table */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Restore previous values of predicted sample and&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp; quantizer step&amp;nbsp; size index */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; predsample = (int)(state-&amp;gt;prevsample);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Restore the previous values of predicted&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp; // sample (sp)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; index = state-&amp;gt;previndex;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;amp; the quantizer step size index&amp;nbsp;&amp;nbsp; (which are&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // initially taken to be 0 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; step = StepSizeTable[index];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Find the quantizer step size (q) from a table lookup &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using the quantizer step size index*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Compute the difference (d) between the acutal sample &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (sample si) and the predicted sample (predsample sp) */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; diff = sample - predsample;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(diff &amp;gt;= 0)&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the sign bit of ADPCM code (t) if necessary&amp;nbsp; &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;amp; find the absolute value of difference (d)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; code = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; code = 8;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; diff = -diff;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Quantize the difference into the 4-bit ADPCM code&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; using&amp;nbsp; the quantizer step size&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Inverse quantize the ADPCM code into a predicted &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; difference using the quantizer step size */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; diffq = step &amp;gt;&amp;gt; 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( diff &amp;gt;= step )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; code |= 4;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; diff -= step;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; diffq += step;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; step &amp;gt;&amp;gt;= 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( diff &amp;gt;= step )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; code |= 2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; diff -= step;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; diffq += step;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; step &amp;gt;&amp;gt;= 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( diff &amp;gt;= step )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; code |= 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; diffq += step;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Fixed predictor computes new predicted sample by&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; adding the old predicted sample to predicted difference*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( code &amp;amp; 8 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; predsample -= diffq;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; predsample += diffq;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check for overflow of the new predicted sample*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( predsample &amp;gt; 32766 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; predsample = 32767;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else if( predsample &amp;lt; -32767 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; predsample = -32767;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Find new quantizer stepsize index by adding the &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; old index to a table lookup using the ADPCM code*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; index += IndexTable[code];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check for overflow of the new quantizer &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; step size index*/ &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( index &amp;lt; 0 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; index = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( index &amp;gt; 88 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; index = 88;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Save the predicted sample and quantizer step &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; size index for next iteration*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; state-&amp;gt;prevsample = (short)predsample;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; state-&amp;gt;previndex = index;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Return the new ADPCM code*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return ( code &amp;amp; 0x0f );&lt;br /&gt;
&lt;br /&gt;
}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;span class="Apple-style-span"&gt;2. &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The header file "pcadpcm.h is given below":&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;/***************************************&lt;br /&gt;
* This header file contains the ADPCM structure *&lt;br /&gt;
* definition and the function prototypes. *&lt;br /&gt;
***************************************/&lt;br /&gt;
struct ADPCMstate {&lt;br /&gt;
short prevsample;/* Predicted sample */&lt;br /&gt;
int previndex;/* Index into step size table */&lt;br /&gt;
};&lt;br /&gt;
/* Function prototype for the ADPCM Encoder routine */&lt;br /&gt;
char ADPCMEncoder(short , struct ADPCMstate *);&lt;br /&gt;
/* Function prototype for the ADPCM Decoder routine */&lt;br /&gt;
int ADPCMDecoder(char , struct ADPCMstate *);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;span style="font-size: small;"&gt;3. The C code implemented in TuboC&amp;nbsp; for decoding the compressed and encoded speech data recorded on PC by interfacing serial port of PC with micro-controller is given below:&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;string.h&amp;gt;&lt;br /&gt;
#include&amp;lt;dos.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include "pcadpcm.h"&lt;br /&gt;
&lt;br /&gt;
//////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
/* Table of index changes */&lt;br /&gt;
signed char IndexTable[16] = {&lt;br /&gt;
-1, -1, -1, -1, 2, 4, 6, 8,&lt;br /&gt;
-1, -1, -1, -1, 2, 4, 6, 8,&lt;br /&gt;
};&lt;br /&gt;
/* Quantizer step size lookup table */&lt;br /&gt;
int StepSizeTable[89] = {&lt;br /&gt;
7, 8, 9, 10, 11, 12, 13, 14, 16, 17,&lt;br /&gt;
19, 21, 23, 25, 28, 31, 34, 37, 41,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;45,50, 55, 60, 66, 73, 80, 88, 97,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;107, 118,130, 143, 157, 173, 190,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt; 209, 230, 253, 279, 307,337, 371,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;408, 449, 494, 544, 598, 658, 724,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;796,876, 963, 1060, 1166, 1282,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;1411, 1552, 1707, 1878, 2066,&lt;br /&gt;
2272, 2499, 2749, 3024, 3327,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;3660, 4026, 4428, 4871, 5358,&lt;br /&gt;
5894, 6484, 7132, 7845, 8630,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;9493, 10442, 11487, 12635, 13899,&lt;br /&gt;
15289, 16818, 18500, 20350, 22385,&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;24623, 27086, 29794, 32767&lt;br /&gt;
};&lt;br /&gt;
//////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE *fpin,*fpout;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; char ch;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; short sample;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char sample8;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; char code;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; struct ADPCMstate state;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; state.prevsample=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; state.previndex=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; clrscr();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fpin=fopen("c:\\ee.bin","rb");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(fpin==NULL)exit(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fpout=fopen("c:\\ee01.bin","wb");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //ADPCM Decoder&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("ADPCM decoding in progress\n");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; Read &amp;amp; unpack input codes and process them&amp;nbsp; */&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(fread(&amp;amp;code,sizeof(char),1,fpin)==1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Send upper 4-bits of code to decoder&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sample=ADPCMDecoder((code&amp;gt;&amp;gt;4)&amp;amp;0x0f,&amp;amp;state);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sample8=(unsigned char)((sample&amp;gt;&amp;gt;8)&amp;amp;0xff) + 128;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fwrite(&amp;amp;sample8,sizeof(char),1,fpout);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Send the lower 4-bits of code to decoder&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sample=ADPCMDecoder(code&amp;amp;0x0f,&amp;amp;state);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //write sample for lower 4-bits of code&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sample8=(unsigned char)((sample&amp;gt;&amp;gt;8)&amp;amp;0xff) + 128;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fwrite(&amp;amp;sample8,sizeof(char),1,fpout);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fclose(fpin);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fclose(fpout);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //getch();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/************************************************&lt;br /&gt;
* ADPCMDecoder - ADPCM decoder routine *&lt;br /&gt;
*************************************************&lt;br /&gt;
* Input variables: *&lt;br /&gt;
* char code - 8-bit number containing the 4-bit ADPCM code *&lt;br /&gt;
* struct ADPCMstate *state - ADPCM structure *&lt;br /&gt;
* Return variables: *&lt;br /&gt;
* int - 16-bit signed speech sample *&lt;br /&gt;
**********************************************/&lt;br /&gt;
int ADPCMDecoder(char code, struct ADPCMstate *state)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int step;/* Quantizer step size */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int predsample;/* Output of ADPCM predictor */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int diffq;/* Dequantized predicted difference */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int index;/* Index into step size table */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Restore previous values of predicted sample and&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp; quantizer step size index */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; predsample = (int)(state-&amp;gt;prevsample);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; index = state-&amp;gt;previndex;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Find quantizer step size from lookup table&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using index*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; step = StepSizeTable[index];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Inverse quantize the ADPCM code into a difference&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using the quantizer step size */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; diffq = step &amp;gt;&amp;gt; 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( code &amp;amp; 4 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; diffq += step;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( code &amp;amp; 2 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; diffq += step &amp;gt;&amp;gt; 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( code &amp;amp; 1 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; diffq += step &amp;gt;&amp;gt; 2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Add the difference to the predicted sample */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( code &amp;amp; 8 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; predsample -= diffq;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; predsample += diffq;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check for overflow of the new predicted sample */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( predsample &amp;gt; 32767 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; predsample = 32767;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else if( predsample &amp;lt; -32767 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; predsample = -32767;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Find new quantizer step size by adding the old&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp; index and a&amp;nbsp; table lookup using the ADPCM code*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; index += IndexTable[code];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check for overflow of the new quantizer step&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; size index */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( index &amp;lt; 0 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; index = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if( index &amp;gt; 88 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; index = 88;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Save predicted sample and quantizer step size&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;&amp;nbsp;&amp;nbsp; index for next&amp;nbsp; iteration */&lt;br /&gt;
&amp;nbsp;&amp;nbsp; state-&amp;gt;prevsample = (short)predsample;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; state-&amp;gt;previndex = index;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Return the new speech sample */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return( predsample );&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: 15px;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-6935451820967626124?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/6935451820967626124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/adaptive-differential-pulse-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/6935451820967626124?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/6935451820967626124?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/adaptive-differential-pulse-code.html' title='ADAPTIVE DIFFERENTIAL PULSE CODE MODULATION (ADPCM) USING AVR MICRCONTROLLER'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WyqB9Ls02ZM/TSsq8qQvSnI/AAAAAAAAAC4/8nIEk7Jlp4Y/s72-c/Encoder.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;D08FQ3Y8eCp7ImA9Wx9VGU0.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-7921387138979537047</id><published>2011-01-09T23:04:00.002+05:00</published><updated>2011-02-05T16:36:52.870+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-05T16:36:52.870+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><title>Things to consider when buying a digital Camera</title><content type='html'>&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;Buying a digital camera is not a child's play.It is indeed a difficult&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;purchase to&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;make especially when there are myriads of features and&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;choices&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;available in the digital cameras being sold in the market.If you are new to this area or if you are a first time buyer then you may easily get overwhelmed by the options available in this regard.So you must do some homework and &amp;nbsp;research to decide upon which digital camera is appropriate for you,lest you should regret after &amp;nbsp; purchasing the camera. Therefore,while buying a digital camera,it is suggested to keep in view the the following points:   &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TTGQK45Kp9I/AAAAAAAAADQ/-xgmSrnAk-Y/s1600/camera.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_WyqB9Ls02ZM/TTGQK45Kp9I/AAAAAAAAADQ/-xgmSrnAk-Y/s1600/camera.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;How much you can afford?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="line-height: 115%;"&gt;I think the most important factor which dictates which type of camera you should buy is how much cost you can afford to buy a camera.Obviously,the greater the features and functions a camera is equipped with the higher the cost of camera is supposed to be.T&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;herefore,the only choice you are left with is to make a trade-off between how much price you can afford and how many features you want the camera of your choice to be equipped with.So you should carefully figure out your budget and the features of the camera that are inevitable for you to make this purchase.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Mega-pixels?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="line-height: 115%;"&gt;The resolution of a digital camera is measure of the quality of the photo images it can produce.T&lt;/span&gt;&lt;span style="line-height: 115%;"&gt;he resolution of a digital camera is stated in terms of mega-pixels.So mega-pixels of a digital camera is one of the most important factors that govern the quality of photo images produced by your digital camera.&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;The greater the number of mega-pixels the higher is the resolution of digital camera and obviously the higher is the price of the camera. Only a camera &amp;nbsp;with a higher number of mega-pixels can produce finer quality of photos which can be enlarged and edited without losing image quality.Therefore,here too, you are bound to make a trade-off between the cost and the mega-pixels of camera.The yardstick to decide on the number of mega-pixels of a digital camera, that suits your requirement, is : what is the maximum size of the print that you want to get from the pictures taken with your camera?.&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;If you are interested in print size of about 8x10 or 8x12, then any camera with resolution between 6 to 10 mega-pixels will be&amp;nbsp;sufficient&amp;nbsp;for you. But if you want the print size to be bigger i.e., 12x18 or 12x20 or more, then the minimum number of mega-pixels that your camera &amp;nbsp;should be equipped with is 8&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;mega-pixels&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; line-height: 18px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Type of Photographer you are&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;Your photography skills and the type of&amp;nbsp;photographs that you are&amp;nbsp;interested&amp;nbsp;to take with your digital camera is an important factor that you should take into consideration while buying a digital camera.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;If you are just a amateur or occasional photographer, who likes to take pictures on special occasions only,like parties and get-together, then you do not need a very high resolution camera.In that case any digital camera of some reputed brand,like Canon,Sony or Yashika etc., with resolution ranging from 6 to 10 mega-pixels will be good enough for you. If you are a professionally skilled photographer or a photography enthusiast then any ordinary digital camera will not just do for you. In that case you will need a high quality and high resolution digital camera equipped with advanced features like good optical zoom,face recognition and adjustment for light intensity etc., to capture high resolution and good quality pictures that could be enlarged, edited with software and printed without losing the image quality and resolution.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Image and Video Storage Capacity&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; line-height: 18px;"&gt;I think a good digital camera should be equipped with enough data storage capacity,either built-in or in the form of externally connected memory card,to contain at least a few hundred photo images of high resolution.It is always preferable to have a digital camera equipped with good enough built-in memory as well as a slot for connecting memory card so that data storage capacity of the camera may be&amp;nbsp;enhanced anytime&amp;nbsp;according to your needs.As far as i know,almost all digital cameras available in market come equipped with feature to add additional memory in the form of memory cards.I think this feature is inevitable.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Interface with Computer    &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;No matter how huge is the data storage capacity of your digital camera,&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;ultimately&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;you need to transfer your pictures and videos made by your camera to the computer either for back up or for&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;editing&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;and printing.Therefore your camera must be equipped with the feature to&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;interface&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;with computer either by cable or by blue-tooth connection.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Zooming Feature&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;Zooming feature of a digital camera is one of the most important factors that greatly affects the quality of pictures taken by the camera,therefore,while buying a digital camera you must take this factor into consideration.Most of the&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;people&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;do not understand the difference between optical zoom and digital zoom.Most of the&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;people&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;think that both optical and digital zoom are the same.This is rather the most commonly&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;misunderstood&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;concepts about the zooming feature of a digital camera.Both of these terms should not be intermingled.In optical zoom lenses of a digital camera move physically to bring the image of a distant object closer to your eyes.Optical zoom is equivalent to physically getting closer to the distant object and viewing the object from a close distance to improve image clarity and quality.while unlike optical zoom in digital zoom the camera simply&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;magnifies&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;the pixels of the captured image to show you a &amp;nbsp;larger image without maintaining the image quality and clarity.So when buying a digital camera you should always pay more attention to optical zoom rather than digital zoom.However,it is recommended the a digital camera should be equipped with features for both good optical zoom and digital zoom.The higher the optical zoom of a digital camera &amp;nbsp;the better the camera is.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Battery Type&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;The type of batteries your camera operates with and the life of batteries, in terms of number of shots taken with your camera,is an important feature of a digital camera that should never be &lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=B0035FZJL2&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;overlooked.Digital &amp;nbsp;cameras operate with batteries and they suck batteries like a blood sucking vampire.Good quality batteries, especially the type of batteries recommended by the&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;manufacturer&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;, are really expensive.So it always better to have a camera which can operate with rechargeable batteries,so that whenever your camera runs down its batteries they may be recharged instead of buying new ones.Though the&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;initial&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;cost of&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;rechargeable&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;batteries is much higher than that of non-rechargeable&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;batteries and you also need a&amp;nbsp;battery&amp;nbsp;charger but your camera is really worth this investment as you are saved from the trouble of buying new batteries&amp;nbsp;every&amp;nbsp;time your camera runs down its batteries.Two types of rechargeable&amp;nbsp;battery options are available for digital cameras i.e.,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;Lithium-ion and NiMH.Both types of&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;batteries have their own advantages and disadvantages&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;.I personally recommend AA size NiMH&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;rechargeable&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;batteries as they can be easily purchased from anywhere in the world.whenever your batteries go dead and if you do not have AC or Dc power to recharge your&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;batteries and you don't have spare batteries either then in that case you can easily install AA disposable batteries in your camera in place of your&amp;nbsp;rechargeable&amp;nbsp;dead batteries.This is not the case with Li-ion battery pack, which is&amp;nbsp;proprietary.You cannot just&amp;nbsp;substitute AA disposable cells for your Li-Ion battery pack if your&amp;nbsp;battery&amp;nbsp;goes dead in such a situation.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: white; font-family: Arial; font-size: x-small;"&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;Portability&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;A digital&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;camera&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;should be light in weight and small in size so that it may easily fit in your jeans pocket and may be easily carried any where for taking pictures.A digital camera should be portable like cell phone.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;LCD&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;LCD stands for Liquid Crystal Display.It is a small display screen located at the back side of your&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;camera&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;.This screen helps you preview the picture being taken with your camera.Also with this screen you can view the pictures and videos already recorded by your camera in its memory.LCD sucks a lot of battery power,therefore, it is suggested that along with LCD the digital camera should also be equipped with good optical view finder so that while taking snap shots dependence on LCD and power consumption of LCD may reduced.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;Ease of use&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;A digital camera should be easy too use so that any casual&amp;nbsp;user may easily operate it without poring over bulky user manuals.For a casual user a portable and easy to operate camera equipped with sophisticated features, like automatic&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;adjustment&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;for light intensity,&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&amp;nbsp;focus and&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;face recognition etc., which does not require much knowledge and skills in photography, is a suitable option.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;These are a few guidelines,discussed above, which may be helpful for a person not much familiar with the art and&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;technology&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 115%;"&gt;&amp;nbsp;of&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 18px;"&gt;photography in buying a good point-and-shoot type digital camera.However,if you are a professionally skilled photographer then you need to consider a lot of other features as well.So choice of a digital camera depends&amp;nbsp;solely&amp;nbsp;upon your photography skills and your area of application.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-7921387138979537047?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/7921387138979537047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/things-to-consider-when-buying-digital_09.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/7921387138979537047?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/7921387138979537047?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/things-to-consider-when-buying-digital_09.html' title='Things to consider when buying a digital Camera'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WyqB9Ls02ZM/TTGQK45Kp9I/AAAAAAAAADQ/-xgmSrnAk-Y/s72-c/camera.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry gd:etag='W/&quot;DEEFQng4eSp7ImA9Wx9VGU0.&quot;'><id>tag:blogger.com,1999:blog-8996784978101301469.post-7476907333767044135</id><published>2011-01-09T22:48:00.002+05:00</published><updated>2011-02-05T16:50:13.631+05:00</updated><app:edited xmlns:app='http://www.w3.org/2007/app'>2011-02-05T16:50:13.631+05:00</app:edited><category scheme='http://www.blogger.com/atom/ns#' term='Career Planning'/><title>Career Networking for Career Development</title><content type='html'>&lt;m:smallfrac m:val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin m:val="0"&gt;    &lt;m:rmargin m:val="0"&gt;    &lt;m:defjc m:val="centerGroup"&gt;    &lt;m:wrapindent m:val="1440"&gt;    &lt;m:intlim m:val="subSup"&gt;    &lt;m:narylim m:val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;Advancement in teconolgy and modern means of communications have geatly affected our lifestyle.Advanced means of communication like internet ,mobile phones and satellite communication etc., have turned this world into a global village.These days staying connected with your contacts is quite easy.Apart from all this, scoial and career networking communities on the internet like LinkedIn,Facebook and Orkut etc. are also playing a great role in getting people in touch with one another who are living different in parts of the world together.So no one can afford to stay aloof and isolated.To advance in your career and grow your business you must be a part of an active career and social network.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;Career networking is a means of maintaining a rich network of contacts comprising those people who are,one way or the other, related with your career and profession.Career networking is a way of using your contacts and the people you know for your own professional growth an advancement in career.It does not mean merely exploiting your contacts for your own personal gains,it is,rather a relationship based upon reciprocity.In other words it is a sort of give-and- take relationship.So you should not only be able to put your contacts ,in your career network, effectively to work for you own career growth but also you should be benefecial to othe people in your career network.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TTMx_GImFcI/AAAAAAAAADY/-VMw79UKbJE/s1600/network01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="318" src="http://2.bp.blogspot.com/_WyqB9Ls02ZM/TTMx_GImFcI/AAAAAAAAADY/-VMw79UKbJE/s320/network01.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;m:smallfrac m:val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin m:val="0"&gt;    &lt;m:rmargin m:val="0"&gt;    &lt;m:defjc m:val="centerGroup"&gt;    &lt;m:wrapindent m:val="1440"&gt;    &lt;m:intlim m:val="subSup"&gt;    &lt;m:narylim m:val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;In the past, when there used to be no internet and mobile phones,people mostly used to rely on telephone and postal services for staying in contact with one another.So,it might have been quite difficult to maintain a good network of professional contacts.But now inerent,mobile phones and satellite communication have revolutionasied the means of communication.These days keeping in touch with your contacts is quit easy and just a matter of click of a button.Therefore, we should also benefit from modern means of communication to develop our career.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;Career experts and HR professionals greatly emphasize the need to maintain an active and effective social and career network.The reason being that these days there is a growing trend in &lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=widgetsamazon-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=0071456031&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;many reputed companies to hire new employees either through internet or on recommendation of their current employees.Even some companies offer incentives and bonuses to their employees,if new professionals,especially professionally skilled ones with good career profile,get hired on recommendation of their current employees.This approach is not only beneficial to the employees but also it is very useful for the company in terms of financial resources and manpower required for recruiting new employees by advertising new openings in newspapers and then conducting tests and interviews of the candidates, after shortlisting a few candidates from a huge pile of applications that the company might receive against the advertised job openings.Therefore to avoid all these hassles many companies prefer to induct new professionals on recommendation of their current employees and thus many openings in such companies are filled internally without being advertised.In such a case only those people can benefit from such opportunites who have rich and effective network of professional contacts.So in this case career and social networking play a crucial role and thus may be deemed inevitable for career growth.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;Irrespective of it, whether you are currently looking for a job or not ,it is always beneficial to have a rich network of porfessional contacts for growing in your career.You may need to switch your job or you want to get a promotion in your job.In such case your effective social and professional contacts can be of great help to you.You should not only have a network of professional contacts well in place but also you should be an active and effective member of your career network.So merely&amp;nbsp; maintaining a professional network is not enough,rather your career network should be active and you should keep in touch with your contacts on regular basis,so that you may seek help from your contacts any time when you need them.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 12pt; line-height: 115%;"&gt;To develop a good professional and social network many professional and social networking websites like Orkut,twitter,LinkedIn,paracalls,facebook etc., exist on the internet that can be of great help in this regard.To begin with you should be a member of some reputed career and social networking websites active on the internet.Search for your class mates,colleagues and friends who are already members of career and social networking websites active on the internet.Also to develop new contacts you should actively participate in social and professional events like seminars,exhibitions,conferences and social gatherings held by your acquaintances.The more professional and social contacts you have the more resourceful you will be.Career and social networking is a stepping stone in making a headway in your career.So get ready to be an active member of an effective and active career network so that you may advance up your career ladder.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial,sans-serif; font-size: small; line-height: 115%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial,sans-serif; font-size: 12pt; line-height: 115%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8996784978101301469-7476907333767044135?l=embeddedsystemsbyyasir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embeddedsystemsbyyasir.blogspot.com/feeds/7476907333767044135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/career-networking-for-career.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/7476907333767044135?v=2'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8996784978101301469/posts/default/7476907333767044135?v=2'/><link rel='alternate' type='text/html' href='http://embeddedsystemsbyyasir.blogspot.com/2011/01/career-networking-for-career.html' title='Career Networking for Career Development'/><author><name>m.yasir</name><uri>http://www.blogger.com/profile/11355288426783071489</uri><email>yasir9909@gmail.com</email><gd:extendedProperty name='OpenSocialUserId' value='17829877283983926338'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WyqB9Ls02ZM/TTMx_GImFcI/AAAAAAAAADY/-VMw79UKbJE/s72-c/network01.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>