<?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/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9132604174567101680</id><updated>2011-12-01T22:49:34.478-08:00</updated><category term='RFID SECURITY SYSTEM C CODE'/><category term='Airtel C Programming Code'/><category term='FINAL YEAR PROJECT LIST 2009|8051 peoject list|embedded project list|embedded|8051|microcontroller|latest electronics projects'/><category term='PIC MicroController'/><category term='PIC MICROCONTROLLER 16F877A SCHEMATIC'/><category term='SINGLE BOARD COMPUTER PROJECT REPORT'/><category term='PS2 Keyboard code interfaced with 8051 microcontroller'/><category term='I2C Bus Standard'/><category term='wimax|what is wimax|embed4u.blogspot.com|latest technology wimax'/><category term='Inter Integrated Circuit Bus Standards'/><category term='What is Wi-Fi? on Embed4u.com|latest technology Wi-Fi|Details about wi-Fi|Wi-Fi Standards|Wi-Fi network|Wi-Fi Networking News on embed4u.blogspot.com'/><title type='text'>EMBED4U</title><subtitle type='html'>Its embedded project,codes,Circuit Schamatics,embedded news and....</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-5569637609860834880</id><published>2009-11-13T21:14:00.000-08:00</published><updated>2009-11-13T21:33:58.792-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='What is Wi-Fi? on Embed4u.com|latest technology Wi-Fi|Details about wi-Fi|Wi-Fi Standards|Wi-Fi network|Wi-Fi Networking News on embed4u.blogspot.com'/><title type='text'>What is Wi-Fi?</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Book Antiqua'; font-size: x-large;"&gt;&lt;span style="font-size: 19px;"&gt;&lt;span style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Arial; font-size: 13px; white-space: pre;"&gt;&lt;b&gt;What is Wi-Fi?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EwvHoubUgBI/Sv4-lK8SopI/AAAAAAAADzg/6i_iLy12g7k/s1600-h/wifi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_EwvHoubUgBI/Sv4-lK8SopI/AAAAAAAADzg/6i_iLy12g7k/s640/wifi.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;The name of a popular&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;wireless&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;networking technology that uses radio waves to provide wireless high-speed&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;Internet&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;and&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;network&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;connections. The&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;Wi-Fi Alliance, the organization that owns the Wi-Fi (registered trademark) term specifically defines Wi-Fi as any "wireless local area network (WLAN) products that are based on the &lt;st1:place w:st="on"&gt;&lt;st1:placetype w:st="on"&gt;Institute&lt;/st1:placetype&gt; of &lt;st1:placename w:st="on"&gt;Electrical&lt;/st1:placename&gt;&lt;/st1:place&gt; and Electronics Engineers' (IEEE) 802.11 standards."&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-family: 'Book Antiqua'; font-size: x-large;"&gt;&lt;span style="font-size: 19px;"&gt;&lt;a href="http://www.embed4u.com/"&gt;http://www.embed4u.com/&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;Initially, Wi-Fi was used in place of only the 2.4GHz&amp;nbsp;802.11b&amp;nbsp;standard, however the&amp;nbsp;Wi-Fi Alliance&amp;nbsp;has expanded the generic use of the Wi-Fi term to include any type of network or WLAN product based on any of the&amp;nbsp;802.11 standards, including&amp;nbsp;802.11b,&amp;nbsp;802.11a, dual-band, and so on, in an attempt to stop confusion about wireless LAN&amp;nbsp;interoperability.&lt;/span&gt;&lt;span style="font-family: 'Book Antiqua'; font-size: 14pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;Wi-Fi works with no physical wired connection between sender and receiver by using radio frequency (RF) technology, a frequency within the electromagnetic spectrum associated with radio wave propagation. When an RF current is supplied to an antenna, an electromagnetic field is created that then is able to propagate through space. The cornerstone of any wireless network is an access point (AP). The primary job of an access point is to broadcast a wireless signal&amp;nbsp; that computers can detect and "tune" into. In order to connect to an access point and join a wireless network, computers and devices must be equipped with wireless network adapters .&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: 'Book Antiqua'; font-size: 14pt;"&gt;Wi-Fi&amp;nbsp; is supported by many applications and&amp;nbsp;devices&amp;nbsp;including&amp;nbsp;video game consoles, home&amp;nbsp;networks,&amp;nbsp;PDAs,&amp;nbsp;mobile phones, major&amp;nbsp;operating systems, and other types of&amp;nbsp;consumer electronics.&amp;nbsp; Any products that are tested and approved as "Wi-Fi Certified" (a registered trademark) by the&amp;nbsp;Wi-Fi Alliance&amp;nbsp;are certified as&amp;nbsp;interoperable&amp;nbsp;with each other, even if they are from different manufacturers. For example, a user with a Wi-Fi Certified product can use any brand of&amp;nbsp;access point&amp;nbsp;with any other brand of client hardware that also is also "Wi-Fi Certified". Products that pass this certification are required to carry an identifying seal on their packaging that states "Wi-Fi Certified" and indicates the&amp;nbsp;radio frequency&amp;nbsp;band used (2.5GHz for&amp;nbsp;802.11b,&amp;nbsp;&amp;nbsp;802.11g, or&amp;nbsp;802.11n, and 5GHz for&amp;nbsp;802.11a).&lt;br /&gt;&lt;br /&gt;A common misconception is that the term Wi-Fi is short for "&lt;i&gt;wireless fidelity&lt;/i&gt;," however this is not the case. Wi-Fi is simply a trademarked term meaning IEEE 802.11x.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-5569637609860834880?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/5569637609860834880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/11/name-of-popular-technology-that-uses.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5569637609860834880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5569637609860834880'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/11/name-of-popular-technology-that-uses.html' title='What is Wi-Fi?'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EwvHoubUgBI/Sv4-lK8SopI/AAAAAAAADzg/6i_iLy12g7k/s72-c/wifi.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-6493764382133199653</id><published>2009-11-13T04:27:00.000-08:00</published><updated>2009-11-13T04:27:17.906-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wimax|what is wimax|embed4u.blogspot.com|latest technology wimax'/><title type='text'>What is wiMAX?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EwvHoubUgBI/Sv1QicTCyMI/AAAAAAAADzY/dpGVdhdBiwA/s1600-h/wimax-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_EwvHoubUgBI/Sv1QicTCyMI/AAAAAAAADzY/dpGVdhdBiwA/s320/wimax-1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;WiMAX is a wireless digital communications system, also known as IEEE 802.16, that is intended for wireless "metropolitan area networks". WiMAX can provide broadband wireless access (BWA) up to 30 miles (50 km) for fixed stations, and 3 - 10 miles (5 - 15 km) for mobile stations. In contrast, the WiFi/802.11 wireless local area network standard is limited in most cases to only 100 - 300 feet (30 - 100m).&lt;br /&gt;&lt;br /&gt;With WiMAX, WiFi-like data rates are easily supported, but the issue of interference is lessened. WiMAX operates on both licensed and non-licensed frequencies, providing a regulated environment and viable economic model for wireless carriers.&lt;br /&gt;&lt;br /&gt;WiMAX can be used for wireless networking in much the same way as the more common WiFi protocol. WiMAX is a second-generation protocol that allows for more efficient bandwidth use, interference avoidance, and is intended to allow higher data rates over longer distances.&lt;br /&gt;&lt;br /&gt;The IEEE 802.16 standard defines the technical features of the communications protocol. The WiMAX Forum offers a means of testing manufacturer's equipment for compatibility, as well as an industry group dedicated to fostering the development and commercialization of the technology.&lt;br /&gt;&lt;br /&gt;WiMax.com provides a focal point for consumers, service providers, manufacturers, analysts, and researchers who are interested in WiMAX technology, services, and products. Soon, WiMAX will be a very well recognized term to describe wireless Internet access throughout the world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-6493764382133199653?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/6493764382133199653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/11/what-is-wimax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/6493764382133199653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/6493764382133199653'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/11/what-is-wimax.html' title='What is wiMAX?'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EwvHoubUgBI/Sv1QicTCyMI/AAAAAAAADzY/dpGVdhdBiwA/s72-c/wimax-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-294932366046698602</id><published>2009-10-27T04:48:00.000-07:00</published><updated>2009-10-27T04:51:08.672-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PS2 Keyboard code interfaced with 8051 microcontroller'/><title type='text'>PS2 Keyboard code</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EwvHoubUgBI/Subehe8JlOI/AAAAAAAAAn0/0-CF1CTLVCk/s1600-h/ks_schematic.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 231px;" src="http://3.bp.blogspot.com/_EwvHoubUgBI/Subehe8JlOI/AAAAAAAAAn0/0-CF1CTLVCk/s400/ks_schematic.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5397245870272517346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;$mod51&lt;br /&gt; &lt;br /&gt;KEYB_DATA   EQU P1.3    ;Line to which PS/2 keyboard data line is connected&lt;br /&gt;KEYB_CLOCK  EQU P1.2    ;Line to which PS/2 keyboard clock line is connected&lt;br /&gt;&lt;br /&gt;KB_ACK      EQU 0FAh    ;Constant which represents the 'ACK' code sent back from keyboard&lt;br /&gt;KB_BREAK    EQU 0F0h    ;Constant which represents that a key is no longer being pressed&lt;br /&gt;KB_EXTENDED EQU 0E0h    ;Constant which represents an extended scan code sequence&lt;br /&gt;&lt;br /&gt;;==========================================================&lt;br /&gt;&lt;br /&gt;;===========================================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;SendSerial          EQU 0041h&lt;br /&gt;;SendSerialHexByte   EQU 0044h&lt;br /&gt;;SendSerialByte      EQU 0047h&lt;br /&gt;&lt;br /&gt;;==========================================================&lt;br /&gt;;                     PROGRAM LOCATION                             &lt;br /&gt;;&lt;br /&gt;;modified to 0000h rather than 8000h.&lt;br /&gt;;===========================================================&lt;br /&gt;&lt;br /&gt;ORG 0000h&lt;br /&gt;&lt;br /&gt;;==========================================================&lt;br /&gt;;                       PROGRAM CODE                                 &lt;br /&gt;;&lt;br /&gt;;This is the actual guts of the demonstration code.      &lt;br /&gt;;===========================================================&lt;br /&gt;&lt;br /&gt;    LCALL lcdi&lt;br /&gt;    LCALL   SendSerial      ;Send 'initializing' message&lt;br /&gt;    DB      "Initializing keyboard ",13,0&lt;br /&gt;  &lt;br /&gt;    LCALL   PS2_GenericInit        ;Initialize the keyboard&lt;br /&gt;    LCALL   SendSerial      ;Send the 'init done' message&lt;br /&gt;    DB      "Init successful dumping PS/2 Communication ",13,0&lt;br /&gt;    CLR     RI&lt;br /&gt;    MOV     R7,#00&lt;br /&gt;Loop:&lt;br /&gt;    JB      RI,ExitProgram      ;If a key has been pressed, exit&lt;br /&gt;   ; LCALL   PS2_GetByte         ;Get a scan code from the keyboard&lt;br /&gt;    LCALL PS2_GetScanCode&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    JNC     Loop                ;If no key was pressed, keep waiting&lt;br /&gt;                               ;See if the key we got IS the key we're looking for&lt;br /&gt;   ;JZ     skip&lt;br /&gt;    &lt;br /&gt;    LCALL   datawrt&lt;br /&gt;skip:PUSH    ACC                 ;Otherwise, save the value returned by the keyboard&lt;br /&gt;    MOV     A,#'{'              ;Display a leading bracket&lt;br /&gt;    LCALL   SendSerialByte      ;Send it to the serial port&lt;br /&gt;    POP     ACC                 ;Restore the value returned by the keyboard&lt;br /&gt;    LCALL   SendSerialHexByte   ;Send it to the terminal as a 2-byte hex value&lt;br /&gt;    MOV     A,#'}'              ;Display a trailing bracket&lt;br /&gt;    LCALL   SendSerialByte      ;Send it to the serial port&lt;br /&gt;    SJMP    Loop                ;Wait for the next keypress&lt;br /&gt;&lt;br /&gt;ExitProgram:    &lt;br /&gt;    CLR RI                      ;Clear serial input and exit back to SBCMON&lt;br /&gt;    RET&lt;br /&gt;;*****************************************************************&lt;br /&gt;;* Function: ByteTo2Hex                                          *&lt;br /&gt;;* Purpose:  Convert a single byte into two hex digits           *&lt;br /&gt;;* Input:    A    = Byte to convert (0x00-0xFF)                  *&lt;br /&gt;;* Output:   A    = High nibble (ASCII 0x30-0x39,0x41-0x46)      *&lt;br /&gt;;*           R0   = Low nibble (ASCII 0x30-0x39, 0x41-0x46)      *&lt;br /&gt;;* Destroyed Registers: None                                     *&lt;br /&gt;;*****************************************************************&lt;br /&gt;&lt;br /&gt;ByteTo2Hex:&lt;br /&gt;    MOV     R0,A&lt;br /&gt;    ANL     A,#0Fh&lt;br /&gt;    ADD     A,#0F6h&lt;br /&gt;    JNC     byte_to_bcd_2&lt;br /&gt;    ADD     A,#07h&lt;br /&gt;byte_to_bcd_2:&lt;br /&gt;    ADD     A,#3Ah&lt;br /&gt;    XCH     A,R0&lt;br /&gt;    SWAP    A&lt;br /&gt;    ANL     A,#0Fh&lt;br /&gt;    ADD     A,#0F6h&lt;br /&gt;    JNC     byte_to_bcd_3&lt;br /&gt;    ADD     A,#07h&lt;br /&gt;byte_to_bcd_3:&lt;br /&gt;    ADD     A,#3Ah&lt;br /&gt;    RET&lt;br /&gt;&lt;br /&gt;;*****************************************************************&lt;br /&gt;;* Function: SendSerialHexByte                                   *&lt;br /&gt;;* Purpose:  Sends the byte in the accumulator to the serial     *&lt;br /&gt;;*           port as two hexadecimal nibbles.                    *&lt;br /&gt;;* Input:    ACC: Byte to send                                   *&lt;br /&gt;;* Output:   None.                                               *&lt;br /&gt;;* Destroyed Registers: None                                     *&lt;br /&gt;;*****************************************************************&lt;br /&gt;    &lt;br /&gt;SendSerialHexByte:  &lt;br /&gt;    PUSH    00h             ;Save R0&lt;br /&gt;    PUSH    ACC             ;Save ACC&lt;br /&gt;    LCALL   ByteTo2Hex      ;Convert high byte to two bytes of BCD&lt;br /&gt;    LCALL   SendSerialByte  ;Send the high byte&lt;br /&gt;    MOV     A,R0            ;Send the low byte&lt;br /&gt;    LCALL   SendSerialByte  ;Send it&lt;br /&gt;    POP     ACC             ;Restore R0&lt;br /&gt;    POP     00h             ;Restore R0&lt;br /&gt;    RET&lt;br /&gt;&lt;br /&gt;;*****************************************************************&lt;br /&gt;;* Function: SendSerialByte                                      *&lt;br /&gt;;* Purpose:  Sends the byte in the accumulator to the serial     *&lt;br /&gt;;*           port and waits for it to be sent before returning.  *&lt;br /&gt;;* Input:    ACC: Byte to send                                   *&lt;br /&gt;;* Output:   None.                                               *&lt;br /&gt;;* Destroyed Registers: None                                     *&lt;br /&gt;;*****************************************************************&lt;br /&gt;&lt;br /&gt;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;&lt;br /&gt;SendSerialByte:&lt;br /&gt;   &lt;br /&gt;    CLR TI          ;Prepare for transmit&lt;br /&gt;    MOV SBUF,A      ;Send the byte out&lt;br /&gt;    JNB TI,$        ;Wait for byte to be sent&lt;br /&gt;    RET             ;Done!&lt;br /&gt;&lt;br /&gt;;*****************************************************************&lt;br /&gt;;* Function: SendSerial                                          *&lt;br /&gt;;* Purpose:  Sends the null-terminated string that immediately   *&lt;br /&gt;;*           follows the LCALL that called the function to the   *&lt;br /&gt;;*           serial port.                                        *&lt;br /&gt;;* Input:    ACC: Byte to send                                   *&lt;br /&gt;;* Output:   None.                                               *&lt;br /&gt;;* Destroyed Registers: None                                     *&lt;br /&gt;;*****************************************************************&lt;br /&gt;    &lt;br /&gt;SendSerial:&lt;br /&gt;    MOV     TMOD,#22h   ;Timer 1 and timer 0in Auto-reload mode&lt;br /&gt;    MOV     TH1,#0FDh   ;Reload value for 9600 baud @ 11.059 Mhz&lt;br /&gt;    SETB    TR1         ;Turn on timer 1 for baud rate generator&lt;br /&gt;    MOV     SCON,#52h   ;Receiver Enable/Timer 1 Baud Rate 8-bit&lt;br /&gt;&lt;br /&gt;    POP     DPH&lt;br /&gt;    POP     DPL&lt;br /&gt;    PUSH    ACC&lt;br /&gt;    PUSH    PSW&lt;br /&gt;    CLR     TI  &lt;br /&gt;SendSerial1:&lt;br /&gt;    CLR     A&lt;br /&gt;    MOVC    A,@A+DPTR&lt;br /&gt;    INC     DPTR&lt;br /&gt;    JZ      SendSerialExit&lt;br /&gt;    MOV     SBUF,A&lt;br /&gt;    JNB     TI,$&lt;br /&gt;    CLR     TI&lt;br /&gt;;(v1.3.1) - Removed LF-appending&lt;br /&gt;;----------------------------------&lt;br /&gt;    CJNE    A,#13,SendSerial1&lt;br /&gt;    MOV     A,#10&lt;br /&gt;    MOV     SBUF,A    &lt;br /&gt;    JNB     TI,$&lt;br /&gt;    CLR     TI&lt;br /&gt;;----------------------------------&lt;br /&gt;   SJMP    SendSerial1&lt;br /&gt;  &lt;br /&gt;SendSerialExit:&lt;br /&gt;    POP     PSW&lt;br /&gt;    POP     ACC&lt;br /&gt;    PUSH    DPL&lt;br /&gt;    PUSH    DPH&lt;br /&gt;    RET&lt;br /&gt;&lt;br /&gt;PS2_GenericInit:&lt;br /&gt;        MOV     A,#0FFh       ;Initializtation command&lt;br /&gt;        ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;        ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;        ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;        JNC     PS2_GenericInit ;If it wasn't repeat and try to initialize again&lt;br /&gt;&lt;br /&gt;        MOV     A,#0F4h       ;Enable reporting&lt;br /&gt;        ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;        ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;        ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;        JNC     PS2_GenericInit ;If it wasn't repeat and try to initialize again&lt;br /&gt;      RET&lt;br /&gt; ;//////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;;PS2_MouseInit:&lt;br /&gt; ;       MOV     A,#0FFh       ;Initializtation command&lt;br /&gt;  ;      ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;   ;     ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;    ;    ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;    ;    JNC     PS2_MouseInit ;If it wasn't repeat and try to initialize again&lt;br /&gt;        &lt;br /&gt;     ;   MOV     A,#0F6h       ;Set default values&lt;br /&gt;      ;  ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;       ; ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;       ; ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;       ; JNC     PS2_MouseInit ;If it wasn't repeat and try to initialize again&lt;br /&gt;&lt;br /&gt;      ;  MOV     A,#0F4h       ;Enable reporting&lt;br /&gt;      ;  ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;       ; ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;       ; ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;       ; JNC     PS2_MouseInit ;If it wasn't repeat and try to initialize again&lt;br /&gt;       ; RET&lt;br /&gt;;////////////////////////////////////////////////////////////////////////////////////////////////       &lt;br /&gt;;***************************************************************&lt;br /&gt;;* Function: Scan code translation table                       *&lt;br /&gt;;* Author:   Craig Steiner                                     *&lt;br /&gt;;*-------------------------------------------------------------*&lt;br /&gt;;* Description: The following codes are the scan codes returned*&lt;br /&gt;;*   by PS2_GetScanCode.  The keyboard sends a byte(s) when a  *&lt;br /&gt;;*   key is pressed and another sequence of bytes when the key *&lt;br /&gt;;*   is released.  These sequences can be 1-3 bytes in length. *&lt;br /&gt;;*   The PS2_GetScanCode routine converts the keyboard scan    *&lt;br /&gt;;*   codes into an internal representation that can be fit in  *&lt;br /&gt;;*   a single byte.  The constants below are the values that   *&lt;br /&gt;;*   will be returned in the case of certain keypresses.  In   *&lt;br /&gt;;*   all cases, a value of 0-127 means the key was pressed     *&lt;br /&gt;;*   while a value between 128-255 means the key was released. *&lt;br /&gt;;***************************************************************&lt;br /&gt;&lt;br /&gt;KS_KP_SLASH     EQU 'a'&lt;br /&gt;KS_RIGHTCTRL    EQU 'b'&lt;br /&gt;KS_RIGHTGUI     EQU 'c'&lt;br /&gt;KS_RIGHTALT     EQU 'd'&lt;br /&gt;KS_APPS         EQU 'e'&lt;br /&gt;KS_PRTSCREEN1   EQU 'f'&lt;br /&gt;KS_PRTSCREEN2   EQU 'g'&lt;br /&gt;KS_INSERT       EQU 'h'&lt;br /&gt;KS_HOME         EQU 'i'&lt;br /&gt;KS_PGUP         EQU 'j'&lt;br /&gt;KS_DELETE       EQU 'k'&lt;br /&gt;KS_END          EQU 'l'&lt;br /&gt;KS_PGDOWN       EQU 'm'&lt;br /&gt;KS_UPARROW      EQU 'n'&lt;br /&gt;KS_LEFTARROW    EQU 'o'&lt;br /&gt;KS_DOWNARROW    EQU 'p'&lt;br /&gt;KS_RIGHTARROW   EQU 'r'&lt;br /&gt;KS_KP_ENTER     EQU 's'&lt;br /&gt;KS_BACKSPACE    EQU 't'&lt;br /&gt;KS_TAB          EQU 'u'&lt;br /&gt;KS_CAPS         EQU 'v'&lt;br /&gt;KS_LEFTSHIFT    EQU 'w'&lt;br /&gt;KS_LEFTCTRL     EQU 'x'&lt;br /&gt;KS_LEFTGUI      EQU 'y'&lt;br /&gt;KS_LEFTALT      EQU 'z'&lt;br /&gt;KS_F1           EQU 01h&lt;br /&gt;KS_F2           EQU 02h&lt;br /&gt;KS_F3           EQU 03h&lt;br /&gt;KS_F4           EQU 04h&lt;br /&gt;KS_F5           EQU 05h&lt;br /&gt;KS_F6           EQU 06h&lt;br /&gt;KS_F7           EQU 07h&lt;br /&gt;KS_F8           EQU 08h&lt;br /&gt;KS_F9           EQU 09h&lt;br /&gt;KS_F10          EQU 0Ah&lt;br /&gt;KS_F11          EQU 0Bh&lt;br /&gt;KS_F12          EQU 0Ch&lt;br /&gt;KS_RIGHTSHIFT   EQU 0Dh&lt;br /&gt;KS_ENTER        EQU 0Eh&lt;br /&gt;KS_SCROLL       EQU 0Fh&lt;br /&gt;KS_NUMLOCK      EQU 10h&lt;br /&gt;KS_KP_ASTERISK  EQU 11h&lt;br /&gt;KS_KP_MINUS     EQU 12h&lt;br /&gt;KS_KP_PLUS      EQU 13h&lt;br /&gt;KS_KP_POINT     EQU 14h&lt;br /&gt;KS_ACPI_POWER   EQU 15h&lt;br /&gt;KS_ACPI_SLEEP   EQU 16h&lt;br /&gt;KS_ACPI_WAKE    EQU 17h&lt;br /&gt;KS_ESCAPE       EQU 1Bh&lt;br /&gt;KS_KP_0         EQU ')'&lt;br /&gt;KS_KP_1         EQU '!'&lt;br /&gt;KS_KP_2         EQU '@'&lt;br /&gt;KS_KP_3         EQU '#'&lt;br /&gt;KS_KP_4         EQU '$'&lt;br /&gt;KS_KP_5         EQU '%'&lt;br /&gt;KS_KP_6         EQU '^'&lt;br /&gt;KS_KP_7         EQU '&amp;'&lt;br /&gt;KS_KP_8         EQU '*'&lt;br /&gt;KS_KP_9         EQU '('&lt;br /&gt;&lt;br /&gt;;***************************************************************&lt;br /&gt;;* Function: PS2_GetByte                                       *&lt;br /&gt;;* Author:   Craig Steiner based on code by Gabriel Lour       *&lt;br /&gt;;* Input:    None                                              *&lt;br /&gt;;* Output    Carry bit: Clear=No key returned,Set=Key returned *&lt;br /&gt;;*           Accumulator: Byte returned by keyboard            *&lt;br /&gt;;* Registers Modified: None                                    *&lt;br /&gt;;*-------------------------------------------------------------*&lt;br /&gt;;* Description: Gets a single byte from the keyboard, if there *&lt;br /&gt;;*   is a byte to get.  Returns it in the accumulator and sets *&lt;br /&gt;;*   carry bit.  Otherwise clears the carry bit.               *&lt;br /&gt;;***************************************************************&lt;br /&gt;&lt;br /&gt;PS2_GetByteSetR0:&lt;br /&gt;        MOV     A,R0                    ;We don't save Accumulator since return value can be in accumulator&lt;br /&gt;        PUSH    ACC                     ;Protect R0&lt;br /&gt;        SJMP    PS2_GetByte2            ;Use R0 that is passed in&lt;br /&gt;&lt;br /&gt;PS2_GetByte:&lt;br /&gt;       &lt;br /&gt;        MOV     A,R0                    ;We don't save Accumulator since return value can be in accumulator&lt;br /&gt;        PUSH    ACC                     ;Protect R0&lt;br /&gt;        MOV     R0, #50                 ;Wait 50 loop cycles for data line to be lowered by keyboard&lt;br /&gt;        &lt;br /&gt;PS2_GetByte2:        &lt;br /&gt;        SETB    KEYB_DATA               ;Raise data line so it can receive data&lt;br /&gt;        SETB    KEYB_CLOCK              ;Raise clock so that keyboard communication is enabled&lt;br /&gt;PGB_CheckAgain:&lt;br /&gt;        JNB     KEYB_CLOCK, PGB_KeyHit  ;If clock line is now low that means keyboard is talking to us&lt;br /&gt;        DJNZ    R0, PGB_CheckAgain      ;Check R0 number of times&lt;br /&gt;        SJMP    PGB_KeyEnd              ;No keyboard response was detected in loop period&lt;br /&gt;PGB_KeyHit:&lt;br /&gt;        JNB     KEYB_DATA, PGB_StartOk  ;Start bit must be 0&lt;br /&gt;PGB_KeyEnd:&lt;br /&gt;        CLR     KEYB_CLOCK              ;Disable keyboard&lt;br /&gt;        CLR     C                       ;Clear carry to indicate no keypress&lt;br /&gt;PGB_PopExit:&lt;br /&gt;        XCH     A,R0                    ;Hold accumulator temporarily in R0&lt;br /&gt;        POP     ACC                     ;Restore value of R0&lt;br /&gt;        XCH     A,R0                    ;Restore accumulator and R0      &lt;br /&gt;        RET&lt;br /&gt;PGB_StartOk:&lt;br /&gt;        MOV     R0,#8                   ;8 bits to clock into accumulator&lt;br /&gt;        CLR     A                       ;Accumulator initially empty&lt;br /&gt;PGB_KeyHit3: &lt;br /&gt;        ACALL   PS2_GetBit              ;Get one bit and shift into accumulator&lt;br /&gt;        DJNZ    r0, PGB_KeyHit3         ;Execute for each of the 8 bits&lt;br /&gt;        PUSH    ACC                     ;Save the value read from keyboard on the stack&lt;br /&gt;        CLR     A&lt;br /&gt;        ACALL   PS2_GetBit              ;Get parity bit&lt;br /&gt;        ACALL   PS2_GetBit              ;Get stop bit&lt;br /&gt;        CLR     KEYB_CLOCK&lt;br /&gt;        POP     ACC                     ;Restore the byte we read&lt;br /&gt;        SETB    C                       ;Set carry flag to indicate key press&lt;br /&gt;        SJMP    PGB_PopExit             ;Exit routine&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;;***************************************************************&lt;br /&gt;;* Function: PS2_GetBit                                        *&lt;br /&gt;;* Author:   Craig Steiner based on code by Gabriel Lour       *&lt;br /&gt;;* Input:    Accumulator: Starting value of clocked-in data    *&lt;br /&gt;;* Output    Accumulator: New value of cloced-in data          *&lt;br /&gt;;* Registers Modified: Carry bit                               *&lt;br /&gt;;*-------------------------------------------------------------*&lt;br /&gt;;* Description: Waits for a 1-0 transition on the clock line   *&lt;br /&gt;;*   from the keyborad.  When this happens, we have valid data *&lt;br /&gt;;*   on the data line so we get it and rotate it into the      *&lt;br /&gt;;*   accumulator.                                              *&lt;br /&gt;;***************************************************************&lt;br /&gt;&lt;br /&gt;PS2_GetBit:&lt;br /&gt;        JNB     KEYB_CLOCK, $&lt;br /&gt;        JB      KEYB_CLOCK, $&lt;br /&gt;        MOV     C, KEYB_DATA&lt;br /&gt;        RRC     A&lt;br /&gt;        RET&lt;br /&gt;&lt;br /&gt;;***************************************************************&lt;br /&gt;;* Function: PS2_WaitClock                                     *&lt;br /&gt;;* Author:   Craig Steiner based on code by Gabriel Lour       *&lt;br /&gt;;* Input:    None                                              *&lt;br /&gt;;* Output    None                                              *&lt;br /&gt;;* Registers Modified: Nine                                    *&lt;br /&gt;;*-------------------------------------------------------------*&lt;br /&gt;;* Description: Waits for a 1-0 transition on the clock line   *&lt;br /&gt;;*   from the keyborad and returns.                            *&lt;br /&gt;;***************************************************************&lt;br /&gt;&lt;br /&gt;PS2_WaitClock:&lt;br /&gt;        JNB     KEYB_CLOCK, $&lt;br /&gt;        JB      KEYB_CLOCK, $&lt;br /&gt;        RET&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;***************************************************************&lt;br /&gt;;* Function: PS2_SendByte                                      *&lt;br /&gt;;* Author:   Craig Steiner based on code by Gabriel Lour       *&lt;br /&gt;;* Input:    Accumulator: Value to send to keyboard            *&lt;br /&gt;;* Output    Accumulator: New value of cloced-in data          *&lt;br /&gt;;* Registers Modified: Carry bit                               *&lt;br /&gt;;*-------------------------------------------------------------*&lt;br /&gt;;* Description: Waits for a 1-0 transition on the clock line   *&lt;br /&gt;;*   from the keyborad.  When this happens, we have valid data *&lt;br /&gt;;*   on the data line so we get it and rotate it into the      *&lt;br /&gt;;*   accumulator.                                              *&lt;br /&gt;;***************************************************************&lt;br /&gt;&lt;br /&gt;PS2_SendByte:&lt;br /&gt;        XCH     A,R0            ;Swap A and R0 temporarily&lt;br /&gt;        PUSH    ACC             ;This saves the value of R0 on stack&lt;br /&gt;        XCH     A,R0            ;And this restores the accumulator to its original value&lt;br /&gt;        CLR     KEYB_CLOCK      ;Break the Keyboard&lt;br /&gt;        MOV     R0,#00h         ;Some delay (safety reasons)&lt;br /&gt;        DJNZ    R0,$            ;Loop for 256 cycles&lt;br /&gt;        CLR     KEYB_DATA       ;Request to send&lt;br /&gt;        SETB    KEYB_CLOCK      ;Enable the Keyboard&lt;br /&gt;        ACALL   PS2_WaitClock   ;Start Bit&lt;br /&gt;        PUSH    ACC             ;Protect original value of accumulator&lt;br /&gt;        MOV     R0,#8           ; 8bits to receive&lt;br /&gt;PSB_Xmit:&lt;br /&gt;        RRC     A               ;Shift bits into carry&lt;br /&gt;        MOV     KEYB_DATA, C    ;Send highest bit out to keyboard&lt;br /&gt;        ACALL   PS2_WaitClock   ;Wait for keyboard to acknowledge&lt;br /&gt;        DJNZ    R0,PSB_Xmit     ;Loop for each bit&lt;br /&gt;        POP     ACC             ;Restore original value of accumulator&lt;br /&gt;        MOV     C,PSW.0         ;This is Even parity&lt;br /&gt;        CPL     C               ;And Keyboard needs Odd parity&lt;br /&gt;        MOV     KEYB_DATA,C     ;Send parity bit&lt;br /&gt;        ACALL   PS2_WaitClock   ;Wait for keyboard to acknowledge bit&lt;br /&gt;        SETB    KEYB_DATA       ;Send stop bit&lt;br /&gt;        ACALL   PS2_WaitClock  ;Wait for keyobard to acknowledge bit&lt;br /&gt;        ACALL   PS2_WaitClock   ;Wait for keyboard to acknowledge bit&lt;br /&gt;        MOV     C, KEYB_DATA    ;Get the ACK bit from the keyboard, store in carry&lt;br /&gt;        CLR     KEYB_CLOCK      ;Deselect the keyboard&lt;br /&gt;        XCH     A,R0&lt;br /&gt;        POP     ACC&lt;br /&gt;        XCH     A,R0            ;Restore R0&lt;br /&gt;        ret&lt;br /&gt;        &lt;br /&gt;;***************************************************************&lt;br /&gt;;* Function: PS2_CheckAck                                      *&lt;br /&gt;;* Author:   Craig Steiner based on code by Gabriel Lour       *&lt;br /&gt;;* Input:    Accumulator: Value received from keyboard         *&lt;br /&gt;;* Output    Carry: Clear=NAK, Set=ACK receivedn data          *&lt;br /&gt;;*-------------------------------------------------------------*&lt;br /&gt;;* Description: Checks to see if the contents of the acc is    *&lt;br /&gt;;*   the ACK code (FAh).  If it is, it sets the carry bit.  If *&lt;br /&gt;;*   it isn't, it clears it.                                   *&lt;br /&gt;;***************************************************************&lt;br /&gt;&lt;br /&gt;PS2_ChkAck:&lt;br /&gt;        CJNE    A,#KB_ACK,PCA_NAK    ;If character was not ACK, clr carry to indicate failure&lt;br /&gt;        SETB    C                    ;Set carry to indicate successful ACK&lt;br /&gt;        RET&lt;br /&gt;PCA_NAK:&lt;br /&gt;        CLR C                        ;Clear carry to indicate failure&lt;br /&gt;        RET&lt;br /&gt;&lt;br /&gt;;***************************************************************&lt;br /&gt;;* Function: PS2_Init                                          *&lt;br /&gt;;* Author:   Craig Steiner based on code by Gabriel Lour       *&lt;br /&gt;;* Input:    None                                              *&lt;br /&gt;;* Output    Carry: Clear=Failure, Set=Success                 *&lt;br /&gt;;*-------------------------------------------------------------*&lt;br /&gt;;* Description: Initializes the keyboard and indicates whether *&lt;br /&gt;;*   the initialization was successful or not.                 *&lt;br /&gt;;***************************************************************&lt;br /&gt;&lt;br /&gt;PS2_Init:&lt;br /&gt;        MOV     A,#0FFh       ;Initializtation command&lt;br /&gt;        ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;        ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;        ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;        JNC     PS2_Init      ;If it wasn't repeat and try to initialize again&lt;br /&gt;&lt;br /&gt;        MOV     A,#0F4h       ; Enable keyboard command&lt;br /&gt;        ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;        ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;        ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;        JNC     PS2_Err       ;If not success, abort command and exit&lt;br /&gt;&lt;br /&gt;        MOV     A, #0F3h       ; Set Typematic&lt;br /&gt;        ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;        ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;        ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;        JNC     PS2_Err       ;If not success, abort command and exit&lt;br /&gt;&lt;br /&gt;        MOV     A, #00h       ; Typematic = 250 ms / 30 cps&lt;br /&gt;        ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;        ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;        ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;        JNC     PS2_Err       ;If not success, abort command and exit&lt;br /&gt;        MOV     A,#0          ;Keyboard starts with LEDs off, fall through to Set LEDs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS2_SetLeds:&lt;br /&gt;        PUSH    ACC           ;Protect LED setting passed in accumulator&lt;br /&gt;        MOV     A, #0EDh      ;Set Leds command&lt;br /&gt;        ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;        ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;        ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;        JNC     PS2_Err       ;If not success, abort command and exit&lt;br /&gt;        POP     ACC           ;Restore the LED setting that was passed in&lt;br /&gt;        ACALL   PS2_SendByte  ;Send command to keyboard&lt;br /&gt;        ACALL   PS2_GetByte   ;Get a response byte, should be ACK&lt;br /&gt;        ACALL   PS2_ChkAck    ;Check to see if it was ACK&lt;br /&gt;PS2_Err:&lt;br /&gt;        RET&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;***************************************************************&lt;br /&gt;;* Function: PS2_GetScanCode                                   *&lt;br /&gt;;* Author:   Craig Steiner based on code by Gabriel Lour       *&lt;br /&gt;;* Input:    None                                              *&lt;br /&gt;;* Output    Carry: Clear=No key received, Set=Key received    *&lt;br /&gt;;*           Accumulator: Scan key code                        *&lt;br /&gt;;*-------------------------------------------------------------*&lt;br /&gt;;* Description: Gets a scan code from the keyboard and returns *&lt;br /&gt;;*   it. A scan code is the printable alphabet and numbers in  *&lt;br /&gt;;*   unshifted form.  0-127 means key pressed, 128+ means      *&lt;br /&gt;;*   key released.                                             *&lt;br /&gt;;***************************************************************&lt;br /&gt;&lt;br /&gt;PS2_GetScanCode:&lt;br /&gt;    LCALL       PS2_GetByte               ;Try to get first character&lt;br /&gt;    JC          PGSC_GotKey               ;If we got a byte, process it&lt;br /&gt;PGSC_NoKey:&lt;br /&gt;    CLR     C                             ;Clear carry to signify no character received&lt;br /&gt;    RET                                   ;No byte received, so just exit&lt;br /&gt;PGSC_GotKey:&lt;br /&gt;    ;If we got a key then "B" is going to be used as our return&lt;br /&gt;    ;register.  It starts out clear&lt;br /&gt;&lt;br /&gt;    MOV         B,#00h                    ;Clear our return code&lt;br /&gt;    MOV         DPTR,#PGSC_NormalCodes    ;Point initially to the normal codes&lt;br /&gt;    &lt;br /&gt;PGSC_ProcKey:&lt;br /&gt;    MOV         R1,A                      ;Hold received character in R1&lt;br /&gt;    CJNE        A,#KB_BREAK,PGSC_NotBreak ;If it's not a break code (F0) then continue&lt;br /&gt;      ;If it is a break code then we set the high bit of 'B' to indicate that the&lt;br /&gt;    ;key was released.&lt;br /&gt;    SETB        B.7                       ;Set high bit&lt;br /&gt;PGSC_AnotherKey:&lt;br /&gt;    MOV     R0,#20                        ;Try 20 times to wait for next byte from keyboard&lt;br /&gt;PGSC_AKeyLoop:&lt;br /&gt;    LCALL       PS2_GetByte               ;We then get the next byte from keyboard&lt;br /&gt;    JC          PGSC_ProcKey              ;A byte was received, so process it&lt;br /&gt;    DJNZ        R0,PGSC_AKeyLoop          ;No key detected, so keep trying&lt;br /&gt;    SJMP        PGSC_NoKey                ;No key was found after multiple tries&lt;br /&gt;PGSC_NotBreak:&lt;br /&gt;    ;Check to see if it was an extended key&lt;br /&gt;    CJNE        A,#KB_EXTENDED,PGSC_FindCode    ;If not an extended code (E0), go process it&lt;br /&gt;    ;This means we got an extended code.  If so, we set our look-up table&lt;br /&gt;    ;to the extended scan code table and get another key and process it.&lt;br /&gt;    MOV         DPTR,#PGSC_ExtendedCodes  ;Set lookup table to extended codes&lt;br /&gt;    SJMP        PGSC_AnotherKey           ;Go get another key and process it&lt;br /&gt;PGSC_FindCode:&lt;br /&gt;    ;This now looks for the code we received in the proper table&lt;br /&gt;    CLR     A                             ;Make sure offset is zero&lt;br /&gt;    MOVC    A,@A+DPTR                     ;Get next scan code from DPTR&lt;br /&gt;    JZ      PGSC_NoKey                    ;If zero then end of table, so exit&lt;br /&gt;    XRL     A,R1                          ;See if the key we got IS the key we're looking for&lt;br /&gt;    JZ      PGSC_FoundKey                 ;If it is, so process it&lt;br /&gt;    ;It wasn't the right key, so we increment DPTR twice to point to the&lt;br /&gt;    ;next table entry and process that&lt;br /&gt;    INC     DPTR&lt;br /&gt;;    INC     DPTR&lt;br /&gt;    SJMP    PGSC_FindCode&lt;br /&gt;PGSC_FoundKey:&lt;br /&gt;    INC     DPTR                          ;Point to the translation&lt;br /&gt;    CLR     A                             ;No offset&lt;br /&gt;    MOVC    A,@A+DPTR                     ;Get the translated character&lt;br /&gt;  ;  ORL     A,B                           ;Combine it with B which may hold a "break" code&lt;br /&gt;    SETB    C                             ;Set carry flag to indicate we have a character &lt;br /&gt;    RET&lt;br /&gt;    &lt;br /&gt;PGSC_NormalCodes:&lt;br /&gt;    ;These are the translations for the normal, non-extended codes.  Basically&lt;br /&gt;    ;these are the scan codes that consist of a single byte&lt;br /&gt;    DB 01Ch,'A'&lt;br /&gt;    DB 032h,'B'&lt;br /&gt;    DB 021h,'C'&lt;br /&gt;    DB 023h,'D'&lt;br /&gt;    DB 024h,'E'&lt;br /&gt;    DB 02Bh,'F'&lt;br /&gt;    DB 034h,'G'&lt;br /&gt;    DB 033h,'H'&lt;br /&gt;    DB 043h,'I'&lt;br /&gt;    DB 03Bh,'J'&lt;br /&gt;    DB 042h,'K'&lt;br /&gt;    DB 04Bh,'L'&lt;br /&gt;    DB 03Ah,'M'&lt;br /&gt;    DB 031h,'N'&lt;br /&gt;    DB 044h,'O'&lt;br /&gt;    DB 04Dh,'P'&lt;br /&gt;    DB 015h,'Q'&lt;br /&gt;    DB 02Dh,'R'&lt;br /&gt;    DB 01Bh,'S'&lt;br /&gt;    DB 02Ch,'T'&lt;br /&gt;    DB 03Ch,'U'&lt;br /&gt;    DB 02Ah,'V'&lt;br /&gt;    DB 01Dh,'W'&lt;br /&gt;    DB 022h,'X'&lt;br /&gt;    DB 035h,'Y'&lt;br /&gt;    DB 01Ah,'Z'&lt;br /&gt;    DB 045h,'0'&lt;br /&gt;    DB 016h,'1'&lt;br /&gt;    DB 01Eh,'2'&lt;br /&gt;    DB 026h,'3'&lt;br /&gt;    DB 025h,'4'&lt;br /&gt;    DB 02Eh,'5'&lt;br /&gt;    DB 036h,'6'&lt;br /&gt;    DB 03Dh,'7'&lt;br /&gt;    DB 03Eh,'8'&lt;br /&gt;    DB 046h,'9'&lt;br /&gt;    DB 00Eh,'`'&lt;br /&gt;    DB 04Eh,'-'&lt;br /&gt;    DB 055h,'='&lt;br /&gt;    DB 05Dh,'\'&lt;br /&gt;    DB 066h,KS_BACKSPACE&lt;br /&gt;    DB 029h,' '&lt;br /&gt;    DB 00Dh,KS_TAB&lt;br /&gt;    DB 058h,KS_CAPS&lt;br /&gt;    DB 012h,KS_LEFTSHIFT&lt;br /&gt;    DB 014h,KS_LEFTCTRL&lt;br /&gt;    DB 011h,KS_LEFTALT&lt;br /&gt;    DB 059h,KS_RIGHTSHIFT&lt;br /&gt;    DB 05Ah,KS_ENTER&lt;br /&gt;    DB 076h,KS_ESCAPE&lt;br /&gt;    DB 005h,KS_F1&lt;br /&gt;    DB 006h,KS_F2&lt;br /&gt;    DB 004h,KS_F3&lt;br /&gt;    DB 00Ch,KS_F4&lt;br /&gt;    DB 003h,KS_F5&lt;br /&gt;    DB 00Bh,KS_F6&lt;br /&gt;    DB 083h,KS_F7&lt;br /&gt;    DB 00Ah,KS_F8&lt;br /&gt;    DB 001h,KS_F9&lt;br /&gt;    DB 009h,KS_F10&lt;br /&gt;    DB 078h,KS_F11&lt;br /&gt;    DB 007h,KS_F12&lt;br /&gt;    DB 073h,KS_SCROLL&lt;br /&gt;    DB 054h,'['&lt;br /&gt;    DB 077h,KS_NUMLOCK&lt;br /&gt;    DB 07Ch,KS_KP_ASTERISK&lt;br /&gt;    DB 07Bh,KS_KP_MINUS&lt;br /&gt;    DB 079h,KS_KP_PLUS&lt;br /&gt;    DB 071h,KS_KP_POINT&lt;br /&gt;    DB 070h,KS_KP_0&lt;br /&gt;    DB 069h,KS_KP_1&lt;br /&gt;    DB 072h,KS_KP_2&lt;br /&gt;    DB 07Ah,KS_KP_3&lt;br /&gt;    DB 06Bh,KS_KP_4&lt;br /&gt;    DB 073h,KS_KP_5&lt;br /&gt;    DB 074h,KS_KP_6&lt;br /&gt;    DB 06Ch,KS_KP_7&lt;br /&gt;    DB 075h,KS_KP_8&lt;br /&gt;    DB 07Dh,KS_KP_9&lt;br /&gt;    DB 05Bh,']'&lt;br /&gt;    DB 04Ch,';'&lt;br /&gt;   ; DB 052h,'''&lt;br /&gt;    DB 041h,','&lt;br /&gt;    DB 049h,'.'&lt;br /&gt;    DB 04Ah,'/'&lt;br /&gt;    &lt;br /&gt;   &lt;br /&gt;PGSC_ExtendedCodes:&lt;br /&gt;    ;These are the translations for the extended codes.  These are the codes&lt;br /&gt;    ;that start with E0 and then a second character.  This table lists that&lt;br /&gt;    ;second character&lt;br /&gt;    DB 01Fh,KS_LEFTGUI&lt;br /&gt;    DB 04Ah,KS_KP_SLASH&lt;br /&gt;    DB 014h,KS_RIGHTCTRL&lt;br /&gt;    DB 027h,KS_RIGHTGUI&lt;br /&gt;    DB 011h,KS_RIGHTALT&lt;br /&gt;    DB 02Fh,KS_APPS&lt;br /&gt;    DB 012h,KS_PRTSCREEN1&lt;br /&gt;    DB 07Ch,KS_PRTSCREEN2&lt;br /&gt;    DB 070h,KS_INSERT&lt;br /&gt;    DB 06Ch,KS_HOME&lt;br /&gt;    DB 07Dh,KS_PGUP&lt;br /&gt;    DB 071h,KS_DELETE&lt;br /&gt;    DB 069h,KS_END&lt;br /&gt;    DB 07Ah,KS_PGDOWN&lt;br /&gt;    DB 075h,KS_UPARROW&lt;br /&gt;    DB 06Bh,KS_LEFTARROW&lt;br /&gt;    DB 072h,KS_DOWNARROW&lt;br /&gt;    DB 074h,KS_RIGHTARROW&lt;br /&gt;    DB 05Ah,KS_KP_ENTER&lt;br /&gt;&lt;br /&gt;    DB 037h,KS_ACPI_POWER&lt;br /&gt;    DB 03Fh,KS_ACPI_SLEEP&lt;br /&gt;    DB 05Eh,KS_ACPI_WAKE&lt;br /&gt;    DB 0&lt;br /&gt;&lt;br /&gt;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;              ; lcd Routine&lt;br /&gt;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;commwrt:&lt;br /&gt;        mov a,#00h&lt;br /&gt;        mov dptr,#0fff8h&lt;br /&gt;        movx @dptr,a&lt;br /&gt;        mov a,r0&lt;br /&gt;        mov dptr,#0fff9h&lt;br /&gt;        movx @dptr,a&lt;br /&gt;        ret&lt;br /&gt;&lt;br /&gt; lcdi:  mov r0,#38h&lt;br /&gt;        acall commwrt&lt;br /&gt;        acall delay&lt;br /&gt;        mov r0,#0eh&lt;br /&gt;        acall commwrt&lt;br /&gt;        acall delay&lt;br /&gt;        mov r0,#01h&lt;br /&gt;        acall commwrt&lt;br /&gt;        acall delay&lt;br /&gt;        mov r0,#06h&lt;br /&gt;        acall commwrt&lt;br /&gt;        acall delay&lt;br /&gt;        mov r0,#80h&lt;br /&gt;        acall commwrt&lt;br /&gt;        acall delay&lt;br /&gt;        ret&lt;br /&gt;&lt;br /&gt;datawrt:&lt;br /&gt;      &lt;br /&gt;         mov R1,A&lt;br /&gt;         &lt;br /&gt;         mov a,#01h&lt;br /&gt;         mov dptr,#0fff8h&lt;br /&gt;         movx @dptr,a&lt;br /&gt;         MOV A,R1&lt;br /&gt;         mov dptr,#0fff9h&lt;br /&gt;         movx @dptr,a&lt;br /&gt;         ret                &lt;br /&gt;        &lt;br /&gt;delay:  mov r3,#10&lt;br /&gt;here:   mov r4,#255&lt;br /&gt;here1:  djnz r4,here1&lt;br /&gt;    djnz r3,here&lt;br /&gt;    ret&lt;br /&gt;    end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-294932366046698602?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/294932366046698602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/ps2-keyboard-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/294932366046698602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/294932366046698602'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/ps2-keyboard-code.html' title='PS2 Keyboard code'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EwvHoubUgBI/Subehe8JlOI/AAAAAAAAAn0/0-CF1CTLVCk/s72-c/ks_schematic.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-2228217282162312624</id><published>2009-10-27T04:31:00.000-07:00</published><updated>2009-10-27T04:46:54.797-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inter Integrated Circuit Bus Standards'/><category scheme='http://www.blogger.com/atom/ns#' term='I2C Bus Standard'/><title type='text'>I2C Bus Standard,Inter Integrated Circuit Bus Standards</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EwvHoubUgBI/SubdKKex6QI/AAAAAAAAAns/EA-_Re_PA8o/s1600-h/DAT+TR.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 136px;" src="http://2.bp.blogspot.com/_EwvHoubUgBI/SubdKKex6QI/AAAAAAAAAns/EA-_Re_PA8o/s400/DAT+TR.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397244370132003074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EwvHoubUgBI/SubdBsvtAEI/AAAAAAAAAnk/1WpzGsgOD7w/s1600-h/ACK.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 156px;" src="http://4.bp.blogspot.com/_EwvHoubUgBI/SubdBsvtAEI/AAAAAAAAAnk/1WpzGsgOD7w/s400/ACK.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397244224710967362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/SubcqeaHbVI/AAAAAAAAAnc/RCLVbLURQPo/s1600-h/CLOCK.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 133px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/SubcqeaHbVI/AAAAAAAAAnc/RCLVbLURQPo/s400/CLOCK.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397243825725336914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EwvHoubUgBI/SubcMCoDZzI/AAAAAAAAAnU/wtOvU6DpEYw/s1600-h/Picture1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 82px;" src="http://4.bp.blogspot.com/_EwvHoubUgBI/SubcMCoDZzI/AAAAAAAAAnU/wtOvU6DpEYw/s400/Picture1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397243302871525170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/Subb8VE78mI/AAAAAAAAAnM/w9pYMTYySNc/s1600-h/I2C+BUS+ARB.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 81px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/Subb8VE78mI/AAAAAAAAAnM/w9pYMTYySNc/s400/I2C+BUS+ARB.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397243032946602594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EwvHoubUgBI/SubbsTvupGI/AAAAAAAAAnE/7JPoQKvn0Hk/s1600-h/I2C+THEORY.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 71px;" src="http://4.bp.blogspot.com/_EwvHoubUgBI/SubbsTvupGI/AAAAAAAAAnE/7JPoQKvn0Hk/s400/I2C+THEORY.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397242757711307874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EwvHoubUgBI/SubbY6RasqI/AAAAAAAAAm8/wItX-TEO1Zo/s1600-h/I2C+BUS+EVENTS.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 81px;" src="http://2.bp.blogspot.com/_EwvHoubUgBI/SubbY6RasqI/AAAAAAAAAm8/wItX-TEO1Zo/s400/I2C+BUS+EVENTS.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397242424455770786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EwvHoubUgBI/SubbIspP7RI/AAAAAAAAAm0/-K1ZwmMIphM/s1600-h/I2C+STOP.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 111px;" src="http://2.bp.blogspot.com/_EwvHoubUgBI/SubbIspP7RI/AAAAAAAAAm0/-K1ZwmMIphM/s400/I2C+STOP.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397242145919724818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/Subaz3FZfgI/AAAAAAAAAms/UjrSsFZDk-E/s1600-h/I2C.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 138px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/Subaz3FZfgI/AAAAAAAAAms/UjrSsFZDk-E/s400/I2C.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397241787944893954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/Subasg-C38I/AAAAAAAAAmk/O_zyniLByFQ/s1600-h/I2C+BIT+TRANSFER.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 194px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/Subasg-C38I/AAAAAAAAAmk/O_zyniLByFQ/s400/I2C+BIT+TRANSFER.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397241661749387202" /&gt;&lt;/a&gt;&lt;br /&gt;History of the I2C Bus:&lt;br /&gt;The I2C bus was developed in the early 1980's by Philips Semiconductors.&lt;br /&gt;&lt;br /&gt;The original purpose was to provide an easy way to connect a CPU to peripheral chips in a TV-set. &lt;br /&gt;&lt;br /&gt;Peripheral devices in embedded systems are often connected to the MCU as memory-mapped I/O devices, using the micro controller's parallel address and data bus.&lt;br /&gt;&lt;br /&gt;This results in lots of wiring on the PCB's to route the address and data lines.&lt;br /&gt;&lt;br /&gt;Furthermore, lots of control lines increases the disturbances by Electromagnetic Interference (EMI) and Electrostatic Discharge (ESD).&lt;br /&gt;The bus is generally accepted in the industry as a de-facto standard. &lt;br /&gt;&lt;br /&gt;The I2C bus has been adopted by several leading chip manufacturers like Xicor, ST Microelectronics, Infineon Technologies, Intel, Texas Instruments, Maxim, Atmel, etc.. &lt;br /&gt;&lt;br /&gt;The I2C Bus Protocol:&lt;br /&gt;The I2C bus physically consists of 2 active wires and a ground connection.&lt;br /&gt;&lt;br /&gt;The active wires, called SDA and SCL, are both bi-directional. &lt;br /&gt;&lt;br /&gt;   SDA is the Serial Data line.&lt;br /&gt;   SCL is the Serial Clock line.&lt;br /&gt;Every device hooked up to the bus has its own unique address, no matter whether it is an MCU, LCD driver, memory, or ASIC.&lt;br /&gt;&lt;br /&gt;Each of these chips can act as a receiver and/or transmitter, depending on the functionality of the device. &lt;br /&gt; 1. LCD driver is only a receiver. &lt;br /&gt; 2. Memory or I/O chip can be both transmitter and receiver. &lt;br /&gt;The I2C bus is a multi-master bus.&lt;br /&gt;&lt;br /&gt;Means that more than one IC capable of initiating a data transfer. &lt;br /&gt;&lt;br /&gt;The I2C protocol specification states that, one who initiates a data transfer on the bus is considered the Bus Master and all the other Ic’s are slave.&lt;br /&gt;&lt;br /&gt;Bus masters are always intelligent Micro controller's.&lt;br /&gt;First, the MCU will issue a START condition. This acts as an 'Attention' signal to all of the connected devices.&lt;br /&gt;All ICs on the bus will listen to the bus for incoming data.&lt;br /&gt;The number of bytes that can be transmitted per transfer is unrestricted.&lt;br /&gt;Then the MCU sends the ADDRESS of the device it wants to access, along with an indication whether the access is a Read or Write flag.&lt;br /&gt;Having received the address, all IC's will compare it with their own address &lt;br /&gt;If it doesn't match, they simply wait until the bus is released by the stop condition of other data transfer.&lt;br /&gt;&lt;br /&gt;Each byte has to be followed by an acknowledgement bit.&lt;br /&gt;&lt;br /&gt; If the address matches, however, the chip will produce a response called the ACKNOWLEDGE signal. &lt;br /&gt;&lt;br /&gt;Once the MCU receives the acknowledge, it can start transmitting or receiving the second DATA.&lt;br /&gt;&lt;br /&gt;When all is done, the MCU will issue the STOP condition &lt;br /&gt;&lt;br /&gt;This is a signal that the bus has been released and that the connected ICs may expect another transmission to start any moment &lt;br /&gt;The data on the SDA line must be stable during the HIGH period of the clock. The HIGH or LOW state of the data line can only change when the clock signal on the SCL line is LOW.&lt;br /&gt;The start condition acts as a signal to all connected IC's that something is about to be transmitted (ADDRESS) on the bus. As a result, all connected chips will listen to the bus.&lt;br /&gt;&lt;br /&gt;After a message has been completed, a STOP condition is sent.&lt;br /&gt;&lt;br /&gt;This is the signal for all devices on the bus that the bus is available again.&lt;br /&gt;&lt;br /&gt; If a chip was accessed and has received data during the last                                                                                                                                                                                                                              transaction, it will now process this information. &lt;br /&gt;&lt;br /&gt;A Stop condition ALWAYS denotes the END of a transmission. Even it can be issued in the middle of a transaction or in the middle of a byte, in this case, it disregards the information sent and resumes the "listening state", waiting for a new start condition.&lt;br /&gt;&lt;br /&gt;A HIGH to LOW transition on the SDA line while SCL is HIGH is one such unique case. This situation indicates a START condition.&lt;br /&gt;  A LOW to HIGH transition on the SDA line while SCL is HIGH defines a STOP condition.&lt;br /&gt;  START and STOP conditions are always generated by the master.&lt;br /&gt;Once the start condition has been sent, a byte can be transmitted by the MASTER to the SLAVE&lt;br /&gt;&lt;br /&gt;This first byte after a start condition will identify the slave on the bus (address) and will select the mode of operation which is specified by the LSB.&lt;br /&gt;As the I2C bus gained popularity, it was soon discovered that the number of available addresses was too small. &lt;br /&gt;&lt;br /&gt;one of the reserved addresses has been allocated to a new task to switch to 10-bit addressing mode.&lt;br /&gt;&lt;br /&gt;If there are slaves on the bus that can operate in the extended 10-bit addressing mode, they will ALL respond with an ACK signal to the master.&lt;br /&gt;&lt;br /&gt;The second byte that gets transmitted by the master will then be taken in and evaluated against their address. &lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt; Even in 10-bit extended addressing mode, Bit 0 of the first byte after the Start condition determines the slave access mode ('1' = read / '0' = write). &lt;br /&gt;I2C has a master/slave protocol. The master initiates the communication. The sequence of events are:&lt;br /&gt;&lt;br /&gt;1. The Master device issues a start condition. This condition informs all the slave devices to listen on the serial data line for instructions.&lt;br /&gt; &lt;br /&gt;2. The Master device sends the address of the target slave device and a read/write flag.&lt;br /&gt; &lt;br /&gt;3. The Slave device with the matching address responds with an acknowledgement signal.&lt;br /&gt; &lt;br /&gt;4. Communication proceeds between the Master and the Slave on the data bus. Both the master and slave can receive or transmit data depending on whether the communication is a read or write. The transmitter sends 8-bits of data to the receiver which replies with a 1-bit acknowledgement.&lt;br /&gt; &lt;br /&gt;When the communication is complete, the master issues a stop condition indicating that everything is done.&lt;br /&gt;The I2C bus was originally developed as a multi-master bus. This means that more than one device initiating transfers can be active in the system.&lt;br /&gt;&lt;br /&gt;When using only one master on the bus there is no real risk of corrupted data, except if a slave device is malfunctioning or if there is a fault condition involving the SDA / SCL bus lines.&lt;br /&gt;&lt;br /&gt;This situation changes with 2 MCU's:   &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When MCU 1 issues a start condition and sends an address, all slaves will listen (including MCU 2 which at that time is considered a slave as well). If the address does not match the address of CPU 2, this device has to hold back any activity until the bus becomes idle again after a stop condition.&lt;br /&gt;&lt;br /&gt;As long as the two MCU's monitor what is going on on the bus (start and stop), there is no problem.&lt;br /&gt;&lt;br /&gt;Let's assume one of the MCU's missed the START condition and still thinks the bus is idle.&lt;br /&gt;&lt;br /&gt;How can you know if some other device is transmitting on the bus ?&lt;br /&gt;The physical bus setup helps us out.&lt;br /&gt;Since the bus structure is designed in such a way (if one device pulls a line low it stays low), you can test if the bus is idle or occupied.&lt;br /&gt;&lt;br /&gt;When a master changes the state of a line to HIGH, it MUST always check that the line really has gone to HIGH.&lt;br /&gt;&lt;br /&gt;If it stays low then this is an indication that the bus is occupied and some other device.&lt;br /&gt;&lt;br /&gt;If a master can't get a certain line to go high, it lost arbitration and needs to back off and wait until a stop condition.&lt;br /&gt;&lt;br /&gt;What about the risk of data corruption ?&lt;br /&gt;&lt;br /&gt;The problem of data corruption will occur if both the masters pulls the SDA low at the same time.&lt;br /&gt;&lt;br /&gt;The two MCU's are accessing a slave in write mode at address 1111001.&lt;br /&gt;The slave acknowledges this. So far, both masters are under the impression that they "own" the bus.&lt;br /&gt;&lt;br /&gt;MCU1 wants to transmit 01010101 to the slave. &lt;br /&gt;&lt;br /&gt;MCU2 wants to transmit 01100110 to the slave.&lt;br /&gt;&lt;br /&gt;The moment the data bits do not match anymore one of them loses arbitration and backs off.&lt;br /&gt;&lt;br /&gt;For as long as there has been no STOP present on the bus, it won't touch the bus and leave the SDA and SCL lines alone. &lt;br /&gt;&lt;br /&gt;The moment a STOP was detected, MCU2 can attempt to transmit again to acquire the owner ship of the bus again.&lt;br /&gt;All masters generate their own clock on the SCL line to transfer messages on the I2C-bus.&lt;br /&gt;&lt;br /&gt;Data is only valid during the HIGH period of the clock. &lt;br /&gt;&lt;br /&gt;A defined clock is therefore needed for the bit-by-bit arbitration procedure to take place.&lt;br /&gt;&lt;br /&gt;Clock synchronization is performed using the wired-AND connection of I2C interfaces to the SCL line.&lt;br /&gt;&lt;br /&gt;When all devices concerned have counted off their LOW period, the clock line will be released and go HIGH.&lt;br /&gt;&lt;br /&gt;There will then be no difference between the device clocks and the state of the SCL line, and all the devices will start counting their HIGH periods.&lt;br /&gt;The first device to complete its HIGH period will again pull the SCL line LOW.&lt;br /&gt;&lt;br /&gt;NOTE:&lt;br /&gt;A synchronized SCL clock is generated with its LOW period determined by the device with the longest clock LOW period.&lt;br /&gt;&lt;br /&gt;Its HIGH period determined by the one with the shortest clock HIGH period.&lt;br /&gt;&lt;br /&gt;Sync clock&lt;br /&gt;             &lt;br /&gt;Master clk&lt;br /&gt;&lt;br /&gt;Device clk&lt;br /&gt;&lt;br /&gt;Using the clock synchronizing mechanism as a handshake&lt;br /&gt;&lt;br /&gt;The I2C protocol  includes a synchronization mechanism which is  used as a handshake mechanism between slow and fast devices or between masters in a multi-master session&lt;br /&gt;&lt;br /&gt;When a slow slave (slow in terms of internal execution) is attached to the bus then problems may occur.&lt;br /&gt;&lt;br /&gt;This lead to duplication of data and corruption.&lt;br /&gt;&lt;br /&gt;The slave must have some means to tell the master that it is busy. It could of course simply not respond to the ACK cycle.&lt;br /&gt;&lt;br /&gt;This would cause the master to send a stop condition and retry.&lt;br /&gt;Think about an A/D converter. It might take some time for the conversion to complete.&lt;br /&gt;&lt;br /&gt;If the master would just go on it would be reading the result of the previous conversion instead of the newly acquired data. &lt;br /&gt;&lt;br /&gt;The synchronization mechanism is so simple, the mechanism works on the SCL line only. The slave that wants the master to wait simply pulls the SCL low as long as needed. &lt;br /&gt;&lt;br /&gt;This is like adding "wait states" to the I2C bus cycle. &lt;br /&gt;&lt;br /&gt;The master simply waits until it can get the SCL line to go HIGH and then just goes on with whatever it was doing .&lt;br /&gt;&lt;br /&gt;The drawback is speed. The bus is locked at that moment. If you have rather long delays (long conversion time in our example above), then this penalizes the total bus speed a lot.&lt;br /&gt;TRANSFERRING DATA&lt;br /&gt;Every byte put on the SDA line must be 8-bits long.&lt;br /&gt;&lt;br /&gt;The number of bytes that can be transmitted per transfer is unrestricted.&lt;br /&gt;&lt;br /&gt;Each byte has to be followed by an Acknowledgement bit.&lt;br /&gt;&lt;br /&gt;Data is transferred with the most significant bit first.&lt;br /&gt;&lt;br /&gt;If a slave can’t receive or transmit another complete byte of data until it has performed some other function, for example servicing an internal interrupt, it can hold the clock line SCL LOW to force the master into a wait state.&lt;br /&gt;Acknowledge:&lt;br /&gt;The receiver must pull down the SDA line during the acknowledge clock pulse so that it remains stable LOW during the HIGH period of this clock pulse .&lt;br /&gt;The Standard-mode I2C-bus specification, with its data transfer rate of up to 100 kbit/s and 7-bit addressing, has been in existence since the beginning of the 1980’s.&lt;br /&gt;&lt;br /&gt;To meet the demands for higher speeds, as well as make available more slave address for the growing number of new devices. The following changes were made.&lt;br /&gt;&lt;br /&gt;Fast-mode, with a bit rate up to 400 kbit/s.&lt;br /&gt;&lt;br /&gt;High-speed mode (Hs-mode), with a bit rate up to 3.4 Mbit/s.&lt;br /&gt;&lt;br /&gt;10-bit addressing, which allows the use of up to 1024 additional slave addresses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-2228217282162312624?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/2228217282162312624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/i2c-bus-standardinter-integrated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/2228217282162312624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/2228217282162312624'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/i2c-bus-standardinter-integrated.html' title='I2C Bus Standard,Inter Integrated Circuit Bus Standards'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EwvHoubUgBI/SubdKKex6QI/AAAAAAAAAns/EA-_Re_PA8o/s72-c/DAT+TR.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-5830242516498758571</id><published>2009-10-27T04:23:00.000-07:00</published><updated>2009-10-27T04:30:50.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PIC MicroController'/><title type='text'>PIC MicroController</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/SubZ49Z9WAI/AAAAAAAAAmc/53IsxiNstg8/s1600-h/MIPS+PIC32+Block+Diagram.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/SubZ49Z9WAI/AAAAAAAAAmc/53IsxiNstg8/s400/MIPS+PIC32+Block+Diagram.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5397240776029460482" /&gt;&lt;/a&gt;&lt;br /&gt;PIC MicroController Day_01&lt;br /&gt;&lt;br /&gt;Microprocessor:&lt;br /&gt;Requires ‘external’ support hardware.&lt;br /&gt;E.g., External RAM, ROM, Peripherals.&lt;br /&gt;Microcontroller:&lt;br /&gt;Very little external support hardware.&lt;br /&gt;Most RAM, ROM and peripherals on chip.&lt;br /&gt;“Computer on a chip”, or “System on chip” (SOC)&lt;br /&gt;E.g., PIC = Peripheral Interface Controller&lt;br /&gt;&lt;br /&gt;Microprocessor:&lt;br /&gt;We’re used to the Von-Neuman ArchitectureUsed in: 80X86 (PCs), 8051, 68HC11, etc.)&lt;br /&gt;Only one bus between CPU and memory&lt;br /&gt;RAM and program memory share the same bus and the same memory, and so must have the same bit width&lt;br /&gt;&lt;br /&gt;Microprocessor:&lt;br /&gt;PICs use the Harvard ArchitectureUsed mostly in RISC CPUs.&lt;br /&gt;Separate program bus and data bus: can be different widths!&lt;br /&gt;For example, PICs use:&lt;br /&gt;Data memory (RAM): a small number of  8bit registers&lt;br /&gt;Program memory (ROM): 12bit, 14bit or 16bit wide (in EPROM, FLASH, or ROM)&lt;br /&gt;Microprocessor:&lt;br /&gt;Traditionally, CPUs are “CISC”&lt;br /&gt;&lt;br /&gt;Complex Instruction Set Computer (CISC) &lt;br /&gt;Used in: 80X86, 8051, 68HC11, etc.&lt;br /&gt;Many instructions (usually &gt; 100)&lt;br /&gt;Many addressing modes&lt;br /&gt;Usually takes more than 1 internal clock cycle (Tcyc) to execute&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;Microprocessor:&lt;br /&gt;Traditionally, CPUs are “CISC”&lt;br /&gt;&lt;br /&gt;PICs and most Harvard chips are “RISC”&lt;br /&gt;&lt;br /&gt;Reduced Instruction Set Computer (RISC) &lt;br /&gt;Used in: SPARC, ALPHA, Atmel AVR, etc.&lt;br /&gt;Few instructions (usually &lt; 50)&lt;br /&gt;Only a few addressing modes&lt;br /&gt;Executes 1 instruction in 1 internal clock cycle (Tcyc) &lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;Microprocessor:&lt;br /&gt;Many Microcontrollers and DSP chips are “converging”&lt;br /&gt;Heading towards some mean between RISC and CISC&lt;br /&gt;&lt;br /&gt;Large CPU are adding microcontroller like options&lt;br /&gt;Small microcontrollers are getting more powerful, now able to do some DSP&lt;br /&gt;&lt;br /&gt;General trend: Smaller packages, less power consumption, faster&lt;br /&gt;&lt;br /&gt;PICs come with 1 of 4 CPU ‘cores’:&lt;br /&gt;&lt;br /&gt;12bit cores with 33 instructions: 12C50x, 16C5x&lt;br /&gt;14bit cores with 35 instructions: 12C67x,16Cxxx&lt;br /&gt;16bit cores with 58 instructions: 17C4x,17C7xx&lt;br /&gt;‘Enhanced’ 16bit cores with 77 instructions: 18Cxxx&lt;br /&gt;PICs come in a huge variety of packages:&lt;br /&gt;&lt;br /&gt;8 pin DIP : 12C50x (12bit) and 12C67x(14bit)&lt;br /&gt;&lt;br /&gt;18pin DIP:  16C5X (12bit), 16Cxxx (14bit)&lt;br /&gt;&lt;br /&gt;28pin DIP:  16C5X (12bit), 16Cxxx (14bit)&lt;br /&gt;&lt;br /&gt;40pin DIP:  16Cxxx (14bit), 17C4x (16bit)&lt;br /&gt;&lt;br /&gt;44 - 68pin: 16Cxxx (14bit), 17C4x/17Cxxx(16bit)&lt;br /&gt;PICs require a clock to work.&lt;br /&gt;Can use crystals, clock oscillators, or even an RC circuit.&lt;br /&gt;Some PICs have a built in 4MHz RC clock&lt;br /&gt;Not very accurate, but requires no external components!&lt;br /&gt;All PICs can be run to a maximum spec’d speed:         12C50x    4MHz&lt;br /&gt;12C67x  10MHz&lt;br /&gt;16Cxxx  20MHz&lt;br /&gt;17C4x / 17C7xxx 33MHz&lt;br /&gt;18Cxxx  40MHz&lt;br /&gt;PIC program space is different for each chip.&lt;br /&gt;Some examples are:&lt;br /&gt;12C508 512  12bit instructions&lt;br /&gt;16C71C 1024 (1k) 14bit instructions&lt;br /&gt;16F877 8192 (8k) 14bit instructions&lt;br /&gt;17C766 16384 (16k) 16bit instructions&lt;br /&gt;PICs have two different types of program storage:&lt;br /&gt;EPROM (Erasable Programmable Read Only Memory)&lt;br /&gt;Needs high voltage from a programmer to program (~13V)&lt;br /&gt;Needs windowed chips and UV light to erase&lt;br /&gt;PIC Examples: Any ‘C’ part: 12C50x, 17C7xx, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-5830242516498758571?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/5830242516498758571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/pic-microcontroller.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5830242516498758571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5830242516498758571'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/pic-microcontroller.html' title='PIC MicroController'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EwvHoubUgBI/SubZ49Z9WAI/AAAAAAAAAmc/53IsxiNstg8/s72-c/MIPS+PIC32+Block+Diagram.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-1031849194764693989</id><published>2009-10-27T04:18:00.000-07:00</published><updated>2009-10-27T04:23:01.514-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PIC MICROCONTROLLER 16F877A SCHEMATIC'/><title type='text'>PIC MICROCONTROLLER 16F877A SCHEMATIC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/SubYC6_dnWI/AAAAAAAAAmU/5Fp0fTokcI4/s1600-h/pickit_schamatic4.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/SubYC6_dnWI/AAAAAAAAAmU/5Fp0fTokcI4/s400/pickit_schamatic4.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5397238748156894562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/SubYCosW9PI/AAAAAAAAAmM/3p1lOA8Pg7c/s1600-h/pickit_schamatic3.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 324px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/SubYCosW9PI/AAAAAAAAAmM/3p1lOA8Pg7c/s400/pickit_schamatic3.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5397238743244928242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EwvHoubUgBI/SubYCDv7o1I/AAAAAAAAAmE/ZtFFpa0pWcU/s1600-h/pickit_schamatic2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 287px;" src="http://4.bp.blogspot.com/_EwvHoubUgBI/SubYCDv7o1I/AAAAAAAAAmE/ZtFFpa0pWcU/s400/pickit_schamatic2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5397238733327803218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EwvHoubUgBI/SubYB45OVHI/AAAAAAAAAl8/gq41D9bY63g/s1600-h/pickit_schamatic1.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://2.bp.blogspot.com/_EwvHoubUgBI/SubYB45OVHI/AAAAAAAAAl8/gq41D9bY63g/s400/pickit_schamatic1.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5397238730413986930" /&gt;&lt;/a&gt;&lt;br /&gt;PIC MICROCONTROLLER 16F877A SCHEMATIC&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-1031849194764693989?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/1031849194764693989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/pic-microcontroller-16f877a-schematic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/1031849194764693989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/1031849194764693989'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/pic-microcontroller-16f877a-schematic.html' title='PIC MICROCONTROLLER 16F877A SCHEMATIC'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EwvHoubUgBI/SubYC6_dnWI/AAAAAAAAAmU/5Fp0fTokcI4/s72-c/pickit_schamatic4.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-691369725134453771</id><published>2009-10-27T04:16:00.000-07:00</published><updated>2009-10-27T04:18:15.116-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Airtel C Programming Code'/><title type='text'>Airtel C Programming Code</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/SubW5zZlaUI/AAAAAAAAAl0/svHbUAqXuqk/s1600-h/airtel-broadband.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/SubW5zZlaUI/AAAAAAAAAl0/svHbUAqXuqk/s400/airtel-broadband.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5397237491988523330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;#include&lt;dos.h&gt;&lt;br /&gt;#include&lt;stdio.h&gt;&lt;br /&gt;float main(void)&lt;br /&gt;{&lt;br /&gt;float A,Bb,D,G,F;&lt;br /&gt;A = 440;&lt;br /&gt;G = 780;&lt;br /&gt;Bb = 461;&lt;br /&gt;D = 586;&lt;br /&gt;F = 687;&lt;br /&gt;sound(G);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*D);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*Bb);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(F);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(F);&lt;br /&gt;delay(250);&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;sound(2*Bb);&lt;br /&gt;delay(500);&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(500);&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;sound(F);&lt;br /&gt;delay(250);&lt;br /&gt;sound(D);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;//end 1&lt;br /&gt;sound(G);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*D);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*Bb);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(F);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(F);&lt;br /&gt;delay(250);&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;sound(2*Bb);&lt;br /&gt;delay(500);&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(500);&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;sound(F);&lt;br /&gt;delay(250);&lt;br /&gt;sound(D);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;//end 2&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(F);&lt;br /&gt;delay(250);&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;sound(2*Bb);&lt;br /&gt;delay(500);&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(500);&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;sound(F);&lt;br /&gt;delay(250);&lt;br /&gt;sound(D);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;//end 3&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;nosound();&lt;br /&gt;sound(F);&lt;br /&gt;delay(250);&lt;br /&gt;sound(G);&lt;br /&gt;delay(250);&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(250);&lt;br /&gt;sound(2*Bb);&lt;br /&gt;delay(500);&lt;br /&gt;sound(2*A);&lt;br /&gt;delay(500);&lt;br /&gt;sound(G);Airtel C Programming Code&lt;br /&gt;delay(250);&lt;br /&gt;sound(F);&lt;br /&gt;delay(250);&lt;br /&gt;sound(D);&lt;br /&gt;delay(500);&lt;br /&gt;nosound();&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;Copy paste the aboce code into your C compiler and just execute!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-691369725134453771?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/691369725134453771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/airtel-c-programming-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/691369725134453771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/691369725134453771'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/airtel-c-programming-code.html' title='Airtel C Programming Code'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EwvHoubUgBI/SubW5zZlaUI/AAAAAAAAAl0/svHbUAqXuqk/s72-c/airtel-broadband.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-2883186893267132501</id><published>2009-10-26T00:34:00.000-07:00</published><updated>2009-10-26T00:36:50.739-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SINGLE BOARD COMPUTER PROJECT REPORT'/><title type='text'>SINGLE BOARD COMPUTER PROJECT REPORT</title><content type='html'>SYNOPSIS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The main aim of the project is to control the whole system in a single module .In this project RTC(Real Time Clock), ADC,Serial Communication, Calculator are design and develop in a single module. In this Project the Real Time Clock is to show the current Time and Date, month Year Everything display in the LCD Screen. Then the other Module ADC Part 12bit Resolution, any given analog input is given the corresponding digital output is converted, and display in the LCD Screen.&lt;br /&gt;&lt;br /&gt;Then the Serial communication part the string “HELLO” is Serially transmitted for the baud rate 9600. In this serial communication section any wireless protocol like ZIGBEE or R.F, Blue tooth and other protocol is used to receive same Baud Rate the Original Transmitted string is receive and display in the LCD Screen.&lt;br /&gt;The main part of the Project is Calculator in this calculator part the Two operations like Addition and Subtraction is successfully developed. In this calculator section single bit addition, subtraction is done with a fraction of a second. In this all application module is control by the 3*4 matrix keypad, the key 1 is pressed the calculator operation is run, key 2 is pressed ADC, Key 3 Serial Communication, Key 4 RTC Vice Versa.,&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CONTENTS&lt;br /&gt;                                        &lt;br /&gt;CHAPTER 1   :     INTRODUCTION                 Page No&lt;br /&gt;&lt;br /&gt;1.1 Objective          1&lt;br /&gt;1.2 General Block Diagram              1&lt;br /&gt;1.3 Domain of the Project        2&lt;br /&gt;          1.4 Components Required          2 &lt;br /&gt;1.5 Introduction to Embedded System      3&lt;br /&gt;&lt;br /&gt;                         CHAPTER 2   :     MICROCONTROLLER   &lt;br /&gt; &lt;br /&gt;2.1General Description                                                              5      &lt;br /&gt;2.2 Features                     6&lt;br /&gt;     2.3 Block Diagram                                                                     7                &lt;br /&gt;          2.4 Pin Diagram and Description                                  8&lt;br /&gt;          2.5 Special Function Register &amp; Timers                11&lt;br /&gt; 2.6 Flash Organization &amp; Functional Description                                  12&lt;br /&gt; &lt;br /&gt;CHAPTER 3   :     RAISONANCE INTEGRATED &lt;br /&gt;DEVELOPMENT ENVIRONMENT (RIDE)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   3.1 Multi-file Editor                      16&lt;br /&gt;   3.2 Project Manager                        16 &lt;br /&gt;             3.3 Advanced Features                                                                       19&lt;br /&gt;                         &lt;br /&gt;CHAPTER 4       :     FLASH MAGIC&lt;br /&gt;&lt;br /&gt;4.1 Introduction                                                                         21 &lt;br /&gt;4.2 Minimum requirements                                           22&lt;br /&gt;         4.3 Main Window                                                           22                &lt;br /&gt;             4.4 Five Step Programming                                  24&lt;br /&gt;&lt;br /&gt;CHAPTER 5    :   TEMPERATURE SENSOR – LM35&lt;br /&gt;&lt;br /&gt;           5.1 Description                                              31&lt;br /&gt; 5.2 Features                  31 &lt;br /&gt; 5.3 Sensor Operation                         32 &lt;br /&gt; 5.4 Advantages                          32&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;CHAPTER 6   :    A/D CONVERTER – MCP3202&lt;br /&gt;&lt;br /&gt; 6.1 General Description               34&lt;br /&gt; 6.2 Features                                   34 &lt;br /&gt;           6.3 Pin Diagram                34&lt;br /&gt;           6.4 Functional Diagram               35&lt;br /&gt;  6.5 ADC Serial Communication             37&lt;br /&gt;           6.6 Applications                38&lt;br /&gt;&lt;br /&gt;CHAPTER 7    : REAL TIME CLOCK  DS1307&lt;br /&gt;&lt;br /&gt; 7.1 General Description               40&lt;br /&gt; 7.2 Features                                   40 &lt;br /&gt;           7.3 Pin Diagram                40&lt;br /&gt;           7.4 Functional Diagram               42&lt;br /&gt;  7.5 Communication                43&lt;br /&gt;           &lt;br /&gt;CHAPTER 8  :  SERIAL PERIPHERAL INTERFACE (SPI)&lt;br /&gt;                 &lt;br /&gt; 8.1 Introduction                                                                               46            &lt;br /&gt;           8.2 SPI Bus Configuration                                                                 46&lt;br /&gt;  8.3 SPI Registers                                                         48&lt;br /&gt;           8.4 SPI Advantages and Disadvantages                                    49  &lt;br /&gt;&lt;br /&gt;                       &lt;br /&gt; &lt;br /&gt;CHAPTER 9     :  INTER –INTEGRATED CIRCUIT (I2C)&lt;br /&gt;                 &lt;br /&gt; 9.1 Introduction                                                                               51            &lt;br /&gt;           9.2 I2C Bus Configuration                                                                 51&lt;br /&gt;  9.3 I2C Communication                                           52&lt;br /&gt;           9.4 I2C Implementation types                      52&lt;br /&gt;              &lt;br /&gt;CHAPTER 10   :   CIRCUIT DIAGRAM WITH OPERATION&lt;br /&gt;&lt;br /&gt;             10.1 Circuit Diagram               57&lt;br /&gt;            10.2 Operation              58&lt;br /&gt;            10.3 Program Coding                                                                          59 &lt;br /&gt; 10.4 Conclusion                                   73 &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 1&lt;br /&gt;&lt;br /&gt;INTRODUCTION&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;INTRODUCTION&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.1 OBJECTIVE&lt;br /&gt;&lt;br /&gt;The objective of this project is to perform four type of task one is Real Time Clock, Adc, Serial Communication, Calculator and the other using I2C Protocol.&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;1.2 GENERAL BLOCK DIAGRAM&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                                                                         &lt;br /&gt;                                                                                                                                                         &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.3 DOMAIN OF THE PROJECT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AT89S52 Microcontroller acts as the heart of the project which has its own in built memory for the controlling operation.. LM35 is used as a temperature sensor that senses the appropriate temperature level in 0 C .MCP 3202 A/D converter is used for analog signal to digital signal conversion. DS1307 is used as a real time clock, which counts seconds, minutes, hours, date, day, month and year. Keypad using to perform Calculator Function, LCD is used to display the message.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.4 COMPONENTS REQUIRED&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HARDWARE:&lt;br /&gt; AT89S52 (Micro controller)&lt;br /&gt; LM35&lt;br /&gt; MCP 3202&lt;br /&gt; DS1307&lt;br /&gt; Power Supply&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOFTWARE  &lt;br /&gt; RIDE v6.1.6&lt;br /&gt; Flash magic v3.21.116&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; 1.5 INTRODUCTION TO EMBEDDED SYSTEM&lt;br /&gt;&lt;br /&gt;Embedded System is one that has computer- hardware with software embedded in it as one of its most important component.&lt;br /&gt;&lt;br /&gt; CHARACTERISTICS&lt;br /&gt;&lt;br /&gt; Efficient reliability&lt;br /&gt; Small size&lt;br /&gt; Low cost&lt;br /&gt; High performance&lt;br /&gt; Easy upgradeability&lt;br /&gt;&lt;br /&gt; TYPES OF EMBEDDED SYSTEMS&lt;br /&gt; &lt;br /&gt; Small scale&lt;br /&gt; Medium scale&lt;br /&gt; Large scale&lt;br /&gt;&lt;br /&gt; APPLICATIONS OF EMBEDDED SYSTEM&lt;br /&gt;&lt;br /&gt; Household appliances including microwave ovens, washing machines, television sets, DVD players/recorders&lt;br /&gt; Measurement equipment such as digital storage oscilloscopes, logic analyzers, and spectrum analyzers&lt;br /&gt; Programmable logic controllers (PLCs) for industrial automation and monitoring&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;CHAPTER 2&lt;br /&gt;&lt;br /&gt;AT89S52  MICRO CONTROLLER &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;  AT89S52  MICRO CONTROLLER&lt;br /&gt;&lt;br /&gt;2.1 GENERAL DESCRIPTION&lt;br /&gt;&lt;br /&gt;The AT89S8252 is a low-power, high-performance CMOS 8-bit microcomputer with 8K bytes of downloadable Flash programmable and erasable read only memory and 2K bytes of EEPROM. The device is manufactured using Atmel’s high-density nonvol-atile memory technology and is compatible with the industry-standard 80C51 instruction set and pinout. &lt;br /&gt;&lt;br /&gt;The on-chip downloadable Flash allows the program mem-ory to be reprogrammed in-system through an SPI serial interface or by a conventional nonvolatile memory programmer. By combining a versatile 8-bit CPU with downloadable Flash on a monolithic chip, the Atmel AT89S8252 is a powerful microcomputer which provides a highly-flexible and cost-effective solution to many embedded control applications. &lt;br /&gt;&lt;br /&gt;The AT89S8252 provides the following standard features: 8K bytes of downloadable Flash, 2K bytes of EEPROM, 256 bytes of RAM, 32 I/O lines, programmable watch-dog timer, two data pointers, three 16-bit timer/counters, a six-vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator, and clock circuitry. &lt;br /&gt;&lt;br /&gt;In addition, the AT89S8252 is designed with static logic for operation down to zero fre-quency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port, and interrupt sys-tem to continue functioning. The Power-down mode saves the RAM contents but freezes the oscillator, disabling all other chip functions until the next interrupt or hard-ware reset. &lt;br /&gt;&lt;br /&gt; The downloadable Flash can be changed a single byte at a time and is accessible through the SPI serial interface. Holding RESET active forces the SPI bus into a serial programming interface and allows the program memory to be written to or read from unless Lock Bit 2 has been activated. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;2.2 FEATURES&lt;br /&gt;• Compatible with MCS-51™ Products  8K Bytes of In-System Reprogrammable Downloadable Flash Memory &lt;br /&gt;&lt;br /&gt;– SPI Serial Interface for Program Downloading &lt;br /&gt;– Endurance: 1,000 Write/Erase Cycles &lt;br /&gt;•  2K Bytes EEPROM &lt;br /&gt;– Endurance: 100,000 Write/Erase Cycles &lt;br /&gt;&lt;br /&gt;•  4V to 6V Operating Range &lt;br /&gt;&lt;br /&gt;•  Fully Static Operation: 0 Hz to 24 MHz &lt;br /&gt;&lt;br /&gt;•  Three-level Program Memory Lock &lt;br /&gt;&lt;br /&gt;•  256 x 8-bit Internal RAM &lt;br /&gt;&lt;br /&gt;•  32 Programmable I/O Lines &lt;br /&gt;&lt;br /&gt;•  Three 16-bit Timer/Counters &lt;br /&gt;&lt;br /&gt;•  Nine Interrupt Sources &lt;br /&gt;&lt;br /&gt;•  Programmable UART Serial Channel &lt;br /&gt;&lt;br /&gt;•  SPI Serial Interface &lt;br /&gt;&lt;br /&gt;•  Low-power Idle and Power-down Modes &lt;br /&gt;&lt;br /&gt;• Interrupt Recovery From Power-down &lt;br /&gt;&lt;br /&gt;•  Programmable Watchdog Timer &lt;br /&gt;&lt;br /&gt;•  Dual Data Pointer &lt;br /&gt;&lt;br /&gt;•  Power-off Flag &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.3 BLOCK DIAGRAM&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.4 PIN DIAGRAM AND DESCRIPTION&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PIN DESCRIPTION&lt;br /&gt;VCC :Supply voltage. &lt;br /&gt;&lt;br /&gt;GND :Ground. &lt;br /&gt;&lt;br /&gt;PORT 0 &lt;br /&gt;&lt;br /&gt;Port 0 is an 8-bit open drain bbi-didirectional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as high-impedance inputs.  &lt;br /&gt;Port 0 can also be configured to be the multiplexed low-order address/data bus during accesses to external program and data memory. In this mode, P0 has internal pullups. Port 0 also receives the code bytes during Flash program-ming and outputs the code bytes during program verification. External pullups are required during program verification.  &lt;br /&gt;&lt;br /&gt;PORT 1 &lt;br /&gt;Port 1 is an 8-bit bi-directional I/O port with internal pullups. The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pullups. Some Port 1 pins provide additional functions. P1.0 and P1.1 can be configured to be the timer/counter 2 external count input (P1.0/T2) and the timer/counter 2 trigger input (P1.1/T2EX), respectively. Port 1 also receives the low-order address bytes during Flash programming and verification&lt;br /&gt;  &lt;br /&gt;PORT 2&lt;br /&gt;Port 2 is an 8-bit bi-directional I/O port with internal pullups.The Port 2 output buffers can sink/source four TTL inputs.When 1s are written to Port 2 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 2 pins that are externally being pulled low will source current (IIL) because of the internal pullups. Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses (MOVX @ DPTR). In this application, Port 2 uses strong internal pul-lups when emitting 1s. During accesses to external data memory that use 8-bit addresses (MOVX @ RI), Port 2 emits the contents of the P2 Special Function Register. Port 2 also receives the high-order address bits and some control signals during Flash programming and verification.  &lt;br /&gt;&lt;br /&gt;PORT 3&lt;br /&gt;Port 3 is an 8 bit bi-directional I/O port with internal pullups.The Port 3 output buffers can sink/source four TTL inputs.When 1s are written to Port 3 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs,Port 3 pins that are externally being pulled low will source current (IIL) because of the pullups. Port 3 also receives some control signals for Flash pro-gramming and verification. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PROGRAM STORE ENABLE&lt;br /&gt;PSEN is the read strobe for external program memory. When the device is executing from internal program memory, PSEN is inactive (HIGH). When the device is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory. &lt;br /&gt;RESET&lt;br /&gt;While the oscillator is running, a HIGH logic state on this pin for two machine cycles will reset the device. If the PSEN pin is driven by a HIGH-to-LOW input transition while the RST input pin is held HIGH, the device will enter the external host mode; otherwise the device will enter the normal operation mode.&lt;br /&gt;EXTERNAL ACCESS ENABLE&lt;br /&gt; EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH, if lock bit 1 is programmed, EA will be internally latched on reset. EA should be strapped to VCC for internal program execu-tions. This pin also receives the 12-volt programming enable voltage (VPP) during Flash programming when 12-volt programming is selected. &lt;br /&gt;ADDRESS LATCH ENABLE&lt;br /&gt;ALE is the output signal for latching the low byte of the address during an access to external memory. This pin is also the programming pulse input (PROG) for flash programming. Normally the ALE is emitted at a constant rate of 1/6 the crystal frequency and can be used for external timing and clocking. One ALE pulse is skipped during each access to external data memory. However, if AO is set to ‘1’, ALE is disabled.&lt;br /&gt;XTAL1 &lt;br /&gt;&lt;br /&gt;Input to the inverting oscillator amplifier and input to the internal clock operating circuit.  &lt;br /&gt;XTAL2 &lt;br /&gt;Output from the inverting oscillator amplifier. &lt;br /&gt; &lt;br /&gt;2.5 SPECIAL FUNCTION REGISTER &amp; TIMERS&lt;br /&gt;2.5.1 SPECIAL FUNCTION REGISTER&lt;br /&gt;SPI Registers &lt;br /&gt;Control and status bits for the Serial Periph-eral Interface are contained in registers SPCR (shown in Table 4) and SPSR (shown in Table 5). The SPI data bits are contained in the SPDR register. Writing the SPI data register during serial data transfer sets the Write Collision bit, WCOL, in the SPSR register. The SPDR is double buff-ered for writing and the values in SPDR are not changed by Reset. &lt;br /&gt;Interrupt Registers &lt;br /&gt;The global interrupt enable bit and the individual interrupt enable bits are in the IE register. In addition, the individual interrupt enable bit for the SPI is in the SPCR register. Two priorities can be set for each of the six interrupt sources in the IP register. &lt;br /&gt;Dual Data Pointer Registers &lt;br /&gt;To facilitate accessing both internal EEPROM and external data memory, two banks of 16 bit Data Pointer Registers are provided: DP0 at SFR address locations 82H-83H and DP1 at 84H-85H. Bit DPS = 0 in SFR WMCON selects DP0 and DPS = 1 selects DP1. The user should always initialize the DPS bit to the appropriate value before accessing the respective Data Pointer Register. &lt;br /&gt;Power Off Flag  &lt;br /&gt;The Power Off Flag (POF) is located at bit_4 (PCON.4) in the PCON SFR. POF is set to “1” during power up. It can be set and reset under software control and is not affected by RESET. &lt;br /&gt;&lt;br /&gt;2.5.2 TIMERS&lt;br /&gt;Programmable Watchdog Timer &lt;br /&gt;The programmable Watchdog Timer (WDT) operates from an independent oscillator. The prescaler bits, PS0, PS1 and PS2 in SFR WMCON are used to set the period of the Watchdog Timer from 16 ms to 2048 ms. The available timer periods are shown in the following table and the actual timer periods (at VCC = 5V) are within ±30% of the nominal. The WDT is disabled by Power-on Reset and during Power-down. It is enabled by setting the WDTEN bit in SFR WMCON (address = 96H). The WDT is reset by setting the WDTRST bit in WMCON. When the WDT times out without being reset or disabled, an internal RST pulse is generated to reset the CPU.  &lt;br /&gt;Timer 0 and 1 &lt;br /&gt;&lt;br /&gt;Timer 0 and Timer 1 in the AT89S8252 operate the same way as Timer 0 and Timer 1 in the AT89C51, AT89C52 and AT89C55. &lt;br /&gt;&lt;br /&gt;Timer 2 &lt;br /&gt;&lt;br /&gt;Timer 2 is a 16 bit Timer/Counter that can operate as either a timer or an event counter. The type of operation is selected by bit C/T2 in the SFR T2CON (shown in Table 2). Timer 2 has three operating modes: capture, auto-reload (up or down counting), and baud rate generator. The modes are selected by bits in T2CON, as shown in Table 8. Timer 2 consists of two 8-bit registers, TH2 and TL2. In the Timer function, the TL2 register is incremented every machine cycle. Since a machine cycle consists of 12 oscil-lator periods, the count rate is 1/12 of the oscillator frequency. &lt;br /&gt;&lt;br /&gt;2.6 MEMORY ORGANIZATION &lt;br /&gt;Programming the Flash and EEPROM &lt;br /&gt;Atmel’s AT89S8252 Flash Microcontroller offers 8K bytes of in-system reprogrammable Flash Code memory and 2K bytes of EEPROM Data memory. The AT89S8252 is normally shipped with the on-chip Flash Code and EEPROM Data memory arrays in the erased state (i.e. contents = FFH) and ready to be programmed. This device supports a High-voltage (12V) Parallel pro-gramming mode and a Low-voltage (5V) Serial programming mode. The serial programming mode pro-vides a convenient way to download the AT89S8252 inside the user’s system. The parallel programming mode is com-patible with conventional third party Flash or EPROM programmers. &lt;br /&gt;&lt;br /&gt;The Code and Data memory arrays are mapped via sepa-rate address spaces in the serial programming mode. In the parallel programming mode, the two arrays occupy one contiguous address space: 0000H to 1FFFH for the Code array and 2000H to 27FFH for the Data array. &lt;br /&gt;&lt;br /&gt;The Code and Data memory arrays on the AT89S8252 are programmed byte-by-byte in either programming mode. An auto-erase cycle is provided with the self-timed program-ming operation in the serial programming mode. There is no need to perform the Chip Erase operation to reprogram any memory location in the serial programming mode unless any of the lock bits have been programmed. &lt;br /&gt;&lt;br /&gt;In the serial programming mode, a chip erase operation is initiated by issuing the Chip Erase instruction. In this mode, chip erase is self-timed and takes about 16 ms. During chip erase, a serial read from any address location will return 00H at the data outputs. In the parallel programming mode, there is no auto-erase cycle. To reprogram any non-blank byte, the user needs to use the Chip Erase operation first to erase both arrays&lt;br /&gt;&lt;br /&gt; Programming Interface &lt;br /&gt;Every code byte in the Flash and EEPROM arrays can be written, and the entire array can be erased, by using the appropriate combination of control signals. The write oper-ation cycle is self-timed and once initiated, will automatically time itself to completion. &lt;br /&gt;&lt;br /&gt;Serial Programming Algorithm &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To program and verify the AT89S8252 in the serial pro-gramming mode, the following sequence is recommended: &lt;br /&gt;1. Power-up sequence: Apply power between VCC and GND pins. &lt;br /&gt;Set RST pin to “H”. &lt;br /&gt;If a crystal is not connected across pins XTAL1 and XTAL2, apply a 3 MHz to 24 MHz clock to XTAL1 pin and wait for at least 10 milliseconds. &lt;br /&gt;&lt;br /&gt;2. Enable serial programming by sending the Pro-gramming Enable serial instruction to pin  MOSI/P1.5. The frequency of the shift clock sup-plied at pin SCK/P1.7 needs to be less than the  CPU clock at XTAL1 divided by 40. &lt;br /&gt;&lt;br /&gt;3. The Code or Data array is programmed one byte at  a time by supplying the address and data together  with the appropriate Write instruction. The selected  memory location is first automatically erased before  new data is written. The write cycle is self-timed and  typically takes less than 2.5 ms at 5V. &lt;br /&gt;&lt;br /&gt;4. Any memory location can be verified by using the  Read instruction which returns the content at the  selected address at serial output MISO/P1.6. &lt;br /&gt;&lt;br /&gt;5. At the end of a programming session, RST can be  set low to commence normal operation. &lt;br /&gt;      Power-off sequence (if needed): Set XTAL1 to “L” (if a crystal is not used). &lt;br /&gt;Set RST to “L”. &lt;br /&gt;Turn VCC power off.&lt;br /&gt; The data RAM has 1024 bytes of internal memory. &lt;br /&gt;The device can also address up to 64 Kb for external data memory.&lt;br /&gt;&lt;br /&gt;Serial Downloading &lt;br /&gt;Both the Code and Data memory arrays can be pro-grammed using the serial SPI bus while RST is pulled to VCC. The serial interface consists of pins SCK, MOSI (input) and MISO (output). After RST is set high, the Programming Enable instruction needs to be executed first before pro-gram/erase operations can be executed. An auto-erase cycle is built into the self-timed programming operation (in the serial mode ONLY) and there is no need to first execute the Chip Erase instruction unless any of the lock bits have been programmed. The Chip Erase opera-tion turns the content of every memory location in both the Code and Data arrays into FFH. The Code and Data memory arrays have separate address spaces&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 3&lt;br /&gt;&lt;br /&gt;RAISONANCE INTEGRATED DEVELOPMENT  ENVIRONMENT (RIDE)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RAISONANCE INTEGRATED DEVELOPMENT ENVIRONMENT&lt;br /&gt;(RIDE)&lt;br /&gt;RIDE is a fully featured Integrated Development Environment that provides seamless integration and easy access to all the development tools. From editing to compiling, linking, debugging and back to the start, with a Simulator, ICE, Rom Monitor or other debugging tool, RIDE conveniently manages all aspects of the Embedded Systems development with a single user interface.&lt;br /&gt;3.1 MULTI-FILE EDITOR&lt;br /&gt;&lt;br /&gt;RIDE is based on a fast multi-document editor designed to meet the specific needs of programming. The various methods, menus, commands, and shortcuts are all fully compliant with the Microsoft® specifications for Windows 2000, XP and NT. Classic commands, such as string search and block action are integrated. Advanced features such as Matching Delimiter (parenthesis, brackets), Grep (multi-file search) and Indenter are integrated as well. The customizable color-highlighting feature is very useful to indicate specific syntactic elements as they appear in the source file: keywords, comments, identifiers, operators, and so on. The color-highlighting feature is automatically keyed to the intrinsic file type (that is, it works differently for C and assembler).This permits the user to identify quickly and easily those parts of the code responsible for syntax errors.&lt;br /&gt;&lt;br /&gt;3.2 PROJECT MANAGER&lt;br /&gt;&lt;br /&gt;The project manager creates links between the various files that comprise a project and the tools necessary to create that project. A project is dedicated to a particular target: 8051, XA, ST7, STR7, ST6, ST5 or other microcontrollers. The linker manages object and library files, and output format conversion as necessary. Tree-structured projects ease the management of the most complex applications (bank switching, flash, multi-processor, multi-module…).&lt;br /&gt;The 'Project | Make' command directs the integrated "make" utility to build or rebuild the target programs for the current project. To avoid wasting time, each source file will be translated by its associated tool only if any of its dependencies are found to be out of date. Dependency analysis, even of directly or indirectly included files, is automatic. Options can be defined as global (for all the files) or as local (for a specific node or file). Individual attributes can be set for any file in the project. Similarities between the different tools make migration from one processor family to another immediate and easy, permitting multi-processor.&lt;br /&gt;&lt;br /&gt;3.2.1 THE MESSAGE WINDOW AND THE ON-LINE HELP&lt;br /&gt;The message window displays all warning, error, and progress messages generated during the processing of files associated with each project. Clicking on an error string in the message window automatically positions the cursor at the point of that error in the source code window.&lt;br /&gt; &lt;br /&gt;Online Help Menu&lt;br /&gt;The Online help system is context-sensitive and provides information on nearly all aspects of RIDE. A specific help file is supplied with each tool driven by the IDE ('C' Compiler, Assembler, Linker and RTOS).Online menu hints appear on the status line whenever you select a menu command.&lt;br /&gt;3.2.2 THE SCRIPT LANGUAGE&lt;br /&gt;&lt;br /&gt;Most RIDE commands can be run from a script file. Scripts are written in a C-like language, and are interpreted at execution time. With the script language, most repetitive tasks can be done automatically thus speeding up operations and reducing the probability of errors.&lt;br /&gt;&lt;br /&gt;Scripts are very useful for Hardware Testing (board, emulator) and to initialize the system to a known status, but can be conveniently used also for other tasks such as creating very complex breakpoints or redirecting some output to a file to run a 'batch' debug session.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CONTEXT SAVING &lt;br /&gt;&lt;br /&gt; When a project is closed, the whole associated context is saved (open file list, window size and position etc...).Settings associated with the debugger are also saves such as breakpoints, watches etc...&lt;br /&gt;3.2.3 INTEGRATED HIGH-LEVEL DEBUG&lt;br /&gt;RIDE provides a fully integrated source-level debugging environment. All information necessary is derived from the translators used to accomplish each step of the process. This is the heart of RIDE,&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Program Window&lt;br /&gt;This includes mundane aspects such as "path names", and source code specific information such as details of complex data types. With the simple click of a mouse button, the user can select among several powerful capabilities: simulate, monitor, or emulate. The fast smooth integration afforded by RIDE promotes a feeling of familiarity and ease of use, while providing a level of comfort and efficiency that reduces the most difficult and complex applications to tasks that are easily managed.&lt;br /&gt;This seamless progression of the "code-translate-link-debug-test" cycle is the result of perfect communication between the programming tools and the debugger. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.2.4. INTEGRAL SIMULATION&lt;br /&gt;RIDE includes simulation engines for most 8051, XA and ST6 derivatives. The simulator/debugger is cleanly integrated into the presentation Windows. A wide range of 'views' can be selected to provide flexible direct examination of all memory spaces as well the all internal peripherals.&lt;br /&gt;The simulation engines perform detailed and faithful simulations (including IDLE or Power down modes), of all peripherals—including interrupt and watchdog events—present on the selected component.&lt;br /&gt;3.3 ADVANCED FEATURES&lt;br /&gt;RIDE provides a rich variety of 'views' into an application. These views or windows are associated with control commands like complex breakpoints or high level trace recording.&lt;br /&gt;  &lt;br /&gt;Trace Window&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 4&lt;br /&gt;&lt;br /&gt;FLASH MAGIC&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FLASH MAGIC&lt;br /&gt;&lt;br /&gt;4.1 INTRODUCTION&lt;br /&gt;&lt;br /&gt;NXP Semiconductors produce a range of Microcontrollers that feature both on-chip Flash memory and the ability to be reprogrammed using In-System Programming technology.&lt;br /&gt;&lt;br /&gt;Flash Magic is Windows software from the Embedded Systems Academy that allows easy access to all the ISP features provided by the devices. These features include,&lt;br /&gt;&lt;br /&gt; Erasing the Flash memory (individual blocks or the whole device)&lt;br /&gt; Programming the Flash memory&lt;br /&gt; Modifying the Boot Vector and Status Byte&lt;br /&gt; Reading Flash memory&lt;br /&gt; Performing a blank check on a section of Flash memory&lt;br /&gt; Reading the signature bytes&lt;br /&gt; Reading and writing the security bits&lt;br /&gt; Direct load of a new baud rate (high speed communications)&lt;br /&gt; Sending commands to place device in Boot loader mode&lt;br /&gt;&lt;br /&gt;Flash Magic provides a clear and simple user interface to these features and more as described in the following sections. Under Windows, only one application may have access the COM Port at any one time, preventing other applications from using the COM Port.&lt;br /&gt;&lt;br /&gt;Flash Magic only obtains access to the selected COM Port when ISP operations are being performed. This means that other applications that need to use the COM Port, such as debugging tools, may be used while Flash Magic is loaded. Note that in this manual third party Compilers are listed alphabetically. No preferences are indicated or implied.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.2 MINIMUM REQUIREMENTS&lt;br /&gt;&lt;br /&gt; Windows 95/98/ME/NT/2000/XP&lt;br /&gt; Mouse&lt;br /&gt; COM Port&lt;br /&gt; 16Mb RAM&lt;br /&gt; 3Mb Disk Space&lt;br /&gt;&lt;br /&gt;4.3 MAIN WINDOW&lt;br /&gt;&lt;br /&gt;The following is a screenshot of the main Flash Magic window. The appearance may differ slightly depending on the device selected. The window is divided up into five sections. Work your way from section 1 to section 5 to program a device using the most common functions. Each section is described in detail in the following sections. At the very bottom left of the window is an area where progress messages will be displayed and at the very bottom right is where the progress bar is displayed.&lt;br /&gt; &lt;br /&gt;Main Window&lt;br /&gt;&lt;br /&gt;In between the messages and the progress bar is a count of the number of times the currently selected hex file has been programmed since it was last modified or selected. Just above the progress information embedded hints are displayed. These are rotating Internet links that you can click on to go to a web page using your default browser. If you wish to quickly flick through all the hints then you can click on the fast forward button: Progress information Progress bar Section 1 includes&lt;br /&gt;&lt;br /&gt; Embedded Hints&lt;br /&gt; Menus&lt;br /&gt; Programmed Count&lt;br /&gt; Flash Magic User Manual&lt;br /&gt;&lt;br /&gt;4.3.1 MENUS&lt;br /&gt;&lt;br /&gt;There are five menus, File, ISP, Options, Tools and Help. The File menu provides access to loading and saving Hex Files, loading and saving settings files and exiting the application. The ISP menu provides access to the less commonly used ISP features. The Options menu allows access to the advanced options and includes an item to reset all options. The Tools menu provides features that support the operation and use of Flash Magic.&lt;br /&gt;&lt;br /&gt;The Help menu contains items that link directly to useful web pages and also open the Help About window showing the version number. The Loading and Saving of Hex Files and the other ISP features are described in the following sections.&lt;br /&gt;&lt;br /&gt;4.3.2 TOOL TIPS&lt;br /&gt;                      &lt;br /&gt;Tool window&lt;br /&gt;Throughout the Flash Magic user interface extensive use has been made of tool tips. These are small text boxes that appear when you place the pointer over something and keep it still for a second or two. Note that tool tips do not appear for items that are disabled (grayed out).&lt;br /&gt;&lt;br /&gt;4.3.3 SAVING OPTIONS&lt;br /&gt;The options in the main window and the Advanced Options window are automatically saved to the registry whenever Flash Magic is closed. This removes the need for an explicit save operation.&lt;br /&gt;&lt;br /&gt;When Flash Magic is restarted the main window and the Advanced Options window will appear as you left it, so you do not have to repeatedly make the same selections every time you start the application. If you wish to reset the options to the original defaults then choose Reset from the Options menu.&lt;br /&gt;&lt;br /&gt;4.4 FIVE STEP PROGRAMMING&lt;br /&gt;For each step there is a corresponding section in the main window as described in the User Interface Tour.&lt;br /&gt;&lt;br /&gt;4.4.1 STEP 2-CONNECTION SETTINGS&lt;br /&gt;Before the device can be used the settings required to make a connection must be specified. Select the desired COM port from the drop down list or type the desired COM port directly into the box.&lt;br /&gt;If you enter the COM port yourself then you must enter it in one of the following formats:&lt;br /&gt;  COM n&lt;br /&gt;  n&lt;br /&gt;Any other format will generate an error. So if you want to use COM 5 (which is not present on the drop down list) you can directly type in either “COM 5” or “5”.Select the baud rate to connect at. Try a low speed first. The maximum speed that can be used depends on the crystal frequency on your hardware. You can try connecting at higher and higher speeds until connections fail. Then you have found the highest baud rate to connect at. Alternatively, some devices support high speed communications. Please refer to the High-Speed Communications section for information.&lt;br /&gt;&lt;br /&gt; Select the device being used from the drop down list. Ensure you select the correct one as different devices have different feature sets and different methods of setting up the serial communications. Select the interface being used, if any.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Step 1&lt;br /&gt;&lt;br /&gt;An interface is a device that connects between your PC and the target hardware. If you simply have a serial cable or USB to serial cable connecting your COM port to the target hardware, then chooses "None (ISP)". &lt;br /&gt;&lt;br /&gt;Choosing the correct interface will automatically configure Flash Magic for that interface, along with enabling and disabling the relevant features.&lt;br /&gt;&lt;br /&gt;Enter the oscillator frequency used on the hardware. Do not round the frequency, instead enter it as precisely as possible. Some devices do not require the oscillator frequency to be entered, so this field will not be displayed.&lt;br /&gt;&lt;br /&gt;Once the options are set ensure the device is running the on-chip Boot loader if you are using a manual ISP entry method. Note that the connection settings affect all ISP features provided by Flash Magic.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.4.2 STEP 2-ERASING&lt;br /&gt;&lt;br /&gt;This step is optional, however if you attempt to program the device without first erasing at least one Flash block, then Flash Magic will warn you and ask you if you are sure you want to program the device. Select each Flash block that you wish to erase by clicking on its name. If you wish to erase all the Flash then check that option. If you check to erase a Flash block and all the Flash, then the Flash block will not be individually erased.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Step 2&lt;br /&gt;&lt;br /&gt;If you wish to erase only the Flash blocks used by the hex file you are going to select, then check that option. For most devices erasing all the Flash also results in the Boot Vector and Status Byte being set to default values, which ensure that the Boot loader will be executed on reset, regardless of the state of the PSEN pin or other hardware requirements.&lt;br /&gt;Only when programming a Hex File has been completed will the Status Byte be set to 00H to allow the code to execute. This is a safeguard against accidentally attempting to execute when the Flash is erased. On some devices erasing all the Flash will also erase the security bits.&lt;br /&gt;&lt;br /&gt; This will be indicated by the text next to the Erase all Flash option. On some devices erasing all the Flash will also erase the speed setting of the device (the number of clocks per cycle) setting it back to the default. This will be indicated by the text next to the Erase all Flash option.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.4.3 STEP 3-SELECTING THE HEX FILES&lt;br /&gt;&lt;br /&gt;This step is optional. If you do not wish to program a Hex File then do not select one. You can either enter a path name in the text box or click on the Browse button to select a Hex File by browsing to it.&lt;br /&gt;&lt;br /&gt;Also you can choose Open… from the File menu. Note that the Hex file is not loaded or cached in any way. This means that if the Hex File is modified, you do not have to reselect it in Flash Magic. Every time the Hex File is programmed it is first re-read from the location specified in the main window. The date the Hex file was last modified is shown in this section.&lt;br /&gt; &lt;br /&gt;                                                       Step 3&lt;br /&gt;&lt;br /&gt;This information is updated whenever the hex file is modified. The hex file does not need to be reselected. Clicking on more info or choosing Information… from the File menu will display additional information about the Hex file.&lt;br /&gt;&lt;br /&gt;The information includes the range of Flash memory used by the Hex file, the number of bytes of Flash memory used and the percentage of the currently selected device that will be filled by programming the Hex file. If the device supports programming and execution from RAM, for example the ARM devices, then the hex file may contain records for the RAM. First the flash will be programmed followed by the RAM.  Programs loaded into RAM via a hex file may be executed using such features as the Go option. See chapter 6 for more details.&lt;br /&gt;&lt;br /&gt;4.4.4 STEP 4-OPTIONS&lt;br /&gt;&lt;br /&gt;Flash Magic provides various options that may be used after the Hex File has been programmed. This section is optional, however Verify After Programming, Fill Unused Flash and Gen Block Checksums may only be used if a Hex File is selected (and therefore being programmed), as they all need to know either the Hex File contents or memory locations used by the Hex File.&lt;br /&gt;&lt;br /&gt;Checking the Verify after Programming option will result in the data contained in the Hex File being read back from Flash and compared with the Hex File after programming.&lt;br /&gt;                  &lt;br /&gt;                                                     Step 4&lt;br /&gt;&lt;br /&gt;This helps to ensure that the Hex File was correctly programmed. If the device does not support verifying then this item will be disabled. Checking the Fill Unused Flash option will result in every memory location not used by the File being programmed with the value that sets all the bits to a programmed state. Once a location has been programmed with this feature it cannot be reprogrammed with any other value, preventing someone from programming the device with a small program to read out the contents of Flash or altering the application’s operation. Checking the Gen Block Checksums option will instruct Flash Magic to program the highest location in every Flash block used by the Hex File with a special “checksum adjuster value”. This value ensures that when a checksum is calculated for the whole Flash Block it will equal 55H, providing the contents of the Flash block have not be altered or corrupted. Please refer to the Block Checksums section for more information. Checking the Execute option will cause the downloaded firmware to be executed automatically after the programming is complete. Note that this will not work if using the Hardware Reset option or a device that does not support this feature.&lt;br /&gt;&lt;br /&gt;4.4.5 STEP 5-PERFORMING THE OPERATIONS&lt;br /&gt;&lt;br /&gt;Step 5 contains a Start button. Clicking the Start button will result in all the selected operations in the main window taking place. They will be in order:&lt;br /&gt; &lt;br /&gt;Step 5&lt;br /&gt;&lt;br /&gt; Erasing Flash&lt;br /&gt; Programming the Hex File&lt;br /&gt; Verifying the Hex File&lt;br /&gt; Filling Unused Flash&lt;br /&gt; Generating Checksums&lt;br /&gt; Programming the clocks bit&lt;br /&gt; Programming the Security Bits&lt;br /&gt; Executing the firmware&lt;br /&gt;&lt;br /&gt;Once started, progress information and a progress bar will be displayed at the bottom of the main window. In addition the Start button will change to a cancel button. Click on the cancel button to cancel the operation.&lt;br /&gt;&lt;br /&gt;Note that if you cancel during erasing all the Flash, it may take a few seconds before the operation is cancelled. Once the operations have finished the progress information will briefly show the message “Finished…” . The Programmed Count shown next to the progress bar will increment. This shows the total number of times the hex file has been programmed. Modifying the hex file or selecting another hex file will reset the count. Alternatively, right-clicking over the count provides a menu with the option to immediately reset the count.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 5&lt;br /&gt; &lt;br /&gt;TEMPERATURE SENSOR - LM35&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TEMPERATURE SENSOR – LM35&lt;br /&gt;&lt;br /&gt;The LM35 is an integrated circuit sensor that can be used to measure temperature with an electrical output proportional to the temperature in degree Celsius.&lt;br /&gt;&lt;br /&gt;5.1 FEATURES&lt;br /&gt;&lt;br /&gt; Calibrated directly in centigrade (o C)&lt;br /&gt; Linear +10.0 mV/ o C&lt;br /&gt; 0.5 o C accuracy guarantee able (at +25 o C)&lt;br /&gt; Rated for full -55 o C to +150o C range&lt;br /&gt; Suitable for remote applications&lt;br /&gt; Low cost due to wafer-level trimming&lt;br /&gt; Operates from 4 to 30 volts&lt;br /&gt; Less than 60 µA current drain&lt;br /&gt; Low self-heating, 0.08 o C  in still air&lt;br /&gt; Non- linearity only ±1/4 o C typical&lt;br /&gt; Low impedance output, 0.1 W for 1 mA load&lt;br /&gt;&lt;br /&gt;5.2 DESCRIPTION&lt;br /&gt;&lt;br /&gt;The LM35 series are precision integrated- circuit temperature sensors, whose output voltage is linearly proportional to the Celsius temperature.&lt;br /&gt;&lt;br /&gt;The LM35 thus has an advantage over linear temperature sensors calibrated in o Kelvin, as the user is not required to subtract a large constant voltage from its output to obtain convenient centigrade scaling. The LM35’s low output impedance, linear output, and precise inherent calibration make interfacing to readout or control circuitry especially easy. It can be used with single power supplies, or with plus and minus supplies. As it draws only 60 µA from its supply, it has very low self-heating, less than 0.1 o C in still air. The LM35 is rated to operate over a -55 o C to +150 o C temperature range.&lt;br /&gt;&lt;br /&gt;5.3 SENSOR OPERATION&lt;br /&gt;&lt;br /&gt;In this circuit, parameter values commonly used are supply Vcc=5v or 12v, and resistance&lt;br /&gt;Ra=Vcc/10-6=80 KΩ. The output voltage is converted to temperature by a simple conversion factor.&lt;br /&gt;&lt;br /&gt;                             Temperature (o C) = Vout * (100 o C/ V)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;LM35 Circuit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The sensor has the sensitivity of 10mV / o C and the output voltage varies linearly with temperature.&lt;br /&gt;&lt;br /&gt;5.4 ADVANTAGES&lt;br /&gt;&lt;br /&gt; One can measure temperature more accurately than using a thermistor.&lt;br /&gt; The sensor circuitry is sealed and not subject to oxidation, etc.,&lt;br /&gt; The LM35 generates a higher output voltage than thermocouples and may not require that the output voltage be amplified.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 6&lt;br /&gt;   &lt;br /&gt;A/D CONVERTER – MCP3202&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ANALOG TO DIGITAL CONVERTER (ADC)&lt;br /&gt;&lt;br /&gt;6.1 GENERAL DESCRIPTION&lt;br /&gt;&lt;br /&gt;The MCP3202 is a successive approximation 12 bit Analog to Digital converter with on-board sample and hold circuitry. The MCP3202 is programmable to provide a single pseudo-differential input pair or dual single-ended inputs. Communication with the device is done using a simple serial interface compatible with the SPI protocol The device is capable of conversion rates of up to 100kbps at 5v and 50 kbps at 2.7v.Low current design of only 500nA and 375 microAmps.&lt;br /&gt;6.2 FEATURES&lt;br /&gt;  12 bit resolution&lt;br /&gt; Operating supply voltage 2.7 V to 5.5 V&lt;br /&gt;  On-chip sample and hold&lt;br /&gt;  SPI  Serial interface&lt;br /&gt;  Low power CMOS technology&lt;br /&gt;  100kbps max sampling rate at Vdd =5v&lt;br /&gt; 50kbps max sampling rate at Vdd =2.7v&lt;br /&gt; Analog inputs programmable as single-ended or differential inputs&lt;br /&gt;  Industrial temperature range -400c to +85 0 c&lt;br /&gt;   8-bit successive approximation A/D conversion&lt;br /&gt;&lt;br /&gt; 6.3 PIN DIAGRAM      &lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.3.1 PIN DESCRIPTIONS &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.CH0/CH1 &lt;br /&gt;Analog inputs for channels 0 and 1 respectively. These channels can programmed to be used as two indepen-dent channels in single ended-mode or as a single pseudo-differential input where 1 channel is IN+ and one channel is IN-. &lt;br /&gt;2CS/SHDN(Chip Select/Shutdown) &lt;br /&gt;The CS/SHDN pin is used to initiate communication with the device when pulled low and will end a conver-sion and put the device in low power standby when pulled high. The CS/SHDN pin must be pulled high between conversions. &lt;br /&gt;3CLK (Serial Clock) &lt;br /&gt; The SPI clock pin is used to initiate a conversion and to clock out each bit of the conversion as it takes place. &lt;br /&gt;4DIN (Serial Data Input) &lt;br /&gt; The SPI port serial data input pin is used to clock in input channel configuration data. &lt;br /&gt;5DOUT (Serial Data output) &lt;br /&gt;The SPI serial data output pin is used to shift out the results of the A/D conversion. Data will always change on the falling edge of each clock as the conversion takes place.  &lt;br /&gt; &lt;br /&gt;6.4 FUNCTIONAL DIAGRAM&lt;br /&gt; &lt;br /&gt;6.4.1 DEVICE OPERATION &lt;br /&gt;The MCP3202 A/D Converter employs a conventional SAR architecture. With this architecture, a sample is acquired on an internal sample/hold capacitor for 1.5 clock cycles starting on the second rising edge of the serial clock after the start bit has been received. Following this sample time, the input switch of the con-verter opens and the device uses the collected charge on the internal sample and hold capacitor to produce a serial 12-bit digital output code. Conversion rates of 100ksps are possible on the MCP3202. See Section 6.2 for information on minimum clock rates. Communication with the device is done using a 3-wire  SPI-compatible interface.  &lt;br /&gt;6.4.2Analog Inputs:&lt;br /&gt;The MCP3202 device offers the choice of using the ana-log input channels configured as two single-ended inputs or a single pseudo-differential input. Configura-tion is done as part of the serial command before each conversion begins. When used in the psuedo-differen-tial mode, CH0 and CH1 are programmed as the IN+ and IN- inputs as part of the command string transmit-ted to the device. The IN+ input can range from IN- to VREF (VREF + IN-). The IN- input is limited to ±100mV from the VSS rail. The IN- input can be used to cancel small signal common-mode noise which is present on both the IN+ and IN- inputs. &lt;br /&gt;&lt;br /&gt;For the A/D Converter to meet specification, the charge holding capacitor (CSAMPLE) must be given enough time to acquire a 12-bit accurate voltage level during the 1.5 clock cycle sampling period.  (RS) adds to the internal sampling switch (RSS) imped-ance, directly affecting the time that is required to charge the capacitor, CSAMPLE. Consequently, larger source impedances increase the offset, gain, and inte-gral linearity errors of the conversion.  &lt;br /&gt;Ideally, the impedance of the signal source should be near zero. This is achievable with an operational ampli-fier such as the MCP601 which has a closed loop out-put impedance of tens of ohms. When operating in the pseudo-differential mode, if the voltage level of IN+ is equal to or less than IN-, the resultant code will be 000h. If the voltage at IN+ is equal to or greater than {[VREF + (IN-)] - 1 LSB}, then the out-put code will be FFFh. If the voltage level at IN- is more than 1 LSB below VSS, then the voltage level at the IN+ input will have to go below VSS to see the 000h output code.   Conversely, if IN- is more than 1 LSB above VSS, then the FFFh code will not be seen unless the IN+ input level goes above VREF level.  &lt;br /&gt;&lt;br /&gt;6.4.3 Digital Output Code &lt;br /&gt;The digital output code produced by an A/D Converter is a function of the input signal and the reference volt-age. For the MCP3202, VDD is used as the reference voltage. As the VDD level is reduced, the LSB size is reduced accordingly. The theoretical digital output code produced by the A/D Converter is shown below. &lt;br /&gt;Digital Output Code = 4096 * VIN / VDD &lt;br /&gt;where: &lt;br /&gt;VIN = analog input voltage,VDD = supply voltage,&lt;br /&gt;&lt;br /&gt;6.5 SERIAL COMMUNICATIONS &lt;br /&gt;Communication with the MCP3202 is done using a standard SPI-compatible serial interface. Initiating communication with the device is done by bringing the CS line low. See Figure 5-1. If the device was powered up with the CS pin low, it must be brought high and back low to initiate communication. The first clock received with CS low and DIN high will constitute a start bit. The SGL/DIFF bit and the ODD/SIGN bit follow the start bit and are used to select the input channel configuration. The SGL/DIFF is used to select single ended or psuedo-differential mode. The ODD/SIGN bit selects which channel is used in single ended mode, and is used to determine polarity in pseudo-differential mode. Following the ODD/SIGN bit, the MSBF bit is transmit-ted to and is used to enable the LSB first format for the device. If the MSBF bit is low, then the data will come from the device in MSB first format and any further clocks with CS low will cause the device to output zeros. If the MSBF bit is high, then the device will output the converted word LSB first after the word has been transmitted in the MSB first format. &lt;br /&gt;MCP3202. The device will begin to sample the analog input on the second rising edge of the clock, after the start bit has been received. The sample period will end on the falling edge of the third clock following the start bit. MSB first. Data is always output from the device on the falling edge of the clock. If all 12 data bits have been transmitted and the device contin-ues to receive clocks while the CS is held low, (and MSBF = 1), the device will output the conversion result LSB first If more clocks are pro-vided to the device while CS is still low (after the LSB first data has been transmitted), the device will clock out zeros indefinitely. If necessary, it is possible to bring CS low and clock in leading zeros on the DIN line before the start bit. This is often done when dealing with microcontroller-based SPI ports that must send 8 bits at a time. &lt;br /&gt;    CONFIG &lt;br /&gt; BITS  CHANNEL &lt;br /&gt;SELECTION  GND &lt;br /&gt; SGL/  &lt;br /&gt;DIFF  ODD/  &lt;br /&gt;SIGN  0  1  &lt;br /&gt;SINGLE  &lt;br /&gt;ENDED MODE  1  0         - &lt;br /&gt; 1  1      +    &lt;br /&gt;PSEUDO- &lt;br /&gt;DIFFERENTIAL &lt;br /&gt; MODE  0  0  I  I    &lt;br /&gt; 0  1  I  IN    &lt;br /&gt; &lt;br /&gt;6.6 APPLICATIONS&lt;br /&gt; Closed loop control systems&lt;br /&gt; Low power converter for remote data acquisition&lt;br /&gt; Battery operated equipment&lt;br /&gt; Acquisition of analog values in automotive, audio and&lt;br /&gt; TV applications (as tuner cards)&lt;br /&gt; Software defined radio and digital oscilloscopes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 7&lt;br /&gt;&lt;br /&gt;REAL TIME CLOCK DS1307&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;REAL TIME CLOCK (RTC)&lt;br /&gt;&lt;br /&gt;7.1 GENERAL DESCRIPTION&lt;br /&gt;The DS1307 Serial Real Time Clock is a low power, full BCD clock/calendar plus 56 bytes of nonvolatile SRAM.  Address and data are transferred serially via a 2-wire bi-directional bus.  The clock/calendar provides seconds, minutes, hours, day, date, month, and year information.  The end of the month date is automatically adjusted for months with less than 31 days, including corrections for leap year.  The clock operates in either the 24-hour or 12-hour format with AM/PM indicator.  The DS1307 has a built-in power sense circuit which detects power failures and automatically switches to the battery supply. &lt;br /&gt;7.2 FEATURES&lt;br /&gt;• Real time clock counts seconds, minutes, hours, date of the month, month, day of the week, and year &lt;br /&gt;• 56 byte nonvolatile RAM for data storage &lt;br /&gt;&lt;br /&gt;• 2-wire serial interface &lt;br /&gt;&lt;br /&gt;• Programmable square wave output signal &lt;br /&gt;&lt;br /&gt;• Automatic power-fail detect and switch circuitry   &lt;br /&gt;• Consumes less than 500 nA in battery backup mode with oscillator running  &lt;br /&gt;•  Optional industrial temperature range -40_C to +85_C  &lt;br /&gt;•  Available in 8-pin DIP or SOIC &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7.3 PIN DIAGRAM      &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;7.4 DESCRIPTION &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VCC   - Primary Power Supply &lt;br /&gt;&lt;br /&gt;X1, X2   - 32.768 kHz Crystal Connection VBAT - +3V Battery Input &lt;br /&gt;&lt;br /&gt;GND  - Ground &lt;br /&gt;&lt;br /&gt;SDA   - Serial Data &lt;br /&gt;&lt;br /&gt;SCL   - Serial Clock &lt;br /&gt;&lt;br /&gt;SQW/OUT     - Square wave/Output Driver &lt;br /&gt;&lt;br /&gt;7.5 FUNTIONAL BLOCK DIAGRAM:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OPREATION:&lt;br /&gt;&lt;br /&gt;The DS1307 operates as a slave device on the serial bus. Access is obtained by implementing a START condition and providing a device identification code followed by a register address. Subsequent registers can be accessed sequentially until a STOP condition is executed.  When VCC falls below 1.25 x VBAT the device terminates an access in progress and resets the device address counter.  Inputs to the device will not be recognized at this time to prevent erroneous data from being written to the device from an out of tolerance system. When VCC falls below VBAT the device switches into a low current battery backup mode.  Upon power up, the device switches from battery to VCC when VCC is greater than VBAT +0.2V and recognizes inputs when VCC is greater than 1.25 x VBAT.  &lt;br /&gt; &lt;br /&gt;7.5 SIGNAL DESCRIPTIONS &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VCC, GND - DC power is provided to the device on these pins.  VCC is the +5 volt input.  When 5 volts is applied within normal limits, the device is fully accessible and data can be written and read.  When a 3-volt battery is connected to the device and VCC is below 1.25 x VBAT, reads and writes are inhibited. However, the Timekeeping function continues unaffected by the lower input voltage.  As VCC falls below VBAT the RAM and timekeeper are switched over to the external power supply (nominal 3.0V DC) at VBAT. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VBAT - Battery input for any standard 3-volt lithium cell or other energy source.  Battery voltage must be held between 2.0 and 3.5 volts for proper operation.  The nominal write protect trip point voltage at which access to the real time clock and user RAM is denied is set by the internal circuitry as 1.25 x VBAT nominal.  A lithium battery with 48 mAhr or greater will back up the DS1307 for more than 10 years in the absence of power at 25 degrees C. &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;SCL (Serial Clock Input) - SCL is used to synchronize data movement on the serial interface. &lt;br /&gt;SDA (Serial Data Input/Output) - SDA is the input/output pin for the 2-wire serial interface.  The SDA pin is open drain which requires an external pullup resistor. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQW/OUT (Square Wave/ Output Driver) - When enabled, the SQWE bit set to 1, the SQW/OUT pin outputs one of four square wave frequencies (1 Hz, 4 kHz, 8 kHz, 32 kHz).  The SQW/OUT pin is open drain which requires an external pullup resistor.  SQW/OUT will operate with either Vcc or Vbat applied. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;X1, X2 - Connections for a standard 32.768 kHz quartz crystal.  The internal oscillator circuitry is designed for operation with a crystal having a specified load capacitance (CL) of 12.5 pF. &lt;br /&gt;&lt;br /&gt;RTC AND RAM ADDRESS MAP &lt;br /&gt;&lt;br /&gt;The address map for the RTC and RAM registers of the DS1307 is shown in Figure 2.  The real time clock registers are located in address locations 00h to 07h.  The RAM registers are located in address locations 08h to 3Fh.  During a multi-byte access, when the address pointer reaches 3Fh, the end of RAM space, it wraps around to location 00h, the beginning of the clock space. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CLOCK AND CALENDAR &lt;br /&gt;The time and calendar information is obtained by reading the appropriate register bytes.  The real time clock registers are illustrated in Figure 3.  The time and calendar are set or initialized by writing the appropriate register bytes.  The contents of the time and calendar registers are in the Binary-Coded Decimal (BCD) format.  Bit 7 of Register 0 is the Clock Halt (CH) bit.  When this bit is set to a 1, the oscillator is disabled.  When cleared to a 0, the oscillator is enabled. &lt;br /&gt;&lt;br /&gt;7.6 COMMUNICATION&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Data transfer may be initiated only when the bus is not busy. During data transfer, the data line must remain stable whenever the clock line is HIGH.  Changes in the data line while the clock line is high will be interpreted as control signals. Accordingly, the following bus conditions have been defined: &lt;br /&gt;&lt;br /&gt;Bus not busy: Both data and clock lines remain HIGH. &lt;br /&gt;&lt;br /&gt;Start data transfer: A change in the state of the data line, from HIGH to LOW, while the clock is HIGH, defines a START condition. &lt;br /&gt;Stop data transfer: A change in the state of the data line, from LOW to HIGH, while the clock line is HIGH, defines the STOP condition. &lt;br /&gt;Data valid: The state of the data line represents valid data when, after a START condition, the data line is stable for the duration of the HIGH period of the clock signal.  The data on the line must be changed during the LOW period of the clock signal.  There is one clock pulse per bit of data. &lt;br /&gt;Each data transfer is initiated with a START condition and terminated with a STOP condition.  The number of data bytes transferred between START and STOP conditions is not limited, and is determined by the master device.  The information is transferred byte-wise and each receiver acknowledges with a ninth bit.  Within the 2-wire bus specifications a regular mode (100 kHz clock rate) and a fast mode (400 kHz clock rate) are defined.  The DS1307 operates in the regular mode (100 kHz) only. &lt;br /&gt; &lt;br /&gt;Acknowledge: Each receiving device, when addressed, is obliged to generate an acknowledge after the reception of each byte.  The master device must generate an extra clock pulse which is associated with this acknowledge bit. &lt;br /&gt;A device that acknowledges must pull down the SDA line during the acknowledge clock pulse in such a way that the SDA line is stable LOW during the HIGH period of the acknowledge related clock pulse.  Of course, setup and hold times must be taken into account.  A master must signal an end of data to the slave by not generating an acknowledge bit on the last byte that has been clocked out of the slave.  In this case, the slave must leave the data line HIGH to enable the master to generate the STOP condition. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Depending upon the state of the R/W bit, two types of data transfer are possible: &lt;br /&gt;1.  Data transfer from a master transmitter to a slave receiver.  The first byte transmitted by the master is the slave address.  Next follows a number of data bytes.  The slave returns an acknowledge bit after each received byte.  Data is transferred with the most significant bit (MSB) first. &lt;br /&gt;2.  Data transfer from a slave transmitter to a master receiver.  The first byte (the slave address) is &lt;br /&gt;transmitted by the master.  The slave then returns an acknowledge bit.  This is followed by the slave transmitting a number of data bytes.  The master returns an acknowledge bit after all received bytes other than the last byte.  At the end of the last received byte, a ’not acknowledge’ is returned. &lt;br /&gt;The master device generates all of the serial clock pulses and the START and STOP conditions.  A transfer is ended with a STOP condition or with a repeated START condition.  Since a repeated START condition is also the beginning of the next serial transfer, the bus will not be released.  Data is transferred with the most significant bit (MSB) first. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 8&lt;br /&gt;&lt;br /&gt;SERIAL PERIPHERAL INTERFACE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8.1 INTRODUCTION:&lt;br /&gt;SPI stands for Serial Peripheral Interfacing. It is a synchronous serial bus developed by Motorola  and is present on many of their micro controllers.  SPI is used to communicate with peripheral devices.Benefit of serial communications is low pin counts  Many common embedded system peripherals, such as A2D and D2A converters, LCD, and temperature sensors, support serial interfaces  &lt;br /&gt;Two types of devise are involved in data transfer in the SPI format: master and slaves. The master device initiates data transfer and also generates the clock signal required for data transfer synchronization .SPI  can achieve higher data rates. SPI has full duplex capability&lt;br /&gt; 8.2 SPI BUS CONFIGURATION:&lt;br /&gt;Devices communicate using a master/slave relationship, in which the master initiates the data frame. When the master generates a clock and selects a slave device, data may be transferred in either or both directions simultaneously. In fact, as far as SPI is concerned, data are always transferred in both directions. It is up to the master and slave devices to know whether a received byte is meaningful or not. So a device must discard the received byte in a "transmit only" frame or generate a dummy byte for a "receive only" frame. &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;Single master,single slave SPI implementation&lt;br /&gt;&lt;br /&gt;SCLK is generated by the master and input to all slaves. MOSI carries data from master to slave. MISO carries data from slave back to master. A slave device is selected when the master asserts its ÇSS signal. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Single master,Multiple slave SPI implementation&lt;br /&gt;&lt;br /&gt;If multiple slave devices exist, the master generates a separate slave select signal for each slave.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Four main signals:&lt;br /&gt;&lt;br /&gt;Master Out Slave In (MOSI)   : data from master to slave&lt;br /&gt;Master In Slave Out (MISO)   : data from slave to master&lt;br /&gt;Serial Clock (SCLK or SCK)   : clock&lt;br /&gt;Chip Select (CS)              : select particular peripheral when multiple  peripherals are connected to  &lt;br /&gt;                                                    master&lt;br /&gt;&lt;br /&gt;8.3 SPI  REGISTERS:&lt;br /&gt;&lt;br /&gt;There are three registers unique to the serial peripheral interface which provide control,status,and data stroage&lt;br /&gt;&lt;br /&gt;SPCR:&lt;br /&gt;The Serial Peripheral Control Register (SPCR)  provides control for the SPI.  A pair of parameters called clock polarity (CPOL) and clock phase (CPHA) determine the edges of the clock signal on which the data are driven and sampled.&lt;br /&gt;&lt;br /&gt;Bit   7                    6                      5                      4                  3                        2                   1                      0      &lt;br /&gt;SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0&lt;br /&gt;       R/W                R/W                R/W              R/W               R/W                  R/W             R/W               R/W&lt;br /&gt;          0                     0                      0                   0                    0                         0                    0                    0&lt;br /&gt;&lt;br /&gt;SPIE:Serial Peripheral Interrupt Enable&lt;br /&gt;SPE  :Serial Peripheral System Enable&lt;br /&gt;DORD:Data Order&lt;br /&gt;MSTR: Master Mode Select&lt;br /&gt;CPOL:Clock Polarity&lt;br /&gt;CPHA:Clock Phase&lt;br /&gt;SPR0:SPI Clock Rate Select0&lt;br /&gt;SPR1:SPI Clock Rate Select1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SPDR:&lt;br /&gt;&lt;br /&gt;The SPI Data register  is a Read/Write register used for data transfer between the register file and the SPI shift register.Writing to the register initiates data transmission.Reading the register causes the shift register receive buffer to be read&lt;br /&gt;&lt;br /&gt;   Bit   7                    6                      5                      4                  3                        2                   1                      0      &lt;br /&gt;MSB       LSB&lt;br /&gt;       R/W                R/W                R/W              R/W               R/W                  R/W             R/W               R/W&lt;br /&gt;          X                     X                    X                    X                    X                    X                    X                   X&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;SPSR:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bit   7                    6                      5                      4                  3                        2                   1                      0      &lt;br /&gt;SPIF WCOL - - - - - SPI2X&lt;br /&gt;       R/W                R/W                R/W              R/W               R/W                  R/W             R/W               R/W&lt;br /&gt;          0                     0                      0                   0                    0                         0                    0                    0&lt;br /&gt;&lt;br /&gt;SPIF: SPI Interrupt Flag&lt;br /&gt;WCOL: Write Collision&lt;br /&gt;SPI2X:To double the data transmission rate&lt;br /&gt;&lt;br /&gt;8.4 SPI ADVANTAGES AND DISADVANTAGES:&lt;br /&gt;&lt;br /&gt;• SPI does not have an acknowledgement mechanism to  confirm receipt of data. In fact, without a communication  protocol, the SPI master has no knowledge of whether a slave  even exists. SPI also offers no flow control. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;• Slaves can be thought of as input/output devices of  the master. SPI does not specify a particular higher-level protocol for master-slave dialog. In some  applications, a higher-level protocol is not needed and  only raw data are exchanged. An example of this is an  interface to a simple codec. In other applications, a  higher-level protocol, such as a command-response  protocol, may be necessary. Note that the master  must initiate the frames for both its command and the  slave's response.  &lt;br /&gt;&lt;br /&gt;• SPI's full duplex communication capability and data  rates (ranging up to several megabits per second)  make it, in most cases, extremely simple and efficient  for single master, single slave applications. On the  other hand, it can be troublesome to implement for  more than one slave, due to its lack of built-in  addressing; and the complexity only grows as the  number of slaves increases&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 9&lt;br /&gt;&lt;br /&gt; INTER –INTEGRATED CIRCUIT BUS&lt;br /&gt;(I2C)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9.1 INTRODUCTION:&lt;br /&gt;&lt;br /&gt;The name stands for “Inter - Integrated Circuit Bus” .A Small Area Network connecting ICs and other electronic systems . Synchronous Serial Signal.Multi master invented by Philips&lt;br /&gt;Two wires are used to carry information between  a number of devices .One wire  is used for the data ,One wire is used for the clock  .I2C is a true multi master  bus providing arbitration and collision detection&lt;br /&gt;Today, a variety of devices are available with I2C Interfaces&lt;br /&gt; 1.Microcontroller,&lt;br /&gt; 2. EEPROM,&lt;br /&gt; 3. Real-Timer,&lt;br /&gt; 4. interface chips,&lt;br /&gt; 5. LCD driver,&lt;br /&gt; 6. A/D converter.&lt;br /&gt;&lt;br /&gt; 9.2 I2C BUS CHARACTERISTICS:&lt;br /&gt;• Includes electrical and timing specifications, and an  &lt;br /&gt;• associated bus protocol  &lt;br /&gt;• Two wire serial data &amp; control bus implemented with the serial  &lt;br /&gt;• data (SDA) and clock (SCL) lines For reliable operation, a third line common ground  is required: &lt;br /&gt;• Unique start and stop condition  &lt;br /&gt;• Slave selection protocol uses a 7-Bit slave address .The bus specification allows an extension to 10 bits  &lt;br /&gt;• Bi-directional data transfer  &lt;br /&gt;• Acknowledgement after each transferred byte  &lt;br /&gt;• No fixed length of transfer  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;• True multi-master capability  -Clock synchronization  ,Arbitration procedure  &lt;br /&gt;• Transmission speeds up to 100Khz  (classic I2C)  &lt;br /&gt;• Max. line capacitance of 400pF, approximately 4 meters (12  feet)  &lt;br /&gt;• Compatible with different IC technologies  &lt;br /&gt;&lt;br /&gt;I2C Bus Definition:&lt;br /&gt;Master:  &lt;br /&gt;Initiates a transfer by generating  start and stop conditions  &lt;br /&gt;Generates the clock  &lt;br /&gt;Transmits the slave address  &lt;br /&gt;Determines data transfer direction  &lt;br /&gt;Slave:  &lt;br /&gt;Responds only when addressed  &lt;br /&gt;Timing is controlled by the clock line .&lt;br /&gt;&lt;br /&gt;9.3 I2C COMMUNICATION:&lt;br /&gt;Bit Transfer :&lt;br /&gt;In normal data transfer, the data line only changes state when  the clock is low   &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SDA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SCL&lt;br /&gt;&lt;br /&gt; Data line stable       Change of data allowed&lt;br /&gt;                                     Data valid&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Start and Stop Conditions :&lt;br /&gt;&lt;br /&gt;A transition of the data line while the clock line is high  is  defined as either a start or a stop condition. &lt;br /&gt;Both start and stop conditions are generated by the bus  master .The bus is considered busy after a start condition, until a stop condition occurs .&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;SDA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SCL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                           Start             Stop &lt;br /&gt;                           Condition             condition &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I2C Addressing:&lt;br /&gt;&lt;br /&gt;Each node has a unique 7 (or 10) bit address  &lt;br /&gt;Peripherals often have fixed and programmable  address portions  &lt;br /&gt;Addresses starting with 0000 or 1111 have special functions:- &lt;br /&gt;0000000 Is a General Call Address  &lt;br /&gt;0000001 Is a Null (CBUS) Address  &lt;br /&gt;1111XXX Address Extension  &lt;br /&gt;1111111  Address Extension – Next Bytes are the actual address  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First Byte in Data Transfer on the I2C Bus:&lt;br /&gt;                                                                                                                                                                                                                                          &lt;br /&gt; MSB            LSB  ACK&lt;br /&gt;                                                                                                                           &lt;br /&gt;       R/Wr &lt;br /&gt;                                   7-bit slave address&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;R/Wr&lt;br /&gt; 0-Slave written to by master&lt;br /&gt; 1-Slave red by master&lt;br /&gt;Ack&lt;br /&gt;          Generated by the slave whose address has been output&lt;br /&gt;&lt;br /&gt;Data Transfer:&lt;br /&gt;&lt;br /&gt;Transmitter releasesSDA&lt;br /&gt;Line during 9th clock pulse&lt;br /&gt;&lt;br /&gt;Acknowledgement from receiver&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.Start Condition-SDA is pulled low while   SCL stays high&lt;br /&gt;&lt;br /&gt;2. Slave address + R/W&lt;br /&gt;&lt;br /&gt;3. Slave acknowledges with ACK&lt;br /&gt;&lt;br /&gt;4. All data bytes– Each followed by ACK&lt;br /&gt;&lt;br /&gt; 5.Stop Condition-  SDA is pulled High while  SCL stays Low&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9.4 TYPES OF I2C IMPLEMENTATION:&lt;br /&gt; &lt;br /&gt;Byte Oriented Interface : &lt;br /&gt;• Data is handled one byte at a a time  &lt;br /&gt;• Processor interprets a status byte when an event occurs  &lt;br /&gt;• For instance Philips 8xC554, 8xC591  &lt;br /&gt;Bit Oriented Interface:  &lt;br /&gt;• Processor is involved in every bus event when the interface is not Idle  &lt;br /&gt;“Bit Banged” : &lt;br /&gt;• Implemented completely in software on 2 regular I/O pins of  the microcontroller  &lt;br /&gt;• Works for single master systems  &lt;br /&gt;• Not recommended for Slave devices or Multimaster systems  &lt;br /&gt;&lt;br /&gt;9.5 I2C DEVICES:&lt;br /&gt;Analog to Digital Converters (A/D, D/A):&lt;br /&gt; MMI functions, battery &amp; converters, temperature monitoring, control  systems  .&lt;br /&gt;&lt;br /&gt;Bus Controller:&lt;br /&gt;Telecom, consumer electronics, utomotive, Hi-Fi systems, PCs, servers  &lt;br /&gt;&lt;br /&gt;Real Time Clock (RTC)/Calendar: &lt;br /&gt;Telecom, EDP,consumer electronics, clocks, automotive, Hi-Fi  systems, FAX, PCs, terminals  &lt;br /&gt;&lt;br /&gt;DIP Switch: &lt;br /&gt;Telecom, automotive, servers, battery &amp; converters, control systems &lt;br /&gt;&lt;br /&gt;LCD/LED Display Drivers: &lt;br /&gt;Telecom, automotive  instrument  driver clusters, metering systems, POS  terminals,  portable items, consumer electronics  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHAPTER 10&lt;br /&gt;&lt;br /&gt;CIRCUIT DIAGRAM WITH OPERATION&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10.1 CIRCUIT DIAGRAM:&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10.2 OPERATION&lt;br /&gt;&lt;br /&gt;Many industry needs constant and regular updates on physical parameters like temperature,pressure etc.,for every small time intervals which may be difficult task for humans.Thus comes this device….. &lt;br /&gt;The temperature will be sensed using a LM35 temperature sensor,which is a 3 pin IC.The analog output voltage from sensor is directly proportional to the temperature in degree celsius.It is fed to 12bit ADC MCP3202 which gives a digital output.The adc is interfaced with the microcontroller using serial peripheral interface(SPI).The IC DS1307,which is a real time clock,is interfaced with a microcontroller using I2C.The temperature along with time ,day,month and year is sent to LCD.A switch is provided to change the task,if the switch is on SPI based task is performed and displayed .If the switch is off I2C based task is performed and displays the same. &lt;br /&gt;TEMPERATURE SENSOR&lt;br /&gt;The temperature sensor LM35 is connected to the third pin CH1 of ADC. Where separate supply and ground is given to LM35. The supply to LM35 is given through Vref and also grouned. The LM35 is an integrated circuit sensor that can be used to measure the temperature with an electrical output proportional to the temperature in degree Celsius. &lt;br /&gt;When the message is send through Microcontroller, LM35 senses the temperature and sends it as an analog input to ADC. &lt;br /&gt;ANALOG TO DIGITAL CONVERTOR:&lt;br /&gt;The A/D Converter MCP3202 is connected to the 6,7,8 pins of the microcontroller which are port 1.5,1.6,1.7Pins and they are MOSI,MISO,SCK.The supply  to ADC is given through Vref and also grounded.The ADC Is a 12 bit converter that converts the analog signal into digital signal. This  digital signal is given to the AT89S52 mirocontroller where it is communicated using SPI Protocol and displays the same in the LCD Display.&lt;br /&gt;REAL TIME CLOCK:&lt;br /&gt;The Real time clock DS1307 is connected to 3,4 pins of the microcontroller which are ports 1.2,1.3 pins and they are SDA and SCL.The supply to the RTC is given through Vref and also grounded.The RTC is using a Crystal of clock frequency of 32,768 khz and a battery backup of 3volts is used.The RTC reads the default date,Time,day,month and year and  sends it to the AT89S52 microcontroller where it is communicated using I2C Protocol and displays the same in the LCD display &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10.3 PROJECT CODING&lt;br /&gt;&lt;br /&gt;#include &lt;REGLV51RD2.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;#include&lt;stdio.h&gt;&lt;br /&gt;sbit cs   = P2^2;&lt;br /&gt;sbit output=P1^0;&lt;br /&gt;void spi ();&lt;br /&gt;    void display(char *);&lt;br /&gt;    void dela();&lt;br /&gt;    char getdata(int);&lt;br /&gt;  void sclhigh();&lt;br /&gt;  void start();&lt;br /&gt;  void end();  &lt;br /&gt;  void init_int();&lt;br /&gt;  void setclock(unsigned char,unsigned char);&lt;br /&gt;  void readclock();&lt;br /&gt;    void init_timer();&lt;br /&gt;    void run_timer();&lt;br /&gt;    void get_day(int);&lt;br /&gt;    int pm; &lt;br /&gt;    int sec =0x00;&lt;br /&gt;  int  min   = 0x35;&lt;br /&gt;  int  hrs   = 0x03;//12 hrs mode  make 6th high  (now time is 12) &lt;br /&gt;                    //make 5th  bit high for AM/PM indication&lt;br /&gt;  int  day1   = 0x04;&lt;br /&gt;  int  day  = 0x14;&lt;br /&gt;  int  month = 0x06;&lt;br /&gt;  int  year  = 0x07;&lt;br /&gt;  char dta[2];&lt;br /&gt;  char days[3],clk1[23];&lt;br /&gt;  int d_sec,d_min,d_hrs,i,rst1,rst2;&lt;br /&gt;  sbit sda = P2^3;&lt;br /&gt;  sbit scl = P2^4;&lt;br /&gt;void rtc_4();&lt;br /&gt;int release_key();&lt;br /&gt;void key_press();&lt;br /&gt;void debounce();&lt;br /&gt;void column();&lt;br /&gt;void dispay(char *);&lt;br /&gt;void cal_1();&lt;br /&gt;void disp(int result);&lt;br /&gt;void ser_2();&lt;br /&gt;void display1(char *name);&lt;br /&gt;void adc_3();&lt;br /&gt;void dis();&lt;br /&gt;void dip(int name1);&lt;br /&gt;void delay1();&lt;br /&gt;void line1 ();&lt;br /&gt;&lt;br /&gt;char a[4][3]={'1','2','3','4','5','6','7','8','9','*','0','#'};&lt;br /&gt;char r=0,c=0;&lt;br /&gt;int num1,num2,op;&lt;br /&gt;int result,l,t;&lt;br /&gt;&lt;br /&gt;xdata char *ptr_cmd = (xdata char *) 0x0FFF8;&lt;br /&gt;xdata char *ptr_en  = (xdata char *) 0x0FFF9;&lt;br /&gt;void busy_check()&lt;br /&gt;  {&lt;br /&gt;    *ptr_cmd = 0x02;&lt;br /&gt;    &lt;br /&gt;    while ( ( *ptr_en &amp; 0x80 ) != 0x00 );&lt;br /&gt;  }&lt;br /&gt;void delay()&lt;br /&gt; {&lt;br /&gt;  unsigned int i =1000;&lt;br /&gt;  while ( i-- );&lt;br /&gt; }&lt;br /&gt;void lcd_comm()&lt;br /&gt; {&lt;br /&gt;   *( ptr_cmd )   = 0x00;&lt;br /&gt; }&lt;br /&gt;void spi ()&lt;br /&gt; {    &lt;br /&gt;    SPCTL = 0X5C;&lt;br /&gt;   }&lt;br /&gt;void line1 ()&lt;br /&gt;{&lt;br /&gt;     lcd_comm(); &lt;br /&gt;     *(ptr_en)       = 0x80;&lt;br /&gt;      busy_check();&lt;br /&gt; }&lt;br /&gt;void init_lcd()&lt;br /&gt; {&lt;br /&gt;     lcd_comm(); &lt;br /&gt;     *( ptr_en )     = 0x38;&lt;br /&gt;&lt;br /&gt;    busy_check();&lt;br /&gt;     lcd_comm();&lt;br /&gt;      *(ptr_en)       = 0x0e;&lt;br /&gt;      busy_check();&lt;br /&gt;&lt;br /&gt;     lcd_comm();&lt;br /&gt;     *(ptr_en)       = 0x80;&lt;br /&gt;     busy_check();&lt;br /&gt;&lt;br /&gt;      lcd_comm(); &lt;br /&gt;      *(ptr_en)  = 0x01;&lt;br /&gt;      busy_check();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;void dis(char a)&lt;br /&gt;{&lt;br /&gt;*(ptr_cmd) = 0x01;//Rs 1 for data write&lt;br /&gt;*(ptr_en)= a;&lt;br /&gt;busy_check();&lt;br /&gt;}&lt;br /&gt;void display()&lt;br /&gt; {&lt;br /&gt;  *(ptr_cmd) = 0x01;&lt;br /&gt;  *(ptr_en)  =a[r][c];&lt;br /&gt;   l=a[r][c];&lt;br /&gt;   busy_check();&lt;br /&gt;   }&lt;br /&gt;void dip(int name1)   //LCD display routine for digits display &lt;br /&gt;   {&lt;br /&gt;                  &lt;br /&gt;       *(ptr_cmd) = 0x01;&lt;br /&gt;      *(ptr_en) = name1;&lt;br /&gt;      busy_check();&lt;br /&gt;           delay1();&lt;br /&gt;   }     &lt;br /&gt;   &lt;br /&gt;void disp(int result)&lt;br /&gt; {&lt;br /&gt;  *(ptr_cmd) = 0x01;&lt;br /&gt;  *(ptr_en)  = result;&lt;br /&gt;    busy_check();&lt;br /&gt; }&lt;br /&gt;void dispmenu()&lt;br /&gt; {&lt;br /&gt;  lcd_comm();&lt;br /&gt;  *(ptr_en)=0x80;&lt;br /&gt;  display1("1.CAL 2.SER");&lt;br /&gt;  lcd_comm();&lt;br /&gt;  *(ptr_en)=0xC0;&lt;br /&gt;  display1("3.ADC 4.RTC");&lt;br /&gt; }&lt;br /&gt;void display1(char *name)&lt;br /&gt; {&lt;br /&gt;   int l = strlen(name);&lt;br /&gt;   int i;&lt;br /&gt;   for(i = 0;i &lt; l;i++) &lt;br /&gt;   {&lt;br /&gt;       *(ptr_cmd) = 0x01;&lt;br /&gt;     *(ptr_en) = name[i];&lt;br /&gt;      busy_check();&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt; }&lt;br /&gt;void key_press()&lt;br /&gt; {&lt;br /&gt;&lt;br /&gt;while((P3 &amp; 0x038) == 0x038)&lt;br /&gt;   {&lt;br /&gt;     delay();&lt;br /&gt;   }&lt;br /&gt;     debounce();&lt;br /&gt; }&lt;br /&gt;int release_key()&lt;br /&gt; {&lt;br /&gt;&lt;br /&gt;    P1=0xf0;&lt;br /&gt;    while((P3 &amp; 0x38) == 0x38)&lt;br /&gt;  {   &lt;br /&gt;    delay();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;    P3 = 0x0ff;&lt;br /&gt;    debounce();&lt;br /&gt;    return l;&lt;br /&gt; }  &lt;br /&gt;void debounce()&lt;br /&gt; {&lt;br /&gt; &lt;br /&gt;   P1 = 0xfe;   //ground row 0 only&lt;br /&gt;   while((P3 &amp; 0x38) != 0x38)&lt;br /&gt;   {&lt;br /&gt;    r=0;&lt;br /&gt;    column();&lt;br /&gt;   }&lt;br /&gt;    P1 = 0xfd; //ground row 1 only&lt;br /&gt;    while((P3 &amp; 0x38) != 0x38)&lt;br /&gt;   {&lt;br /&gt;    r=1;&lt;br /&gt;    column();&lt;br /&gt;   }&lt;br /&gt;    P1 = 0xfb; //ground row 2 only&lt;br /&gt;    while((P3 &amp; 0x38) != 0x38)&lt;br /&gt;   {&lt;br /&gt;    r=2;&lt;br /&gt;    column();&lt;br /&gt;   }&lt;br /&gt;    P1 = 0xf7;  //ground row 3 only&lt;br /&gt;    while((P3&amp;0x38) != 0x38)&lt;br /&gt;   {&lt;br /&gt;    r=3;&lt;br /&gt;    column();&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;void column()&lt;br /&gt; {&lt;br /&gt;&lt;br /&gt;     if    ((P3 &amp; 0x30) == 0x30)&lt;br /&gt;   {&lt;br /&gt;     c=0;&lt;br /&gt;     l=a[r][c];&lt;br /&gt;     delay();&lt;br /&gt;   }&lt;br /&gt;    else if((P3 &amp; 0x28) == 0x28)&lt;br /&gt;   {&lt;br /&gt;    c=1;&lt;br /&gt;    l=a[r][c];&lt;br /&gt;    delay();&lt;br /&gt;   }&lt;br /&gt;    else if((P3 &amp; 0x18) == 0x18)&lt;br /&gt;   {&lt;br /&gt;    c=2;&lt;br /&gt;    l=a[r][c];&lt;br /&gt;    delay();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;void dispay(char *s)&lt;br /&gt;  {  int l= strlen(s);&lt;br /&gt;   int i,c=0;&lt;br /&gt;   for(i=0;i&lt;=l; i++)&lt;br /&gt;   {&lt;br /&gt;       if(c == 0)&lt;br /&gt;       {&lt;br /&gt;        if(i == 14)&lt;br /&gt;        {&lt;br /&gt;          lcd_comm(); &lt;br /&gt;        *(ptr_en)       = 0xc8;&lt;br /&gt;        busy_check();&lt;br /&gt;        c++;&lt;br /&gt;        }  &lt;br /&gt;        &lt;br /&gt;       }&lt;br /&gt;       *(ptr_cmd ) = 0x01;&lt;br /&gt;     *(ptr_en) = s[i];&lt;br /&gt;     busy_check();&lt;br /&gt;    }&lt;br /&gt;   }  &lt;br /&gt;    void get_day(int dys)&lt;br /&gt;    {&lt;br /&gt;  if(dys == 01)&lt;br /&gt;  {&lt;br /&gt;   clk1[11] = 'S';&lt;br /&gt;   clk1[12] = 'U';&lt;br /&gt;   clk1[13] = 'N';&lt;br /&gt;  }&lt;br /&gt;    if(dys == 02)&lt;br /&gt;    {&lt;br /&gt;     clk1[11] = 'M';&lt;br /&gt;      clk1[12] = 'O';&lt;br /&gt;     clk1[13] = 'N';&lt;br /&gt;    }&lt;br /&gt;  if(dys == 03)&lt;br /&gt;  {&lt;br /&gt;   clk1[11] = 'T';&lt;br /&gt;   clk1[12] = 'U';&lt;br /&gt;   clk1[13] = 'S';&lt;br /&gt;  }&lt;br /&gt;  if(dys == 04)&lt;br /&gt;  {&lt;br /&gt;   clk1[11] = 'W';&lt;br /&gt;   clk1[12] = 'E';&lt;br /&gt;   clk1[13] = 'D';&lt;br /&gt;  }&lt;br /&gt;  if(dys == 05)&lt;br /&gt;  {&lt;br /&gt;   clk1[11] = 'T';&lt;br /&gt;   clk1[12] = 'H';&lt;br /&gt;   clk1[13] = 'U';&lt;br /&gt;  }&lt;br /&gt;  if(dys == 06)&lt;br /&gt;  {&lt;br /&gt;   clk1[11] = 'F';&lt;br /&gt;   clk1[12] = 'R';&lt;br /&gt;   clk1[13] = 'I';&lt;br /&gt;  }&lt;br /&gt;  if(dys == 07)&lt;br /&gt;  {&lt;br /&gt;   clk1[11] = 'S';&lt;br /&gt;   clk1[12] = 'A';&lt;br /&gt;   clk1[13] = 'T';&lt;br /&gt;  }&lt;br /&gt;    }&lt;br /&gt;    void init_timer()&lt;br /&gt;  {&lt;br /&gt;  TR0 = 0;&lt;br /&gt;  TMOD = TMOD &amp; 0xf0;&lt;br /&gt;  TMOD = TMOD | 0x01;&lt;br /&gt;  TH0 = 0xdc;&lt;br /&gt;  TL0 = 0x00;&lt;br /&gt;  IE = IE &amp; 0x7f;&lt;br /&gt;  IE = IE | 0x02;&lt;br /&gt;  IE = IE | 0x80;&lt;br /&gt;  TR0 = 1;&lt;br /&gt; } &lt;br /&gt; void run_timer() interrupt 1 &lt;br /&gt; {&lt;br /&gt;  i++;&lt;br /&gt;  if (i == 100)&lt;br /&gt;  {&lt;br /&gt;   //init_lcd();&lt;br /&gt;   readclock();&lt;br /&gt;   i = 0;&lt;br /&gt;  }&lt;br /&gt;  TR0 = 0;&lt;br /&gt;  TH0 = 0xdc;&lt;br /&gt;  TL0 = 0x00;&lt;br /&gt;  TR0 = 1;&lt;br /&gt; }&lt;br /&gt;  void sclhigh()&lt;br /&gt;  {&lt;br /&gt;   scl = 1;&lt;br /&gt;   if(!scl) &lt;br /&gt;   {&lt;br /&gt;    dispay("ERROR");&lt;br /&gt;//    printf("error");&lt;br /&gt;    while(1);&lt;br /&gt;   } &lt;br /&gt;   }&lt;br /&gt;  void start()&lt;br /&gt;  {&lt;br /&gt;   sclhigh();&lt;br /&gt;  sda = 1;&lt;br /&gt;&lt;br /&gt;  if (!sda) &lt;br /&gt;  {&lt;br /&gt;     &lt;br /&gt;   dispay(" gg");&lt;br /&gt;//       printf("gg");&lt;br /&gt;   while(1);&lt;br /&gt;  }&lt;br /&gt;      sda = 0;&lt;br /&gt;  delay();&lt;br /&gt;  scl = 0;  &lt;br /&gt;  }&lt;br /&gt;  void end()&lt;br /&gt;  {&lt;br /&gt;      sclhigh();&lt;br /&gt;   sda = 0;   &lt;br /&gt;   delay();&lt;br /&gt;   sda = 1;&lt;br /&gt;  }&lt;br /&gt;int senddata(unsigned char databyte)&lt;br /&gt;  {&lt;br /&gt;   int i = 0,ret = 0,h=0;&lt;br /&gt;for (i = 0;i&lt;8;i++)&lt;br /&gt; {&lt;br /&gt;    if ((databyte &amp; 0x80) == 0x80) sda = 1;  // if msb is 1 then send 1&lt;br /&gt;    else sda = 0;   // else send 0 in sda line&lt;br /&gt;     databyte = databyte &lt;&lt; 1;                // left shift the data's &lt;br /&gt;    sclhigh();&lt;br /&gt;    delay();&lt;br /&gt;    scl = 0;&lt;br /&gt;    delay();&lt;br /&gt;   }&lt;br /&gt;   sda = 1;&lt;br /&gt;   sclhigh();&lt;br /&gt;   delay();&lt;br /&gt;   h = 1;&lt;br /&gt;  if(!sda) &lt;br /&gt;  {&lt;br /&gt;        h=0;&lt;br /&gt;    ret = 0;&lt;br /&gt;    }&lt;br /&gt;  else &lt;br /&gt;  {&lt;br /&gt;   dispay("2");&lt;br /&gt;   &lt;br /&gt;     ret = 1;&lt;br /&gt;  }&lt;br /&gt;   scl = 0;&lt;br /&gt;   delay();&lt;br /&gt;   return(ret);&lt;br /&gt;  }&lt;br /&gt;  void dela()&lt;br /&gt;  {&lt;br /&gt;   int i =2;&lt;br /&gt;   while(i--);&lt;br /&gt;  }&lt;br /&gt;void delay1()&lt;br /&gt;  {&lt;br /&gt;   int i =200;&lt;br /&gt;   while(i--);&lt;br /&gt;  }&lt;br /&gt;  char getdata(int ack)&lt;br /&gt;   {&lt;br /&gt;    int i;&lt;br /&gt;      rst1 = 0,rst2= 0;&lt;br /&gt;     for(i = 0;i&lt;8;i++)&lt;br /&gt;     {&lt;br /&gt;      sclhigh();&lt;br /&gt;      dela();&lt;br /&gt;      if (i&lt;=3)&lt;br /&gt;      {&lt;br /&gt;       rst1 *= 2;&lt;br /&gt;       if(sda) rst1++;&lt;br /&gt;      }&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;       rst2 *= 2; &lt;br /&gt;       if(sda) rst2++;&lt;br /&gt;      } &lt;br /&gt;      scl = 0;&lt;br /&gt;      dela();&lt;br /&gt;     }&lt;br /&gt;     scl = 0; &lt;br /&gt;     sda = ack;&lt;br /&gt;     sclhigh();&lt;br /&gt;     dela();&lt;br /&gt;    scl = 0;&lt;br /&gt;    sda = 1;&lt;br /&gt;    dela();&lt;br /&gt;    return('A');&lt;br /&gt;    }&lt;br /&gt;    void setclock(unsigned char setbyte,unsigned char addr)&lt;br /&gt;    {&lt;br /&gt;       while (senddata(setbyte))&lt;br /&gt;      {&lt;br /&gt;        end();&lt;br /&gt;        start();&lt;br /&gt;        while (senddata(addr))&lt;br /&gt;      { &lt;br /&gt;        end();&lt;br /&gt;        start();&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    void readclock()&lt;br /&gt;    {&lt;br /&gt;      start();    // send start signal&lt;br /&gt;      while (senddata(0xd0))&lt;br /&gt;      {&lt;br /&gt;          end();&lt;br /&gt;          start();&lt;br /&gt;      }&lt;br /&gt;      setclock(0x00,0xd0);&lt;br /&gt;      end();&lt;br /&gt;      start();&lt;br /&gt;      while (senddata(0xd1))&lt;br /&gt;      {&lt;br /&gt;          end();&lt;br /&gt;          start();&lt;br /&gt;      }&lt;br /&gt;    d_sec = getdata(0); // sec&lt;br /&gt;     clk1[6] = (char) (rst1 + 48);&lt;br /&gt;     clk1[7] = (char) (rst2 + 48);&lt;br /&gt;     clk1[5]=':';&lt;br /&gt;    d_sec = getdata(0); // min&lt;br /&gt;     clk1[3] = (char) (rst1 + 48);&lt;br /&gt;     clk1[4] = (char) (rst2 + 48);&lt;br /&gt;     clk1[2] = ':';&lt;br /&gt;    d_sec = getdata(0); // hrs&lt;br /&gt;      &lt;br /&gt;     pm=rst1&amp;0x02;&lt;br /&gt;     clk1[0] = (char) ((rst1&amp;0x01) + 48);&lt;br /&gt;     clk1[1] = (char) (rst2 + 48);&lt;br /&gt;     &lt;br /&gt;     if(pm)&lt;br /&gt;    {&lt;br /&gt;      clk1[8] = 'P';&lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;      else&lt;br /&gt;        {&lt;br /&gt;        clk1[8] = 'A';&lt;br /&gt;        &lt;br /&gt;        }&lt;br /&gt;        clk1[9]= 'M';&lt;br /&gt;      clk1[10] = ' ';  &lt;br /&gt;     clk1[11] = 'S';&lt;br /&gt;      clk1[12] = 'U';&lt;br /&gt;      clk1[13] = 'N';&lt;br /&gt;      d_sec = getdata(0);   // day1 &lt;br /&gt;      get_day(d_sec); &lt;br /&gt;   &lt;br /&gt;    d_sec = getdata(0);   // day  &lt;br /&gt;     clk1[14] = (char) (rst1 + 48);&lt;br /&gt;     clk1[15] = (char) (rst2 + 48);&lt;br /&gt;     clk1[16] = '/';&lt;br /&gt;    d_sec = getdata(0);// month&lt;br /&gt;     clk1[17] = (char) (rst1 + 48);&lt;br /&gt;     clk1[18] = (char) (rst2 + 48);&lt;br /&gt;     clk1[19] = '/';&lt;br /&gt;     d_sec = getdata(1);&lt;br /&gt;     clk1[20] = (char) (rst1 + 48);&lt;br /&gt;     clk1[21] = (char) (rst2 + 48);&lt;br /&gt;    lcd_comm(); &lt;br /&gt;      *(ptr_en)  = 0x01;&lt;br /&gt;      busy_check();    &lt;br /&gt;     dispay(clk1);&lt;br /&gt;      for(i=0;i&lt;=21;i++)&lt;br /&gt;       {&lt;br /&gt;       printf("%c",clk1[i]);&lt;br /&gt;       }&lt;br /&gt;       end();&lt;br /&gt;    } &lt;br /&gt; &lt;br /&gt;void second_line ()&lt;br /&gt;{&lt;br /&gt;  *ptr_cmd = 0x00;&lt;br /&gt;  *ptr_en = 0xC0; &lt;br /&gt;  busy_check ();&lt;br /&gt;  }&lt;br /&gt;int sign ()&lt;br /&gt;{&lt;br /&gt; result = (~result) + 1 ; &lt;br /&gt; *(ptr_cmd) = 0x01; &lt;br /&gt; *ptr_en = '-';  &lt;br /&gt; return result;&lt;br /&gt;}&lt;br /&gt;void adc_3()&lt;br /&gt;{&lt;br /&gt;char c,d,i;&lt;br /&gt;int e=0;&lt;br /&gt;&lt;br /&gt;init_lcd ();&lt;br /&gt;  spi ();&lt;br /&gt;  cs = 0;&lt;br /&gt;  while(1)&lt;br /&gt;  {&lt;br /&gt;    SPDAT = 0XC0;&lt;br /&gt;   while (SPCFG != 0X80);&lt;br /&gt;    SPCFG = 0;&lt;br /&gt;    c = SPDAT;&lt;br /&gt;    SPDAT = 0XFF;&lt;br /&gt;    while(SPCFG != 0X80);&lt;br /&gt;  SPCFG = 0;&lt;br /&gt;    i  = SPDAT;&lt;br /&gt;    cs = 1;&lt;br /&gt;    cs = 1;&lt;br /&gt;    cs = 0;&lt;br /&gt;    e = c;&lt;br /&gt;    e = e&lt;&lt;8;&lt;br /&gt;    e = e | i;&lt;br /&gt;    e = e&lt;&lt;1;&lt;br /&gt;    e = e &amp; 0x0fff;&lt;br /&gt;     display1("12BIT ADC OUTPUT");//display in LCD       &lt;br /&gt;     lcd_comm();       // LCD command routine call function&lt;br /&gt;    *(ptr_en) = 0xc0;// LCD display for 2nd line 1st location &lt;br /&gt;     delay1();   //call for delay routine&lt;br /&gt;      {&lt;br /&gt;      dip(((e%100000)/10000)+48);  // ,,&lt;br /&gt;      display1(".");                    &lt;br /&gt;      dip(((e%10000)/1000)+48);   // ,,&lt;br /&gt;      dip(((e%1000)/100)+48);    // ,,&lt;br /&gt;      dip(((e%100)/10)+48);     // ,,&lt;br /&gt;      dip((e%10)+48);          // ,,&lt;br /&gt;      } &lt;br /&gt;      lcd_comm();//LCD command routine call&lt;br /&gt;      *(ptr_en)=0xc6;//LCD 2nd line 8th position&lt;br /&gt;      lcd_comm();//LCD command routine call&lt;br /&gt;      *(ptr_en) = 0x01;// LCD command for clear the display&lt;br /&gt;      delay1();//Delay routine call for some delay&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;void ser_2()&lt;br /&gt; {&lt;br /&gt;     init_lcd();&lt;br /&gt;     display1("ser com:");&lt;br /&gt;     {&lt;br /&gt;     unsigned char m[]="hello ";&lt;br /&gt;     unsigned char a,x;&lt;br /&gt;  &lt;br /&gt;     TMOD=0x20;// Use Timer 1 8-bit Auto Reload mode&lt;br /&gt;     TH1=0xE8; //Baud Rate 1200 &lt;br /&gt;     SCON=0X50;// 8 bit,1 stop bit     &lt;br /&gt;     TR1=1;   // Start Timer 1 for Serial communication&lt;br /&gt;      while(1)&lt;br /&gt;  { &lt;br /&gt;       for(x=0;x&lt;6;x++)&lt;br /&gt;    {&lt;br /&gt;     a=m[x];&lt;br /&gt;     SBUF=m[x];&lt;br /&gt;     delay();&lt;br /&gt;     disp(a);&lt;br /&gt;     while(TI==0);&lt;br /&gt;     TI=0;&lt;br /&gt;    }&lt;br /&gt;   }            &lt;br /&gt; }}&lt;br /&gt;&lt;br /&gt;void cal_1()&lt;br /&gt; {&lt;br /&gt;   char de=2,co=0;&lt;br /&gt;   while(1)&lt;br /&gt;  {&lt;br /&gt;  init_lcd();   &lt;br /&gt;  lcd_comm();&lt;br /&gt;  &lt;br /&gt;  do&lt;br /&gt;    {&lt;br /&gt;         &lt;br /&gt;   /// (de--);&lt;br /&gt;    num1 = release_key ();&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;   while( num1 &lt; '0' || num1 &gt; '9' );&lt;br /&gt;       &lt;br /&gt;   *ptr_cmd = 0x01 ;&lt;br /&gt;   *ptr_en  = num1 ;&lt;br /&gt;   busy_check();&lt;br /&gt;   num1 = num1 - 0x30;&lt;br /&gt;   printf(" %x ",num1);&lt;br /&gt;   do&lt;br /&gt;    {&lt;br /&gt;     op = release_key ();&lt;br /&gt;    }&lt;br /&gt;      while( op &lt; '#' );&lt;br /&gt;   *ptr_cmd = 0x01;&lt;br /&gt;   if ( op == '#')&lt;br /&gt;       {  &lt;br /&gt;        for(co=0;co&lt;4;co++)&lt;br /&gt;        {   &lt;br /&gt;       if(op==1)&lt;br /&gt;       {&lt;br /&gt;      *ptr_en = '+';&lt;br /&gt;        }  &lt;br /&gt;        else if(op==2)&lt;br /&gt;        {&lt;br /&gt;      *ptr_en = '-';&lt;br /&gt;        }&lt;br /&gt;        else if(op==3)&lt;br /&gt;       {           &lt;br /&gt;      &lt;br /&gt;      *ptr_en = '*';&lt;br /&gt;       }&lt;br /&gt;        else&lt;br /&gt;       { &lt;br /&gt;      *ptr_en = '/';&lt;br /&gt;       }&lt;br /&gt;       }&lt;br /&gt;      }&lt;br /&gt;   busy_check();     &lt;br /&gt; &lt;br /&gt;   do {&lt;br /&gt;      // (op--);&lt;br /&gt;       {&lt;br /&gt;       num2 = release_key ();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;      } while( num2 &lt; '0' || num2 &gt; '9' );&lt;br /&gt;   *ptr_cmd = 0x01;&lt;br /&gt;   *ptr_en  = num2 ;&lt;br /&gt;    busy_check();&lt;br /&gt;    num2 = num2 - 0x30;&lt;br /&gt;   if (op == '#')&lt;br /&gt;      {&lt;br /&gt;        result = num1 + num2;&lt;br /&gt;        second_line ();&lt;br /&gt;        *(ptr_cmd) = 0x01;&lt;br /&gt;        *ptr_en = (result / 10 ) + 0x30;&lt;br /&gt;        busy_check ();&lt;br /&gt;        *(ptr_cmd) = 0x01;&lt;br /&gt;        *ptr_en = (result % 10 ) + 0x30;&lt;br /&gt;        busy_check ();&lt;br /&gt;        printf(" %d ",result);     &lt;br /&gt;      }    &lt;br /&gt;     else if ( op == '*' )&lt;br /&gt;     {&lt;br /&gt;        second_line ();      &lt;br /&gt;        result = num1 - num2;&lt;br /&gt;        result = (result &lt;= 9 &amp;&amp; result &gt;= 0 ) ?  result : sign ();&lt;br /&gt;        *(ptr_cmd) = 0x01;&lt;br /&gt;        *ptr_en = (result / 10 ) + 0x30;&lt;br /&gt;        busy_check ();&lt;br /&gt;        *(ptr_cmd) = 0x01;&lt;br /&gt;        *ptr_en = (result % 10 ) + 0x30;&lt;br /&gt;        busy_check ();&lt;br /&gt;        printf(" %x ",result);          &lt;br /&gt;     }&lt;br /&gt;    while(1){}&lt;br /&gt; }&lt;br /&gt;}  &lt;br /&gt;void rtc_4()&lt;br /&gt;{&lt;br /&gt;      int k;&lt;br /&gt;      long int s=60000;&lt;br /&gt;      init_lcd(); &lt;br /&gt;      printf("test");&lt;br /&gt;    start();    // send start signal&lt;br /&gt;   while(senddata(0xd0)){&lt;br /&gt;   end ();                    // send Slave address &amp; write mode&lt;br /&gt;   delay1();&lt;br /&gt;   start();&lt;br /&gt;   }&lt;br /&gt;      setclock(0x00,0xd0);&lt;br /&gt;  setclock(sec,0xd0);&lt;br /&gt;  setclock(min,0xd0);&lt;br /&gt;  setclock(hrs,0xd0);&lt;br /&gt;  setclock(day1,0xd0);&lt;br /&gt;  setclock(day,0xd0);&lt;br /&gt;  setclock(month,0xd0);&lt;br /&gt;  setclock(year,0xd0);&lt;br /&gt;  end();&lt;br /&gt;  readclock();&lt;br /&gt;  init_timer();&lt;br /&gt;  while(1);     &lt;br /&gt;  }  &lt;br /&gt;&lt;br /&gt;void main()&lt;br /&gt; {&lt;br /&gt;   char ch;&lt;br /&gt;   init_lcd();&lt;br /&gt;   dispmenu();&lt;br /&gt;   while(1)&lt;br /&gt;     {&lt;br /&gt;      ch=release_key();   &lt;br /&gt;        switch(ch)&lt;br /&gt;        {&lt;br /&gt;         case'1':cal_1();&lt;br /&gt;                 break;&lt;br /&gt;         case'2':ser_2();&lt;br /&gt;                 break;&lt;br /&gt;         case'3':adc_3();&lt;br /&gt;                 break;              &lt;br /&gt;         case'4':rtc_4();&lt;br /&gt;                 break;                     &lt;br /&gt;         default:printf("exit\n");&lt;br /&gt;        }                        &lt;br /&gt;     }&lt;br /&gt; }  &lt;br /&gt;              *******************End of Main Program********************&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10.4 CONCLUSION&lt;br /&gt;&lt;br /&gt;In future, I could use this way for controlling the temperature also and the RTC for setting the time intervals also and Scientific Calculator is also Implement, and normal Serial Communication replace wireless communication Zigbee and R.F is used. Since this communication through the SPI and I2C are wire based we would like to perform in wireless technologies also which will be more effective, Further it can be used for controlling and monitoring all other Parameters used in industries, appliances, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BIBLIOGRAPHY&lt;br /&gt;&lt;br /&gt;REFERENCE BOOKS&lt;br /&gt;&lt;br /&gt; The 8051 Microcontroller and Embedded Systems - Muhammad Ai Mazidi &amp; Co.&lt;br /&gt; Embedded Systems – Raj Kamal.&lt;br /&gt; Embedded Software Primer – David E Simon.&lt;br /&gt; Microcontrollers and Microprocessors &lt;br /&gt;&lt;br /&gt;WEBSITES&lt;br /&gt; www.gsmworld.com&lt;br /&gt; www.iec.org&lt;br /&gt; www.google.com&lt;br /&gt; www.raisonance.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-2883186893267132501?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/2883186893267132501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/single-board-computer-project-report.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/2883186893267132501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/2883186893267132501'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/single-board-computer-project-report.html' title='SINGLE BOARD COMPUTER PROJECT REPORT'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-5590665489800378119</id><published>2009-10-26T00:26:00.000-07:00</published><updated>2009-11-13T04:17:07.565-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FINAL YEAR PROJECT LIST 2009|8051 peoject list|embedded project list|embedded|8051|microcontroller|latest electronics projects'/><title type='text'>FINAL YEAR PROJECT LIST 2009</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/SuVQ-k4nRzI/AAAAAAAAAMc/27U0aSZ372s/s1600-h/chip1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 348px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/SuVQ-k4nRzI/AAAAAAAAAMc/27U0aSZ372s/s400/chip1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5396808764456650546" /&gt;&lt;/a&gt;&lt;br /&gt;FINAL YEAR PROJECT LIST 2009&lt;br /&gt;&lt;br /&gt;1. CAN based Fuel level indicator for multi tank vehicles&lt;br /&gt;2. PIC based Home Automation system using Programmable Scheduler&lt;br /&gt;3. Microcontroller Based PWM control of DC Motor&lt;br /&gt;4. Microcontroller Based Temperature Controller&lt;br /&gt;5. CAN based Plant level control system&lt;br /&gt;6. Speed Control of Induction Motor using V/F control&lt;br /&gt;7. Microcontroller Based Fuzzy logic Temperature Control&lt;br /&gt;8. Automatic Room Light Controller With Visitor Counter&lt;br /&gt;9. Microcontroller based speed control of 1- phase Induction motor &lt;br /&gt;10. Device Controlling through PC (Visual Basic)&lt;br /&gt;11. Wireless automated fire alarm system&lt;br /&gt;12. Remote Controlled Lamp Dimmer&lt;br /&gt;13. H-bridge based DC motor speed and direction control&lt;br /&gt;14. Temperature controlled Fan using TRIAC phase control&lt;br /&gt;15. PC based automatic energy meter reading&lt;br /&gt;16. PIC based Digital Tachometer using IR led/photodiode pair&lt;br /&gt;17. Time Operated Electrical Appliance Controlling System&lt;br /&gt;18. DC motor control using IR data communication&lt;br /&gt;19. Industrial DC Motor Control Panel&lt;br /&gt;20. Industrial Control Panel For Bipolar Stepper Motor&lt;br /&gt;21. PIC based Frequency counter  with seven segment interface&lt;br /&gt;22. Zero crossing switching of TRIAC using PIC&lt;br /&gt;23. Automatic lighting system for building automation&lt;br /&gt;24. Controlling home appliances using IR remote control&lt;br /&gt;25. Fuzzy logic based speed control of DC motor &lt;br /&gt;26. CAN based Fuel level indicator for multi tank vehicles&lt;br /&gt;27. Hi-Power Theatrical incandescent lamp dimmer&lt;br /&gt;28. Microcontroller based Line voltage &amp; frequency measurement&lt;br /&gt;29. Induction motor speed control using TRIAC&lt;br /&gt;30. Wireless Stepper motor control using RF&lt;br /&gt;31. Intelligent Fire Sprinkler System&lt;br /&gt;32. Wireless DC Motor Control using Infrared Communication&lt;br /&gt;33. Micro controller based DC Chopper using PWM signal&lt;br /&gt;34. Single phase voltage regulator using microcontroller&lt;br /&gt;35. Microcontroller based Full wave phase control using solid state relay&lt;br /&gt;36. PIC microcontroller based digital frequency meter&lt;br /&gt;37. Building automation system using human presence detector&lt;br /&gt;38. Energy Saving Emergency Light&lt;br /&gt;39. Temperature Controlled Fan for Building automation systems&lt;br /&gt;40. Design and Implementation of Distributed Control System using CAN&lt;br /&gt;41. Automatic Energy meter using PLC&lt;br /&gt;42. PLC based Remote electrical device on/off&lt;br /&gt;43. Remote Motor speed control using PLC&lt;br /&gt;44. Embedded Ethernet for Process Control using 8-bit microcontroller&lt;br /&gt;45. PC based home appliance control system&lt;br /&gt;46. PIC microcontroller based DC Chopper Controller&lt;br /&gt;47. Wireless Weather monitoring system using RF&lt;br /&gt;48. Automated human intrusion detection and  attacking system using PIR&lt;br /&gt;49. Embedded TCP/IP based Data Acquisition System &lt;br /&gt;50. CAN based home automation system&lt;br /&gt;51. Time operated device control using PIC microcontroller&lt;br /&gt;52. PIC based Home Automation system using Programmable Scheduler&lt;br /&gt;53. Industrial Control Panel For Bipolar Stepper Motor&lt;br /&gt;54. Speed Control of Induction Motor using V/F control&lt;br /&gt;55. Wireless automated fire alarm system&lt;br /&gt;56. DC motor control using IR data communication&lt;br /&gt;57. Microcontroller Based Temperature Controller&lt;br /&gt;58. Automatic lighting system for building automation&lt;br /&gt;59. Induction motor speed control using TRIAC&lt;br /&gt;60. Microcontroller Based Fuzzy logic Temperature Control&lt;br /&gt;61. PIC based Frequency counter  with seven segment interface&lt;br /&gt;62. Hi-Power Theatrical incandescent lamp dimmer&lt;br /&gt;63. Controlling home appliances using IR remote control&lt;br /&gt;64. Single phase voltage regulator using microcontroller&lt;br /&gt;65. Remote Motor speed control using PLC&lt;br /&gt;66. Embedded Ethernet for Process Control using 8-bit microcontroller&lt;br /&gt;67. CAN based home automation system&lt;br /&gt;68. Energy Saving Emergency Light&lt;br /&gt;69. Wireless DC Motor Control using Infrared Communication&lt;br /&gt;70. Automatic Energy meter using PLC&lt;br /&gt;71. Temperature Controlled Fan for Building automation systems&lt;br /&gt;72. Industrial DC Motor Control Panel&lt;br /&gt;73. Embedded TCP/IP based Data Acquisition System &lt;br /&gt;74. PIC based Digital Tachometer using IR led/photodiode pair&lt;br /&gt;75. Automatic Room Light Controller With Visitor Counter&lt;br /&gt;76. Design and Implementation of Distributed Control System using CAN&lt;br /&gt;77. Time operated device control using PIC microcontroller&lt;br /&gt;78. Intelligent Fire Sprinkler System&lt;br /&gt;79. Microcontroller based Full wave phase control using solid state relay&lt;br /&gt;80. Remote Motor speed control using PLC&lt;br /&gt;81. CAN based Fuel level indicator for multi tank vehicles&lt;br /&gt;82. Device Controlling through PC &lt;br /&gt;83. Remote Controlled Lamp Dimmer&lt;br /&gt;84. Fuzzy logic based speed control of DC motor &lt;br /&gt;85. Time Operated Electrical Appliance Controlling System&lt;br /&gt;86. Industrial Control Panel For Bipolar Stepper Motor&lt;br /&gt;87. Controlling home appliances using IR remote control&lt;br /&gt;88. PIC microcontroller based DC Chopper Controller&lt;br /&gt;89. CAN based home automation system&lt;br /&gt;90. Microcontroller based speed control of 1- phase Induction motor &lt;br /&gt;91. H-bridge based DC motor speed and direction control&lt;br /&gt;92. Wireless Weather monitoring system using RF&lt;br /&gt;93. Speed Control of Induction Motor using V/F control&lt;br /&gt;94. PC based automatic energy meter reading&lt;br /&gt;95. PLC based Remote electrical device on/off&lt;br /&gt;96. Microcontroller based Line voltage &amp; frequency measurement&lt;br /&gt;97. Wireless DC Motor Control using Infrared Communication&lt;br /&gt;98. PIC microcontroller based digital frequency meter&lt;br /&gt;99. Remote Controlled Lamp Dimmer&lt;br /&gt;100. Zero crossing switching of TRIAC using PIC&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-5590665489800378119?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/5590665489800378119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/final-year-project-list-2009.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5590665489800378119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5590665489800378119'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/final-year-project-list-2009.html' title='FINAL YEAR PROJECT LIST 2009'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EwvHoubUgBI/SuVQ-k4nRzI/AAAAAAAAAMc/27U0aSZ372s/s72-c/chip1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-7129542919280923793</id><published>2009-10-26T00:08:00.000-07:00</published><updated>2009-10-26T00:11:56.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RFID SECURITY SYSTEM C CODE'/><title type='text'>RFID SECURITY SYSTEM C CODE</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EwvHoubUgBI/SuVLshjlSdI/AAAAAAAAAMU/0qfRhFT_eNk/s1600-h/Long_Distance_RFID_Access_Control_System_Up_to_6_Meters.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://3.bp.blogspot.com/_EwvHoubUgBI/SuVLshjlSdI/AAAAAAAAAMU/0qfRhFT_eNk/s400/Long_Distance_RFID_Access_Control_System_Up_to_6_Meters.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5396802956767349202" /&gt;&lt;/a&gt;&lt;br /&gt;RFID SECURITY SYSTEM C CODE&lt;br /&gt; #include&lt;reg51.h&gt;&lt;br /&gt; #include&lt;stdio.h&gt;&lt;br /&gt; #include&lt;string.h&gt;&lt;br /&gt; sbit BUZZER=P2^0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;char a[4][3]={'1','2','3','4','5','6','7','8','9','*','0','#'};&lt;br /&gt;char b[4][3]={'*','*','*','*','*','*','*','*','*','*','*','*'};&lt;br /&gt;char pass9[] = {'1','2','3','4','\0'};&lt;br /&gt;&lt;br /&gt;char r=0,e=0,l;&lt;br /&gt;char msg[]="ENTERPASS:",password[6];&lt;br /&gt;char i,j,k,c=0;&lt;br /&gt;int z=0,s,f=0;&lt;br /&gt;&lt;br /&gt;xdata char *ptr_cmd = (xdata char *)0x0FFF8;         //LCD command mode control&lt;br /&gt;xdata char *ptr_en = (xdata char *)0x0FFF9;          //LCD Enable &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;char mybyte;&lt;br /&gt;void busy_check();&lt;br /&gt;void out();&lt;br /&gt;void pass_word();&lt;br /&gt;void baud_init();&lt;br /&gt;void release_key();&lt;br /&gt;void key_press();&lt;br /&gt;void debounce();&lt;br /&gt;void column();&lt;br /&gt;void init_lcd1();&lt;br /&gt;void display1(char *name);&lt;br /&gt;void clear_lcddisplay();&lt;br /&gt;void card_match();&lt;br /&gt;void second_line();&lt;br /&gt;void card_mismatch();&lt;br /&gt;void serial_buzz_command();&lt;br /&gt;&lt;br /&gt;void baud_init()&lt;br /&gt;{&lt;br /&gt; TMOD = 0x20;&lt;br /&gt; TH1 = 0xFD;&lt;br /&gt; SCON = 0x50;&lt;br /&gt; TR1 = 1;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; void delay1()&lt;br /&gt; {&lt;br /&gt; int y = 100;&lt;br /&gt; while(y--);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;void serial_tx()&lt;br /&gt; {&lt;br /&gt; SBUF = 0x42;&lt;br /&gt; while(TI == 0);&lt;br /&gt; TI = 0;&lt;br /&gt; delay1();&lt;br /&gt; &lt;br /&gt; SBUF = 0x01;&lt;br /&gt; while(TI == 0);&lt;br /&gt; TI = 0;&lt;br /&gt; delay1();&lt;br /&gt; &lt;br /&gt; SBUF = 0x59;&lt;br /&gt; while(TI == 0);&lt;br /&gt; TI = 0;&lt;br /&gt; delay1();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char serial_rx()&lt;br /&gt;{&lt;br /&gt; int x;&lt;br /&gt; while(RI == 0);&lt;br /&gt;  {&lt;br /&gt;   x++;&lt;br /&gt;   if(x==1000)&lt;br /&gt;   serial_tx();&lt;br /&gt;  }&lt;br /&gt; mybyte = SBUF;&lt;br /&gt; RI = 0;&lt;br /&gt; return (mybyte);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void busy_check()&lt;br /&gt;   {&lt;br /&gt;    *ptr_cmd = 0x02;&lt;br /&gt;    while((*ptr_en &amp; 0x80) != 0x00){}&lt;br /&gt;   }&lt;br /&gt;void delaysec()&lt;br /&gt;  {&lt;br /&gt;   unsigned long int i=10000;&lt;br /&gt;   while(i--);&lt;br /&gt;   }&lt;br /&gt; void lcd_comm()&lt;br /&gt;  {&lt;br /&gt;   *(ptr_cmd)   = 0x00;&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt; void init_lcd()&lt;br /&gt;   {&lt;br /&gt;     lcd_comm(); &lt;br /&gt;     *(ptr_en)       = 0x38;&lt;br /&gt;     busy_check();&lt;br /&gt;     &lt;br /&gt;     lcd_comm();&lt;br /&gt;      *(ptr_en)       = 0x0E;&lt;br /&gt;      busy_check();&lt;br /&gt;           &lt;br /&gt;     lcd_comm();&lt;br /&gt;     *(ptr_en)       = 0x80;&lt;br /&gt;     busy_check(); &lt;br /&gt;      &lt;br /&gt;      lcd_comm(); &lt;br /&gt;      *(ptr_en)  = 0x01;&lt;br /&gt;      busy_check();&lt;br /&gt;    }       &lt;br /&gt;void second_line()&lt;br /&gt;  {&lt;br /&gt;     lcd_comm();&lt;br /&gt;     *(ptr_en)       = 0xc0;&lt;br /&gt;     busy_check(); &lt;br /&gt;  } &lt;br /&gt;&lt;br /&gt;void display(char *name)&lt;br /&gt;  {&lt;br /&gt;   int l = strlen(name);&lt;br /&gt;   int i;&lt;br /&gt;   for(i = 0; i &lt; l ;i++)&lt;br /&gt;   {&lt;br /&gt;     &lt;br /&gt;     *(ptr_cmd) = 0x01;&lt;br /&gt;     *(ptr_en) = name[i];&lt;br /&gt;     busy_check();&lt;br /&gt;   &lt;br /&gt;    }     &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;void delay2()&lt;br /&gt;{&lt;br /&gt;  unsigned int i = 10000;&lt;br /&gt;  while ( i-- );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void delay()&lt;br /&gt;{&lt;br /&gt;  unsigned int i = 50000;&lt;br /&gt;  while ( i-- );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void display2()&lt;br /&gt;{&lt;br /&gt;*(ptr_cmd) = 0x01;&lt;br /&gt;*(ptr_en)  = b[r][c];&lt;br /&gt;busy_check();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void column()&lt;br /&gt;{&lt;br /&gt;if    ((P3 &amp; 0x30) == 0x30)&lt;br /&gt;{&lt;br /&gt;c=0;&lt;br /&gt;display2();&lt;br /&gt;&lt;br /&gt;password[z] = a[r][c];&lt;br /&gt;&lt;br /&gt;z++;&lt;br /&gt;                                       &lt;br /&gt;delay();&lt;br /&gt;}&lt;br /&gt;else if((P3 &amp; 0x28) == 0x28)&lt;br /&gt;{&lt;br /&gt;c=1;&lt;br /&gt;display2();&lt;br /&gt;password[z] = a[r][c];&lt;br /&gt;z++;                &lt;br /&gt;delay();&lt;br /&gt;}&lt;br /&gt;else if((P3 &amp; 0x18) == 0x18)&lt;br /&gt;{&lt;br /&gt;c=2;&lt;br /&gt;display2();&lt;br /&gt;password[z] = a[r][c];&lt;br /&gt;z++;&lt;br /&gt;delay();&lt;br /&gt;}&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;void clear_lcddisplay()&lt;br /&gt; {&lt;br /&gt;      lcd_comm(); &lt;br /&gt;     *( ptr_en )     = 0x01;&lt;br /&gt;    busy_check();&lt;br /&gt;     lcd_comm(); &lt;br /&gt;     *( ptr_en )     = 0x01;&lt;br /&gt;    busy_check();&lt;br /&gt;   &lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt;void init_lcd1()&lt;br /&gt;{&lt;br /&gt;     lcd_comm(); &lt;br /&gt;     *( ptr_en )     = 0x38;&lt;br /&gt;    busy_check();&lt;br /&gt;    &lt;br /&gt;     lcd_comm();&lt;br /&gt;      *(ptr_en)       = 0x0e;&lt;br /&gt;      busy_check();&lt;br /&gt;&lt;br /&gt;     lcd_comm();&lt;br /&gt;     *(ptr_en)       = 0x80;&lt;br /&gt;     busy_check();&lt;br /&gt;&lt;br /&gt;      lcd_comm(); &lt;br /&gt;      *(ptr_en)    = 0x01;&lt;br /&gt;      busy_check();&lt;br /&gt;  &lt;br /&gt;    for(i=0;i&lt;10;i++)  &lt;br /&gt;    {&lt;br /&gt;          *(ptr_cmd) = 0x01;&lt;br /&gt;     *(ptr_en) = msg[i];&lt;br /&gt;      busy_check();&lt;br /&gt;         }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;void debounce()&lt;br /&gt;{&lt;br /&gt;P1 = 0xfe;   //ground row 0 only&lt;br /&gt;&lt;br /&gt;while((P3 &amp; 0x38) != 0x38)&lt;br /&gt;{&lt;br /&gt;r=0;&lt;br /&gt;column();&lt;br /&gt;}&lt;br /&gt;P1 = 0xfd; //ground row 1 only&lt;br /&gt;&lt;br /&gt;while((P3 &amp; 0x38) != 0x38)&lt;br /&gt;{&lt;br /&gt;r=1;&lt;br /&gt;column();&lt;br /&gt;}&lt;br /&gt;P1 = 0xfb; //ground row 2 only&lt;br /&gt;&lt;br /&gt;while((P3 &amp; 0x38) != 0x38)&lt;br /&gt;{&lt;br /&gt;r=2;&lt;br /&gt;column();&lt;br /&gt;}&lt;br /&gt;P1 = 0xf7;  //ground row 3 only&lt;br /&gt;&lt;br /&gt;while((P3 &amp; 0x38) != 0x38)&lt;br /&gt;{&lt;br /&gt;r=3;&lt;br /&gt;column();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void release_key()&lt;br /&gt;{&lt;br /&gt;P1 = 0xf0;&lt;br /&gt;&lt;br /&gt;while((P3 &amp; 0x38) == 0x38)&lt;br /&gt;{delay2();}&lt;br /&gt;P3 = 0x0ff;&lt;br /&gt;debounce();&lt;br /&gt;delay ();&lt;br /&gt;}  &lt;br /&gt;void first_line()&lt;br /&gt; {&lt;br /&gt;      lcd_comm();&lt;br /&gt;      *(ptr_en)       = 0x80;&lt;br /&gt;      busy_check();&lt;br /&gt;}  &lt;br /&gt;&lt;br /&gt;void buzzer()&lt;br /&gt; {&lt;br /&gt;  char del=0;&lt;br /&gt;  BUZZER=1;&lt;br /&gt;  for(del=0;del&lt;=10;del++)&lt;br /&gt;  {&lt;br /&gt;  delay();&lt;br /&gt;  }  &lt;br /&gt;  P2=0x00;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;//***************************************************************************************************&lt;br /&gt;&lt;br /&gt;                                //MAIN PROGRAM STARTS HERE//&lt;br /&gt;&lt;br /&gt;//***************************************************************************************************&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;void main()&lt;br /&gt;   {&lt;br /&gt;   P2=0x00;&lt;br /&gt;  while(1)&lt;br /&gt;     {&lt;br /&gt;      char i=0; &lt;br /&gt;      char serial_no[21];&lt;br /&gt;      char temp1[]={'1','D','0','0','E','4','F','7','\0'};&lt;br /&gt;      &lt;br /&gt;      baud_init();&lt;br /&gt;      init_lcd();&lt;br /&gt;      display("DIP CARD NEAR ME");&lt;br /&gt;      serial_tx();&lt;br /&gt;      while(i&lt;=8)&lt;br /&gt;       {&lt;br /&gt;        baud_init();&lt;br /&gt;        serial_no[i]=serial_rx();&lt;br /&gt;        i++;&lt;br /&gt;        }&lt;br /&gt;        if(*serial_no==*temp1)&lt;br /&gt;           { &lt;br /&gt;           card_match();&lt;br /&gt;           }&lt;br /&gt;          else&lt;br /&gt;           {&lt;br /&gt;           card_mismatch();&lt;br /&gt;           }&lt;br /&gt;//         while(1);  &lt;br /&gt;   }&lt;br /&gt;        }&lt;br /&gt;       void card_match()&lt;br /&gt;         {&lt;br /&gt;                char f,o=4;  &lt;br /&gt;                second_line();&lt;br /&gt;                display("CARD ACCEPT");&lt;br /&gt;                for(f=0;f&lt;6;f++)&lt;br /&gt;                {&lt;br /&gt;                delay();&lt;br /&gt;                }&lt;br /&gt;                f=0;&lt;br /&gt;                init_lcd1();&lt;br /&gt;         &lt;br /&gt;                while(o--)&lt;br /&gt;                { &lt;br /&gt;                release_key();&lt;br /&gt;                }&lt;br /&gt;                &lt;br /&gt;                password[z] = '\0';&lt;br /&gt;                f = strcmp(pass9,password);&lt;br /&gt;                &lt;br /&gt;               if (f == 0 )&lt;br /&gt;               {&lt;br /&gt;                second_line();&lt;br /&gt;                display("PASSWORD VALID");&lt;br /&gt;                delay();&lt;br /&gt;                delay();&lt;br /&gt;                second_line();&lt;br /&gt;                display("NAME:XY EMP NO:5");&lt;br /&gt;                delay();&lt;br /&gt;                delay();&lt;br /&gt;                delay();&lt;br /&gt;               clear_lcddisplay();&lt;br /&gt;                           &lt;br /&gt;             &lt;br /&gt;             }     &lt;br /&gt;              else if ((f &gt;= 1 ) || (f &lt;= -1))&lt;br /&gt;              {&lt;br /&gt;&lt;br /&gt;                second_line();&lt;br /&gt;                display("PASSWORD INVALID");&lt;br /&gt;                clear_lcddisplay();&lt;br /&gt;               &lt;br /&gt;                &lt;br /&gt;                delay();&lt;br /&gt;                delay();&lt;br /&gt;                second_line();&lt;br /&gt;                display("NOT AN EMPLOYEE");&lt;br /&gt;                buzzer();&lt;br /&gt;                               &lt;br /&gt;                delay();&lt;br /&gt;                delay();&lt;br /&gt;                delay();     &lt;br /&gt;                clear_lcddisplay();&lt;br /&gt;                }&lt;br /&gt;              } &lt;br /&gt;          void card_mismatch()&lt;br /&gt;             {&lt;br /&gt;              second_line();&lt;br /&gt;              display("RONG CARD CALLSE");&lt;br /&gt;                buzzer(); &lt;br /&gt;                delay();&lt;br /&gt;                delay();&lt;br /&gt;                clear_lcddisplay();&lt;br /&gt;             }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-7129542919280923793?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/7129542919280923793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/rfid-security-system-c-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/7129542919280923793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/7129542919280923793'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/rfid-security-system-c-code.html' title='RFID SECURITY SYSTEM C CODE'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EwvHoubUgBI/SuVLshjlSdI/AAAAAAAAAMU/0qfRhFT_eNk/s72-c/Long_Distance_RFID_Access_Control_System_Up_to_6_Meters.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-2302093653402220380</id><published>2009-10-12T00:11:00.000-07:00</published><updated>2009-10-12T00:28:26.893-07:00</updated><title type='text'>GPRS</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EwvHoubUgBI/StLakzVajWI/AAAAAAAAAJc/iBJboggSaSw/s1600-h/GPRS1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 134px; height: 88px;" src="http://2.bp.blogspot.com/_EwvHoubUgBI/StLakzVajWI/AAAAAAAAAJc/iBJboggSaSw/s400/GPRS1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391612029706079586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/StLagzst-9I/AAAAAAAAAJU/-B8AFRJoTK0/s1600-h/GPRS.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 129px; height: 122px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/StLagzst-9I/AAAAAAAAAJU/-B8AFRJoTK0/s400/GPRS.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391611961084345298" /&gt;&lt;/a&gt;&lt;br /&gt;General packet radio service (GPRS) is a packet oriented mobile data service available to users of the 2G cellular communication systems global system for mobile communications (GSM), as well as in the 3G systems. In 2G systems, GPRS provides data rates of 56-114 kbit/s.&lt;br /&gt;GPRS data transfer is typically charged per megabyte of traffic transferred, while data communication via traditional circuit switching is billed per minute of connection time, independent of whether the user actually is using the capacity or is in an idle state. GPRS is a best-effort packet switched service, as opposed to circuit switching, where a certain quality of service (QoS) is guaranteed during the connection for non-mobile users.&lt;br /&gt;2G cellular systems combined with GPRS are often described as 2.5G, that is, a technology between the second (2G) and third (3G) generations of mobile telephony. It provides moderate speed data transfer, by using unused time division multiple access (TDMA) channels in, for example, the GSM system. Originally there was some thought to extend GPRS to cover other standards, but instead those networks are being converted to use the GSM standard, so that GSM is the only kind of network where GPRS is in use. GPRS is integrated into GSM Release 97 and newer releases. It was originally standardized by European Telecommunications Standards Institute (ETSI), but now by the 3rd Generation Partnership Project (3GPP).&lt;br /&gt;GPRS was developed as a GSM response to the earlier CDPD and i-mode packet switched cellular technologies.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Protocols supported&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;GPRS supports the following protocols:&lt;br /&gt;internet protocol (IP). In practice, the mobile built-in browser uses IPv4 since IPv6 is not yet popular.&lt;br /&gt;point-to-point protocol (PPP). In this mode PPP is often not supported by the mobile phone operator but if the mobile is used as a modem to the connected computer, PPP is used to tunnel IP to the phone. This allows an IP address to be assigned dynamically to the mobile equipment.&lt;br /&gt;X.25 connections. This is typically used for applications like wireless payment terminals, although it has been removed from the standard. X.25 can still be supported over PPP, or even over IP, but doing this requires either a network based router to perform encapsulation or intelligence built in to the end-device/terminal; e.g., user equipment (UE).&lt;br /&gt;When TCP/IP is used, each phone can have one or more IP addresses allocated. GPRS will store and forward the IP packets to the phone during cell handover (when you move from one cell to another). TCP handles any packet loss (e.g. due to a radio noise induced pause) resulting in a temporary throttling in transmission speed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-2302093653402220380?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/2302093653402220380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/gprs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/2302093653402220380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/2302093653402220380'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/gprs.html' title='GPRS'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EwvHoubUgBI/StLakzVajWI/AAAAAAAAAJc/iBJboggSaSw/s72-c/GPRS1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-5736290186231466346</id><published>2009-10-12T00:05:00.000-07:00</published><updated>2009-10-12T00:10:57.068-07:00</updated><title type='text'>GSM</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EwvHoubUgBI/StLWexFnRgI/AAAAAAAAAJM/2oCvc9nRae4/s1600-h/GSM5.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 118px; height: 136px;" src="http://3.bp.blogspot.com/_EwvHoubUgBI/StLWexFnRgI/AAAAAAAAAJM/2oCvc9nRae4/s400/GSM5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391607527977207298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/StLWaWPrVNI/AAAAAAAAAJE/6bLevHbLm8I/s1600-h/GSM.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 261px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/StLWaWPrVNI/AAAAAAAAAJE/6bLevHbLm8I/s400/GSM.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5391607452052182226" /&gt;&lt;/a&gt;&lt;br /&gt;GSM (Global System for Mobile communications: originally from Groupe Spécial Mobile) is the most popular standard for mobile phones in the world. Its promoter, the GSM Association, estimates that 80% of the global mobile market uses the standard.[1] GSM is used by over 3 billion people across more than 212 countries and territories.[2][3] Its ubiquity makes international roaming very common between mobile phone operators, enabling subscribers to use their phones in many parts of the world. GSM differs from its predecessors in that both signaling and speech channels are digital, and thus is considered a second generation (2G) mobile phone system. This has also meant that data communication was easy to build into the system. GSM EDGE is a 3G version of the protocol.&lt;br /&gt;The ubiquity of the GSM standard has been an advantage to both consumers (who benefit from the ability to roam and switch carriers without switching phones) and also to network operators (who can choose equipment from any of the many vendors implementing GSM[4]). GSM also pioneered a low-cost (to the network carrier) alternative to voice calls, the short message service (SMS, also called "text messaging"), which is now supported on other mobile standards as well. Another advantage is that the standard includes one worldwide emergency telephone number, 112.[5] This makes it easier for international travellers to connect to emergency services without knowing the local emergency number.&lt;br /&gt;Newer versions of the standard were backward-compatible with the original GSM phones. For example, Release '97 of the standard added packet data capabilities, by means of General Packet Radio Service (GPRS). Release '99 introduced higher speed data transmission using Enhanced Data Rates for GSM Evolution (EDGE).&lt;br /&gt;In 1982, the European Conference of Postal and Telecommunications Administrations (CEPT) created the Groupe Spécial Mobile (GSM) to develop a standard for a mobile telephone system that could be used across Europe.[6] In 1987, a memorandum of understanding was signed by 13 countries to develop a common cellular telephone system across Europe.[7][8] Finally the system created by SINTEF lead by Torleiv Maseng was selected.[9]&lt;br /&gt;In 1989, GSM responsibility was transferred to the European Telecommunications Standards Institute (ETSI) and phase I of the GSM specifications were published in 1990. The first GSM network was launched in 1991 by Radiolinja in Finland with joint technical infrastructure maintenance from Ericsson.[10] By the end of 1993, over a million subscribers were using GSM phone networks being operated by 70 carriers across 48 countries.[11&lt;br /&gt;GSM is a cellular network, which means that mobile phones connect to it by searching for cells in the immediate vicinity.&lt;br /&gt;There are five different cell sizes in a GSM network—macro, micro, pico, femto and umbrella cells. The coverage area of each cell varies according to the implementation environment. Macro cells can be regarded as cells where the base station antenna is installed on a mast or a building above average roof top level. Micro cells are cells whose antenna height is under average roof top level; they are typically used in urban areas. Picocells are small cells whose coverage diameter is a few dozen metres; they are mainly used indoors. Femtocells are cells designed for use in residential or small business environments and connect to the service provider’s network via a broadband internet connection. Umbrella cells are used to cover shadowed regions of smaller cells and fill in gaps in coverage between those cells.&lt;br /&gt;Cell horizontal radius varies depending on antenna height, antenna gain and propagation conditions from a couple of hundred meters to several tens of kilometres. The longest distance the GSM specification supports in practical use is 35 kilometres (22 mi). There are also several implementations of the concept of an extended cell[12], where the cell radius could be double or even more, depending on the antenna system, the type of terrain and the timing advance.&lt;br /&gt;Indoor coverage is also supported by GSM and may be achieved by using an indoor picocell base station, or an indoor repeater with distributed indoor antennas fed through power splitters, to deliver the radio signals from an antenna outdoors to the separate indoor distributed antenna system. These are typically deployed when a lot of call capacity is needed indoors; for example, in shopping centers or airports. However, this is not a prerequisite, since indoor coverage is also provided by in-building penetration of the radio signals from any nearby cell.&lt;br /&gt;The modulation used in GSM is Gaussian minimum-shift keying (GMSK), a kind of continuous-phase frequency shift keying. In GMSK, the signal to be modulated onto the carrier is first smoothed with a Gaussian low-pass filter prior to being fed to a frequency modulator, which greatly reduces the interference to neighboring channels (adjacent channel interference).&lt;br /&gt;&lt;br /&gt;GSM FREQUENCIES:&lt;br /&gt;GSM networks operate in a number of different frequency ranges (separated into GSM frequency ranges for 2G and UMTS frequency bands for 3G). Most 2G GSM networks operate in the 900 MHz or 1800 MHz bands. Some countries in the Americas (including Canada and the United States) use the 850 MHz and 1900 MHz bands because the 900 and 1800 MHz frequency bands were already allocated. Most 3G GSM networks in Europe operate in the 2100 MHz frequency band.&lt;br /&gt;The rarer 400 and 450 MHz frequency bands are assigned in some countries where these frequencies were previously used for first-generation systems.&lt;br /&gt;GSM-900 uses 890–915 MHz to send information from the mobile station to the base station (uplink) and 935–960 MHz for the other direction (downlink), providing 125 RF channels (channel numbers 0 to 124) spaced at 200 kHz. Duplex spacing of 45 MHz is used.&lt;br /&gt;In some countries the GSM-900 band has been extended to cover a larger frequency range. This 'extended GSM', E-GSM, uses 880–915 MHz (uplink) and 925–960 MHz (downlink), adding 50 channels (channel numbers 975 to 1023 and 0) to the original GSM-900 band. Time division multiplexing is used to allow eight full-rate or sixteen half-rate speech channels per radio frequency channel. There are eight radio timeslots (giving eight burst periods) grouped into what is called a TDMA frame. Half rate channels use alternate frames in the same timeslot. The channel data rate for all 8 channels is 270.833 kbit/s, and the frame duration is 4.615 ms.&lt;br /&gt;The transmission power in the handset is limited to a maximum of 2 watts in GSM850/900 and 1 watt in GSM1800/1900.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-5736290186231466346?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/5736290186231466346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/gsm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5736290186231466346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5736290186231466346'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/gsm.html' title='GSM'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EwvHoubUgBI/StLWexFnRgI/AAAAAAAAAJM/2oCvc9nRae4/s72-c/GSM5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-8363823698387943654</id><published>2009-10-11T23:45:00.001-07:00</published><updated>2009-10-12T00:03:45.597-07:00</updated><title type='text'>RFID</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/StLUy-2FUvI/AAAAAAAAAI8/xWN7QF4QfhY/s1600-h/images+(2).jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 138px; height: 103px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/StLUy-2FUvI/AAAAAAAAAI8/xWN7QF4QfhY/s400/images+(2).jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391605676244292338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EwvHoubUgBI/StLUuDrM3kI/AAAAAAAAAI0/gWJJSbqtTbE/s1600-h/images+(1).jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 128px; height: 92px;" src="http://1.bp.blogspot.com/_EwvHoubUgBI/StLUuDrM3kI/AAAAAAAAAI0/gWJJSbqtTbE/s400/images+(1).jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391605591641480770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EwvHoubUgBI/StLUpb60AcI/AAAAAAAAAIs/gO5n7neo7mw/s1600-h/images.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 132px; height: 111px;" src="http://2.bp.blogspot.com/_EwvHoubUgBI/StLUpb60AcI/AAAAAAAAAIs/gO5n7neo7mw/s400/images.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391605512250065346" /&gt;&lt;/a&gt;&lt;br /&gt;adio-frequency identification (RFID) is the use of an object (typically referred to as an RFID tag) applied to or incorporated into a product, animal, or person for the purpose of identification and tracking using radio waves. Some tags can be read from several meters away and beyond the line of sight of the reader.&lt;br /&gt;Most RFID tags contain at least two parts. One is an integrated circuit for storing and processing information, modulating and demodulating a radio-frequency (RF) signal, and other specialized functions. The second is an antenna for receiving and transmitting the signal.&lt;br /&gt;There are generally three types of RFID tags: active RFID tags, which contain a battery and can transmit signals autonomously, passive RFID tags, which have no battery and require an external source to provoke signal transmission and battery assisted passive (BAP) which require an external source to wake up but have significant higher forward link capability providing great read range.&lt;br /&gt;Today, RFID is used in enterprise supply chain management to improve the efficiency of inventory tracking and management.&lt;br /&gt;==History and technology background.&lt;br /&gt;&lt;br /&gt;RFID is the technology which makes it easy to conceal or incorporate them in other items. For example, in 2009 researchers at Bristol University successfully glued RFID microtransponders to live ants in order to study their behavior.[1] This trend towards increasingly miniaturized RFID is likely to continue as technology advances. However, the ability to read at distance is limited by the inverse-square law.&lt;br /&gt;Hitachi holds the record for the smallest RFID chip, at 0.05mm x 0.05mm. The Mu chip tags are 64 times smaller than the new RFID tags.[2] Manufacture is enabled by using the Silicon-on-Insulator (SOI) process. These "dust" sized chips can store 38-digit numbers using 128-bit Read Only Memory (ROM).[3] A major challenge is the attachment of the antennas, thus limiting read range to only millimeters.&lt;br /&gt;Potential alternatives to the radio frequencies (0.125–0.1342, 0.140–0.1485, 13.56, and 840–960 MHz) used are seen in optical RFID (or OPID) at 333 THz (900 nm), 380 THz (788 nm), 750 THz (400 nm).[4] The awkward antennas of RFID can be replaced with photovoltaic components and IR-LEDs on the ICs.&lt;br /&gt;&lt;br /&gt;RACE TIMING:&lt;br /&gt;Many forms of RFID race timing have been in use for timing races of different types since the early 1990s. The practice began with pigeon racing, introduced by a company called deister electronic Gmbh of Barsinghausen, Germany: Deister Electronics. It is used for registering race start and end timings for animals or individuals in a marathon-type race where it is impossible to get accurate stopwatch readings for every entrant.&lt;br /&gt;In foot races, racers wear passive tags which are read by antennae placed alongside the track. UHF based tags instead of Low or high frequency last generation tags provide accurate readings with specially designed antennas. Rush error, lap count errors and accidents at start time are avoided since anyone can start and finish anytime without being in a batch mode.&lt;br /&gt;RFID is being adapted by many recruitment agencies which have a PET (Physical Endurance Test) as their qualifying procedure especially in cases where the candidate volumes may run into millions (Indian Railway Recruitment Cells, Police and Power sector). An Indian Software company Software Outsourcing Services has perfected the system for the same purpose using UHF tags for the first time and they are able to process m&lt;blockquote&gt;&lt;/blockquote&gt;ore than 30,000 candidates per day.&lt;br /&gt;&lt;br /&gt;RFID and asset management:&lt;br /&gt;&lt;br /&gt;RFID (Radio Frequency Identification) combined with mobile computing and Web technologies provide a way for organizations to identify and manage their assets. Initially introduced to major retail by Craig Patterson, Knoxville, TN. Mobile computers, with integrated RFID readers, can now deliver a complete set of tools that eliminate paperwork, give proof of identification and attendance. This approach eliminates manual data entry. Web based management tools allow organizations to monitor their assets and make management decisions from anywhere in the world. Web based applications now mean that third parties, such as manufacturers and contractors can be granted access to update asset data, including for example, inspection history and transfer documentation online ensuring that the end user always has accurate, real-time data. Organizations are already using RFID tags combined with a mobile asset management solution to record and monitor the location of their assets, their current status, and whether they have been maintained.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-8363823698387943654?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/8363823698387943654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/rfid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/8363823698387943654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/8363823698387943654'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/rfid.html' title='RFID'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EwvHoubUgBI/StLUy-2FUvI/AAAAAAAAAI8/xWN7QF4QfhY/s72-c/images+(2).jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-5261744214495572656</id><published>2009-10-11T23:27:00.000-07:00</published><updated>2009-10-11T23:39:01.920-07:00</updated><title type='text'>EMBEDDED SYSTEM</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EwvHoubUgBI/StLO_3mg15I/AAAAAAAAAIk/D8N9auKVivs/s1600-h/eme1.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 135px; height: 117px;" src="http://4.bp.blogspot.com/_EwvHoubUgBI/StLO_3mg15I/AAAAAAAAAIk/D8N9auKVivs/s400/eme1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391599300568471442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EwvHoubUgBI/StLO5VBQ3SI/AAAAAAAAAIc/Hp6pXSNlsJQ/s1600-h/embe.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 122px; height: 96px;" src="http://2.bp.blogspot.com/_EwvHoubUgBI/StLO5VBQ3SI/AAAAAAAAAIc/Hp6pXSNlsJQ/s320/embe.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391599188206214434" /&gt;&lt;/a&gt;&lt;br /&gt;Developments within the semiconductor industry constitute one of the most interesting subplots of the rapid innovation in the high-tech industry. As pressure continues to achieve higher levels of device integration while reducing cost, size and complexity, the issue of process innovation has become very significant. Plus, economic and market forces are fueling the market. All of which makes it pertinent to comment on current trends (market and technology), as well as to assess potential breakthroughs in the near- and long-term future.&lt;br /&gt;&lt;br /&gt;To accommodate exponential growth demands for larger and faster transistors, chip designers and manufacturers constantly have pushed the envelope of technological, physical and design constraints. Various innovations and paradigm-defining ideas have taken shape as a result. The embedded systems concept is one significant trend in this context.&lt;br /&gt;&lt;br /&gt;This BCC report examines the embedded systems market, its fundamental basis, key technology drivers, primary use, critical applications and component segments. The report provides an up-to-date analysis of recent developments and current trends in the marketplace. The identification of significant revenue growth drivers in specific product categories is an additional aim.&lt;br /&gt;&lt;br /&gt;SCOPE OF STUDY:&lt;br /&gt;&lt;br /&gt;The report contains:&lt;br /&gt;&lt;br /&gt;Examination of trend lines, potential drift cycles and relationship formulae between the high-tech and semiconductor industries&lt;br /&gt;Analysis of new technology innovations in end-use markets&lt;br /&gt;Analysis of geographic trends&lt;br /&gt;Analysis of recent developments and current trends in the market in six major applications: computing, communications, consumer electronics, automotive, medical and office equipment, and industrial and military electronics with forecasts through 2009&lt;br /&gt;Identification of significant drivers of revenue growth in specific product categories&lt;br /&gt;A discussion of the competitive aspects of each segment, along with successful suppliers strategies in the market&lt;br /&gt;Profiles of a selection of the leading embedded vendors.&lt;br /&gt;&lt;br /&gt;METHODOLOGY:&lt;br /&gt;&lt;br /&gt;Research for this report was conducted via a number of data channels. The primary sources of information were: Internet searches and industry association data: and (ii) interviews conducted with chip component suppliers, custom engineering companies, and manufacturers of representative applications. In addition, other secondary sources were consulted for the report, including reviews of industry journals and publications, product literature, white papers and technical journals, and financial reports for industry suppliers. Internal sources included earlier reports from BCC on advanced electronic materials technologies.&lt;br /&gt;&lt;br /&gt;Noteworthy here is to elucidate the approach used to deduce growth projections for the embedded market, especially considering its relationship to the overall high-tech electronics and semiconductor industry. The methodology was as follows:&lt;br /&gt;&lt;br /&gt;First, we tabulated annual revenue numbers for the overall high-technology industry, the semiconductor business, and for chip-categories for the past 15 years (1988-2003). The goal was to determine trend lines, potential drift cycles, and, most importantly, relationship formulae between the industries. Using the historical data, we were able to decipher a relationship equation between chip component segment revenues and the high-tech industry revenues.&lt;br /&gt;Next we assessed extraneous factors, such as&lt;br /&gt;Economy (for example the slowdown over the past few years).&lt;br /&gt;Vacillation in market demand ¾ downturn in telecom and rise in auto, for example.&lt;br /&gt;New technology innovation in end-use markets (signifying greater feature demands on the chip features arena). A popular example was the pervading Internet phenomenon.&lt;br /&gt;Geographical trends ¾ the rise of Asia-Pac as a major consumer, for example.&lt;br /&gt;These key pointers were factored into the original relationship equation to get a more realistic and customized growth rate trend, especially catering to the varying demand and growth projected for different end-use applications within the embedded software, hardware and boards landscape.&lt;br /&gt;&lt;br /&gt;From an applications perspective, the embedded market forecast is based on the estimated demand in six major applications ¾ Computing, Communications, Consumer Electronics, Automotive, Medical and Office Equipment, and Industrial and Military Electronics. Application demand was aligned with corresponding demand for chip component categories.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-5261744214495572656?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/5261744214495572656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/embedded-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5261744214495572656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/5261744214495572656'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/embedded-system.html' title='EMBEDDED SYSTEM'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EwvHoubUgBI/StLO_3mg15I/AAAAAAAAAIk/D8N9auKVivs/s72-c/eme1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-1767297443344897932</id><published>2009-10-11T23:21:00.000-07:00</published><updated>2009-10-11T23:26:38.851-07:00</updated><title type='text'>ARM MICROCONTROLLER</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EwvHoubUgBI/StLL_WcpkfI/AAAAAAAAAIU/FMtOCKx8deE/s1600-h/ARM.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 142px; height: 144px;" src="http://3.bp.blogspot.com/_EwvHoubUgBI/StLL_WcpkfI/AAAAAAAAAIU/FMtOCKx8deE/s320/ARM.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391595993133847026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;aAAAAIE/1v2Ukvs8wSU/s320/ARM1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391595507520684722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EwvHoubUgBI/StLLezFeb_I/AAAAAAAAAH8/VqCSvGvBGh4/s1600-h/ARM1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 129px; height: 115px;" src="http://2.bp.blogspot.com/_EwvHoubUgBI/StLLezFeb_I/AAAAAAAAAH8/VqCSvGvBGh4/s320/ARM1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5391595433885593586" /&gt;&lt;/a&gt;&lt;br /&gt;The ARM is a 32-bit reduced instruction set computer (RISC) instruction set architecture (ISA) developed by ARM Limited. It was known as the Advanced RISC Machine, and before that as the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in terms of numbers produced.[1][2] They were originally conceived as a processor for desktop personal computers by Acorn Computers, a market now dominated by the x86 family used by IBM PC compatible computers. But the relative simplicity of ARM processors made them suitable for low power applications. This has made them dominant in the mobile and embedded electronics market as relatively low cost and small microprocessors and microcontrollers.&lt;br /&gt;As of 2007, about 98 percent of the more than a billion mobile phones sold each year use at least one ARM processor.[3] As of 2009, ARM processors account for approximately 90% of all embedded 32-bit RISC processors. ARM processors are used extensively in consumer electronics, including PDAs, mobile phones, iPods and other digital media and music players, hand-held game consoles, calculators and computer peripherals such as hard drives and routers.&lt;br /&gt;The ARM architecture is licensable. Companies that are currently or formerly ARM licensees include Alcatel, Atmel, Broadcom, Cirrus Logic, Digital Equipment Corporation, Freescale, Intel (through DEC), LG, Marvell Technology Group, NEC, NVIDIA, NXP (previously Philips), Oki, Qualcomm, Samsung, Sharp, ST Microelectronics, Symbios Logic, Texas Instruments, VLSI Technology, Yamaha and ZiiLABS.&lt;br /&gt;ARM processors are developed by ARM and by ARM licensees. Prominent examples of ARM Limited ARM processor families include the ARM7, ARM9, ARM11 and Cortex. Examples of ARM processors developed by major licensees include the DEC StrongARM, Freescale's i.MX, Marvell (formerly Intel) XScale, NVIDIA's Tegra, ST-Ericsson Nomadik, and Qualcomm's Snapdragon.&lt;br /&gt;&lt;br /&gt;fter achieving some success with the BBC Micro computer, Acorn Computers Ltd considered how to move on from the relatively simple MOS Technology 6502 processor to address business markets like the one that would soon be dominated by the IBM PC, launched in 1981. The Acorn Business Computer (ABC) plan required a number of second processors to be made to work with the BBC Micro platform, but processors such as the Motorola 68000 and National Semiconductor 32016 were unsuitable, and the 6502 was not powerful enough for a graphics based user interface.&lt;br /&gt;Acorn would need a new architecture, having tested all of the available processors and found them wanting. Acorn then seriously considered designing its own processor, and their engineers came across papers on the Berkeley RISC project. They felt it showed that if a class of graduate students could create a competitive 32-bit processor, then Acorn would have no problem. A trip to the Western Design Center in Phoenix showed Acorn engineers Steve Furber and Sophie Wilson that they did not need massive resources and state-of-the-art R&amp;D facilities.&lt;br /&gt;Wilson set about developing the instruction set, writing a simulation of the processor in BBC Basic that ran on a BBC Micro with a 6502 second processor. It convinced the Acorn engineers that they were on the right track. Before they could go any further, however, they would need more resources. It was time for Wilson to approach Acorn's CEO, Hermann Hauser, and explain what was afoot. Once the go-ahead had been given, a small team was put together to implement Wilson's model in hardware.&lt;br /&gt;he official Acorn RISC Machine project started in October 1983. VLSI Technology, Inc were chosen as silicon partner, since they already supplied Acorn with ROMs and some custom chips. The design was led by Wilson and Furber, with a key design goal of achieving low-latency input/output (interrupt) handling like the MOS Technology 6502 used in Acorn's existing computer designs. The 6502's memory access architecture had allowed developers to produce fast machines without the use of costly direct memory access hardware. VLSI produced the first ARM silicon on 26 April 1985 – it worked first time and came to be known as ARM1 by April 1985.[4] The first "real" production systems named ARM2 were available the following year.&lt;br /&gt;Its first practical application was as a second processor to the BBC Micro, where it was used to develop the simulation software to finish work on the support chips (VIDC, IOC, MEMC) and to speed up the operation of the CAD software used in developing ARM2. Wilson subsequently coded BBC Basic in ARM assembly language, and the in-depth knowledge obtained from designing the instruction set allowed the code to be very dense, making ARM BBC Basic an extremely good test for any ARM emulator. The original aim of a principally ARM-based computer was achieved in 1987 with the release of the Acorn Archimedes.&lt;br /&gt;Such was the secrecy surrounding the ARM CPU project that when Olivetti were negotiating to take a controlling share of Acorn in 1985, they were not told about the development team until after the negotiations had been finalised. In 1992 Acorn once more won the Queen's Award for Technology for the ARM.&lt;br /&gt;The ARM2 featured a 32-bit data bus, a 26-bit (64 Mbyte) address space and sixteen 32-bit registers. Program code had to lie within the first 64 Mbyte of the memory, as the program counter was limited to 26 bits because the top 6 bits of the 32-bit register served as status flags. The ARM2 was possibly the simplest useful 32-bit microprocessor in the world, with only 30,000 transistors (compare with Motorola's six-year older 68000 model with around 70,000 transistors). Much of this simplicity comes from not having microcode (which represents about one-quarter to one-third of the 68000) and, like most CPUs of the day, not including any cache. This simplicity led to its low power usage, while performing better than the Intel 80286.[5] A successor, ARM3, was produced with a 4KB cache, which further improved performance.&lt;br /&gt;In the late 1980s Apple Computer and VLSI Technology started working with Acorn on newer versions of the ARM core. The work was so important that Acorn spun off the design team in 1990 into a new company called Advanced RISC Machines Ltd. For this reason, ARM is sometimes expanded as Advanced RISC Machine instead of Acorn RISC Machine. Advanced RISC Machines became ARM Ltd when its parent company, ARM Holdings plc, floated on the London Stock Exchange and NASDAQ in 1998.[6]&lt;br /&gt;The new Apple-ARM work would eventually turn into the ARM6, first released in early 1992. Apple used the ARM6-based ARM 610 as the basis for their Apple Newton PDA. In 1994, Acorn used the ARM 610 as the main CPU in their Risc PC computers. DEC licensed the ARM6 architecture (which caused some confusion because they also produced Alpha microprocessors)[citation needed] and produced the StrongARM. At 233 MHz this CPU drew only 1 watt of power (more recent versions draw far less). This work was later passed to Intel as a part of a lawsuit settlement, and Intel took the opportunity to supplement their aging i960 line with the StrongARM. Intel later developed its own high performance implementation known as XScale which it has since sold to Marvell.&lt;br /&gt;The ARM core has remained largely the same size throughout these changes. ARM2 had 30,000 transistors, while the ARM6 grew to only 35,000. ARM's business has always been to sell IP cores, which licensees use to create microcontrollers and CPUs based on this core. The most successful implementation has been the ARM7TDMI with hundreds of millions sold in almost every kind of microcontroller equipped device.[citation needed] The idea is that the Original Design Manufacturer combines the ARM core with a number of optional parts to produce a complete CPU, one that can be built on old semiconductor fabs and still deliver substantial performance at a low cost. Atmel Corp. has been a precursor design center in the ARM7TDMI-Based Embedded System.&lt;br /&gt;ARM licensed about 1.6 billion cores in 2005. In 2005, about 1 billion ARM cores went into mobile phones.[7] As of January 2008, over 10 billion ARM cores have been built, and iSuppli predicts that 5 billion a year will ship in 2011.[8]&lt;br /&gt;The common architecture supported on smartphones, personal digital assistants and other handheld devices is ARMv4. XScale and ARM926 processors are ARMv5TE, and are now more numerous in high-end devices than the StrongARM, ARM925T and ARM7TDMI based ARMv4 processors.&lt;br /&gt;In 2009, some manufacturers introduced netbooks based on ARM architecture CPUs, in direct competition with netbooks based on Intel Atom.[9]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-1767297443344897932?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/1767297443344897932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/arm-microcontroller.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/1767297443344897932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/1767297443344897932'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/arm-microcontroller.html' title='ARM MICROCONTROLLER'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EwvHoubUgBI/StLL_WcpkfI/AAAAAAAAAIU/FMtOCKx8deE/s72-c/ARM.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-3736532635296456645</id><published>2009-10-11T23:17:00.000-07:00</published><updated>2009-10-11T23:20:34.233-07:00</updated><title type='text'>PIC MICROCONTROLLER</title><content type='html'>PIC is a family of Harvard architecture microcontrollers made by Microchip Technology, derived from the PIC1640[1] originally developed by General Instrument's Microelectronics Division. The name PIC initially referred to "Peripheral Interface Controller".[2][3]&lt;br /&gt;PICs are popular with both industrial developers and hobbyists alike due to their low cost, wide availability, large user base, extensive collection of application notes, availability of low cost or free development tools, and serial programming (and re-programming with flash memory) capability.&lt;br /&gt;Microchip announced on February 2008 the shipment of its six billionth PIC processor.[4&lt;br /&gt;&lt;br /&gt;The PIC architecture is distinctively minimalist. It is characterized by the following features:&lt;br /&gt;Separate code and data spaces (Harvard architecture)&lt;br /&gt;A small number of fixed length instructions&lt;br /&gt;Most instructions are single cycle execution (4 clock cycles), with single delay cycles upon branches and skips&lt;br /&gt;A single accumulator (W), the use of which (as source operand) is implied (i.e. is not encoded in the opcode)&lt;br /&gt;All RAM locations function as registers as both source and/or destination of math and other functions.[2]&lt;br /&gt;A hardware stack for storing return addresses&lt;br /&gt;A fairly small amount of addressable data space (typically 256 bytes), extended through banking&lt;br /&gt;Data space mapped CPU, port, and peripheral registers&lt;br /&gt;The program counter is also mapped into the data space and writable (this is used to implement indirect jumps).&lt;br /&gt;Unlike most other CPUs, there is no distinction between memory space and register space because the RAM serves the job of both memory and registers, and the RAM is usually just referred to as the register file or simply as the registers.&lt;br /&gt;&lt;br /&gt;PERFORMANCE:&lt;br /&gt;Many of these architectural decisions are directed at the maximization of top-end speed, or more precisely of speed-to-cost ratio. The PIC architecture was among the first scalar CPU designs, and is still among the simplest and cheapest. The Harvard architecture—in which instructions and data come from conveniently separate sources—simplifies timing and microcircuit design greatly, and this pays benefits in areas like clock speed, price, and power consumption.&lt;br /&gt;The PIC is particularly suited to implementation of fast lookup tables in the program space. Such lookups are O(1) and can complete via a single instruction taking two instruction cycles. Basically any function can be modelled in this way. Such optimization is facilitated by the relatively large program space of the PIC (e.g. 4096 x 14-bit words on the 16F690) and by the design of the instruction set, which allows for embedded constants.&lt;br /&gt;The simplicity of the PIC, and its scalar nature, also serve to greatly simplify the construction of real-time code. It is typically possible to multiply the line count of a PIC assembler listing by the instruction cycle time to determine execution time. (This is true because skip-based instructions take 2 cycles whether the skip occurs or doesn't.) On other CPUs (even the Atmel, with its MUL instruction), such quick methods are just not possible. In low-level development, precise timing is often critical to the success of the application, and the real-time features of the PIC can save crucial engineering time.&lt;br /&gt;A similarly useful and unique property of PICs is that their interrupt latency is constant (it's also low: 3 instruction cycles). The delay is constant even though instructions can take one or two instruction cycles: a dead cycle is optionally inserted into the interrupt response sequence to make this true. External interrupts have to be synchronized with the four clock instruction cycle, otherwise there can be a one instruction cycle jitter. Internal interrupts are already synchronized.&lt;br /&gt;The constant interrupt latency allows PICs to achieve interrupt driven low jitter timing sequences. An example of this is a video sync pulse generator. Other microcontrollers can do this in some cases, but it's awkward. The non-interrupt code has to anticipate the interrupt and enter into a sleep state before it arrives. On PICs, there is no need for this.&lt;br /&gt;The three-cycle latency is increased in practice because the PIC does not store its registers when entering the interrupt routine. Typically, 4 instructions are needed to store the W-register, the status register and switch to a specific bank before starting the actual interrupt processing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-3736532635296456645?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/3736532635296456645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/pic-mivrocontroller.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/3736532635296456645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/3736532635296456645'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/pic-mivrocontroller.html' title='PIC MICROCONTROLLER'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-9047600985915211611</id><published>2009-10-11T23:13:00.000-07:00</published><updated>2009-10-11T23:16:31.642-07:00</updated><title type='text'>MICROCONTROLLER</title><content type='html'>A microcontroller (also microcontroller unit, MCU or µC) is a small computer on a single integrated circuit consisting of a relatively simple CPU combined with support functions such as a crystal oscillator, timers, watchdog timer, serial and analog I/O etc. Program memory in the form of NOR flash or OTP ROM is also often included on chip, as well as a typically small amount of RAM. Microcontrollers are designed for small or dedicated applications. Thus, in contrast to the microprocessors used in personal computers and other high-performance or general purpose applications, simplicity is emphasized. Some microcontrollers may operate at clock rate frequencies as low as 4 kHz, as this is adequate for many typical applications, enabling low power consumption (milliwatts or microwatts). They will generally have the ability to retain functionality while waiting for an event such as a button press or other interrupt; power consumption while sleeping (CPU clock and most peripherals off) may be just nanowatts, making many of them well suited for long lasting battery applications. Other microcontrollers may serve performance-critical roles, where they may need to act more like a digital signal processor (DSP), with higher clock speeds and power consumption.&lt;br /&gt;Microcontrollers are used in automatically controlled products and devices, such as automobile engine control systems, remote controls, office machines, appliances, power tools, and toys. By reducing the size and cost compared to a design that uses a separate microprocessor, memory, and input/output devices, microcontrollers make it economical to digitally control even more devices and processes. Mixed signal microcontrollers are common, integrating analog components needed to control non-digital electronic systems.&lt;br /&gt;&lt;br /&gt;EMBEDDED DESIGN:&lt;br /&gt; microcontroller can be considered a self-contained system with a processor, memory and peripherals and can be used with an embedded system. (Only the software needs be added.)[1] The majority of computer systems in use today are embedded in other machinery, such as automobiles, telephones, appliances, and peripherals for computer systems. These are called embedded systems. While some embedded systems are very sophisticated, many have minimal requirements for memory and program length, with no operating system, and low software complexity. Typical input and output devices include switches, relays, solenoids, LEDs, small or custom LCD displays, radio frequency devices, and sensors for data such as temperature, humidity, light level etc. Embedded systems usually have no keyboard, screen, disks, printers, or other recognizable I/O devices of a personal computer, and may lack human interaction devices of any kind.&lt;br /&gt;OTHER MICROCONTROLLERS:&lt;br /&gt;&lt;br /&gt;Since embedded processors are usually used to control devices, they sometimes need to accept input from the device they are controlling. This is the purpose of the analog to digital converter. Since processors are built to interpret and process digital data, i.e. 1s and 0s, they won't be able to do anything with the analog signals that may be being sent to it by a device. So the analog to digital converter is used to convert the incoming data into a form that the processor can recognize. There is also a digital to analog converter that allows the processor to send data to the device it is controlling.&lt;br /&gt;In addition to the converters, many embedded microprocessors include a variety of timers as well. One of the most common types of timers is the Programmable Interval Timer (PIT). A PIT just counts down from some value to zero. Once it reaches zero, it sends an interrupt to the processor indicating that it has finished counting. This is useful for devices such as thermostats, which periodically test the temperature around them to see if they need to turn the air conditioner on, the heater on, etc.&lt;br /&gt;Time Processing Unit (TPU) is a sophisticated timer. In addition to counting down, the TPU can detect input events, generate output events, and perform other useful operations.&lt;br /&gt;A dedicated Pulse Width Modulation (PWM) block makes it possible for the CPU to control power converters, resistive loads, motors, etc., without using lots of CPU resources in tight timer loops.&lt;br /&gt;Universal Asynchronous Receiver/Transmitter (UART) block makes it possible to receive and transmit data over a serial line with very little load on the CPU.&lt;br /&gt;For those wanting Ethernet one can use an external chip like Crystal Semiconductor CS8900A, Realtek RTL8019, or Microchip ENC 28J60. All of them allow easy interfacing with low pin count.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-9047600985915211611?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/9047600985915211611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/microcontroller.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/9047600985915211611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/9047600985915211611'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/microcontroller.html' title='MICROCONTROLLER'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-870572890166392360</id><published>2009-10-11T23:10:00.000-07:00</published><updated>2009-10-11T23:13:06.951-07:00</updated><title type='text'>A BEGINNING IN EMBEDDED SYSTEMS</title><content type='html'>As the name suggests the word embedded mean anything that is fixed ,rooted and implanted. Microprocessors and microcontrollers are becoming tiny day by day thanks to the latest trends in chip designing and Moore’s law which is almost become self sustaining. These small smart chips are getting incorporated in almost all standalone systems.&lt;br /&gt;Embedded system means any system in which a micro controller or a microprocessor is hidden and the entire system is standalone.&lt;br /&gt;Embedded systems have to take care of lot of things simultaneously. They have to respond to external events, commands and user instructions. They must also take care of alarm conditions and faulty conditions caused by power failures , faulty components and most of the times by end user intervention.&lt;br /&gt;Software for embedded systems must handle many problems which are unheard of in application software for desktop or mainframe computers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some of the examples of embedded systems are:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An automatic washing machine since it requires only modes of operation from the user. It takes care of the rinsing, drying and washing instructions as set by the user.&lt;br /&gt;A phone line modem can also be considered to be an embedded system. Nowadays with system on chips and ASICS ,we have single chip modem chipsets from  ?TDK ,Motorola ,Zilog and many more.&lt;br /&gt;A laser printer is also is an embedded system. Most printers have substantial microcontrollers embedded in them to control tasks like procuring data from the communication port normally the parallel port or LPT1/2, for sensing when he operator pushes a button on the control panel of the printer., for sensing paper blockages and reporting to the front end or the troubleshooting printer software/GUI.&lt;br /&gt;But the largest function of the micro controller is to deal with the laser engine, which is the heart of the printer and which puts the ink on the paper at suitable places.&lt;br /&gt;The only thing the laser engine does with the assistance of the micro controller is whether to put a black dot on the paper or not.&lt;br /&gt;It is actually quite dumb it does not understand the images or the font, styles formatting etc. The smart thing in the printer is the microcontroller.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-870572890166392360?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/870572890166392360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/beginning-in-embedded-systems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/870572890166392360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/870572890166392360'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/beginning-in-embedded-systems.html' title='A BEGINNING IN EMBEDDED SYSTEMS'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9132604174567101680.post-1191903631856493171</id><published>2009-10-11T23:07:00.000-07:00</published><updated>2009-10-11T23:10:12.775-07:00</updated><title type='text'>Emerging trends in embedded systems</title><content type='html'>A series of emerging equipment such as STB, home media center, portable media player, mobile DVD etc. are joining the embedded systems camp in the IIC-China and ESC-China this April. With the continuing convergence of communication and computing functions within devices, embedded systems are becoming more complex and thus creating demands for more powerful processors and peripherals.&lt;br /&gt;&lt;br /&gt;Traditional CPU suppliers have become more active in launching embedded products. Last year, Intel Corp. launched an embedded processor aiming at the POS terminal and computing apps. Intel's Celeron CPU is extensively being applied to fresh IP STB. Furthermore, the company is developing chips for home media centers and portable media players.&lt;br /&gt;&lt;br /&gt;Also eyeing the good prospect of the embedded market this year is PC-chip supplier Transmeta Corp., which has launched two processors called Crusoe TM5700 and TM5900. The package size for both processors is 21-by-21mm—a reduction by 54 percent compared to last-generation products, making it suitable for mobile and embedded design.&lt;br /&gt;&lt;br /&gt;On the exhibit floor, big suppliers like Philips Semiconductor, Sharp Microelectronics, Netsilicon and Shanghai Brave Chips Micro Electronics Co. Ltd will showcase 16/32bit processors aiming at embedded applications. Philips will introduce its LPC2000 series MCU based on ARM7 kernel, which has flash memory, RAM, ADC, CAN and PWM channel and can be applied to automotive electronics, industry control and medical equipment. Meanwhile, Sharp Microelectronics will present its MCU series based on ARM7 and ARM9 processors targeted at low-cost, multimedia processing applications. Netsilicon has NET+ARM series processors, among which NS9775 is a 32bit, 200MHz microprocessor including four independent video channels. Each channel integrates hardware JBIG decompressing function and laser-engine port, providing color printer vendors with a single-chip controller solution. Netsilicon's other components aim at applications such as Ethernet.&lt;br /&gt;&lt;br /&gt;Although the demand for processing capability in embedded systems is increasing, traditional 8bit MCU is still the mainstream product in low-cost applications. Atmel Corp., Microchip Technology Inc., Infineon Technologies AG, RDC Semiconductor Co. Ltd, Epson and other companies will feature their respective MCU products.&lt;br /&gt;&lt;br /&gt;Microchip Technology has its PICMicro MCU devices based on different memory configurations, I/O and peripheral ports. Its latest product line is PIC18, aimed at low-power consumption and connection application that provides four serial ports, two synchronous serial ports (I²C and SPI) and two asynchronous serial ports. Also, they contain plenty of RAMs used as caches and flash memories used to store programs, which are suitable for instrument panel, embedded application supporting TCP/IP, industry control and monitoring application.&lt;br /&gt;&lt;br /&gt;Infineon's latest 8bit MCU product family has flash memory and other peripherals designed for engine control and automotive application. As the world's second leading 16bit MCU supplier, Infineon's series adapts C166SV2 kernel. The company says that it will launch 12 products to meet customers' different requirements on the strength of optimal price/performance this year.&lt;br /&gt;&lt;br /&gt;New players like Shanghai IPCore Technologies and Beijing Sigma Microelectronics Inc. will also be present in the event and plan to offer OEMs customized MCU design services. As embedded processors continue to play a crucial role in system design, FPGA suppliers will not be left behind in offering support for customers. Targeted at the consumer electronics field, Altera has launched the Nios series 32bit embedded processors that it says can help customers accelerate programmable design for displays, digital cameras, DVD players, STBs, computer peripherals etc.&lt;br /&gt;&lt;br /&gt;Embedded OS&lt;br /&gt;&lt;br /&gt;To meet the requirements of Chinese engineers for embedded software and OS, Wind River System Inc., Beijing CoreTek Systems Inc. and Beijing Microtech Research Corp. will feature their products or agent products.&lt;br /&gt;&lt;br /&gt;Wind River's VxWorks 6.0 OS offers memory protection, error checking/report and transparent interprocess communication, which can be applied to communications, consumer electronics, industry controls, automotive electronics and aerospace/national defense. Moreover, Wind River will bring to the conference its Integrate Development Environment Workbench 2.2 based on Eclipse. It supports multimission, multithread, multiprocess, multiprocessor, multiboard debugging and operates using VxWorks or Linux OS.&lt;br /&gt;&lt;br /&gt;CoreTek's DeltaOS is a real-time operating system that can be embedded in any equipment using a 32bit CPU as its kernel. It allows applications to be executed under a multimission environment and can meet basic requirements such as real-time response to external events, storage management and network demands of designers while developing electronic equipment.&lt;br /&gt;&lt;br /&gt;As development cycles continue to shorten, reliance to proprietary operating systems is becoming a trend. This is good news to Wind River and CoreTek.&lt;br /&gt;&lt;br /&gt;Microtech Research Corp. will market MontaVista's embedded Linux to Chinese engineers. This operating system supports eight series of CPUs and over 100 hardware boards, and can be applied to network equipment, mobile computers, communication equipment, network household appliances, Internet equipment, instrument control, smart phones etc. Microtec will also introduce other agent products, such as IAR's EW C/EC++ cross compiler and debugger, Abatron's BDI JTAG emulator, Trolltech's QT/E embedded-Linux graphic system and Qtopia's smart phone accessories.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9132604174567101680-1191903631856493171?l=embed4u.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://embed4u.blogspot.com/feeds/1191903631856493171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://embed4u.blogspot.com/2009/10/emerging-trends-in-embedded-systems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/1191903631856493171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9132604174567101680/posts/default/1191903631856493171'/><link rel='alternate' type='text/html' href='http://embed4u.blogspot.com/2009/10/emerging-trends-in-embedded-systems.html' title='Emerging trends in embedded systems'/><author><name>RAJESHS</name><uri>http://www.blogger.com/profile/05996569235194511462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
