Thursday 31 May 2012

Telephone Ring Repeater

Even though cordless phones have invaded our homes and offices, you don’t always have them at hand, and as their ringtones are usually very much quieter than the old rotary-dial- type analogue phones, it can happen that you miss a call you’ve been waiting for while you’ve been going about your daily business.
Until quite recently, you could still find remote ringers that could be plugged into any standard phone socket in order to have an additional ringer, but it seems as if these accessories are currently being phased out as everyone is ‘going cordless’. So we decided to suggest something better, with this phone ring repeater that makes it possible to control any device connected to the AC power outlet using the ringtone available on any subscriber line, and naturally, with all the guarantees of safety and isolation that are of course rightly expected. So it’s capable of driving a ringer, or indeed even a high-powered sounder to alert you when you are in the  garden, for example; but it is equally able to light a lamp for a ‘silent ring’ so as to avoid waking a sleeping baby or elderly person.
This circuit has been designed to be compatible with all phone systems the author is  aware of and also to be totally stand-alone. What’s more, the circuit can be connected to the phone system without any danger though in some countries, it is forbidden to connect non-approved devices to the public  switched telephone network (PSTN). Check local regulations in this respect.
In order to understand the principle of it, we just need to remember that the ringtone present on a phone installation is an alternating voltage, whose amplitude and frequency vary somewhat between countries, but always with comparable orders of magnitude except in the case of exchange systems  used in large companies. However, when the  line is quiescent or a call is in progress, it carries only a direct voltage. Capacitor C1 makes  it possible to pick off just the AC ringing volt-age, which is then rectified by D2 and amplitude-limited by D1. The resulting DC voltage charges capacitor C2, which makes it possible to light LED D3 as well as the LED in the  optocoupler IC1. This is no ordinary optocoupler, but is in fact an AC power zero-crossing  detecting optotriac, which allows us to con-trol the chosen load while generating no, or  less, interference, which would not be the  case using a standard optotriac.
The output triac it contains is not powerful  enough to drive a load directly connected  to the mains, so it is used to drive the trigger of triac TRI1, which is a totally standard  400 V device, rated at x amps, where x is chosen to suit the maximum power of the load  you want to control using this circuit. Resistors and capacitors R5 and C3 on the one  hand, and R6 and C4 on the other help, serve  to suppress the switching transients, which  are already inherently low because of the AC  zero-crossing switching provided by IC1.
Construction is not at all difficult, but does  require a few precautions in choosing some of the components. First of all, capacitor C1  must be an MKT type, mylar or equivalent,  with a 250 V operating voltage because of  the relatively high amplitude of the ringing  voltage. For safety reasons, it is essential that  capacitors C3 and C4 are self-healing types  intended for AC power use at 250 VAC. These  capacitors are generally known as Class X or  X2 capacitors.
As for the triac, it should have a 400 V operating voltage (but see below for users on 120  VAC power) and maximum current slightly  greater than the maximum current drawn by the load being driven. As this will usually be a sounder or a common lamp, a 2 A type will  usually be more than adequate in most situations. As the circuit can be expected to operate for short periods only, there is no need to  mount the triac on a heatsink. One final important point: as the right hand  part of the circuit is connected directly to AC  power, it is vital to fit this inside a fully-insulated housing, for obvious safety reasons.  Make sure you cannot touch any part when  the circuit is in use.
The circuit should work at once and without  any problems, but if you notice that D3 doesn’t  light up fully, and hence incorrect or erratic  triggering of the triac, because of too low a  ringing voltage, all you need to put things to rights is reduce the value of resistor R1.  The circuit as shown was dimensioned for  operation from 230 VAC power. Readers on  120 VAC power should modify the following  component values: R4 = 180 Ω; R5 = 220 Ω;  TRI = 200 V model; IC1 = MOC3031. Option-ally, C3 and C4 may be rated at 120 VAC.

Wireless and Wired Emergency Stop System

This circuit allows a cheap or discarded wireless doorbell set (i.e. transmitter and receiver unit) to be used as a remote emergency stop on a high-power electrical motor or motor controller system.

When the button on the wireless doorbell unit is pressed, the resulting 0 V signal from the receiver unit (‘motor E-Stop’) causes PNP  transistor T1 to be turned on. Via  transistor T2, latching relay Re1 then changes state. The same is achieved when the wired Motor E-Stop button, S1, is pressed. The reset button, S2, must be pressed to reverse the state of the latching relay.

The choice of T1 and T2 is not critical they are general purpose, low voltage PNP and NPN switching  transistors  respectively,  for  which  many equivalents exist.

As an EMC precaution, small capacitors (100 pF) are fitted across base resistors R1 and R2, preventing the motor  from being shut down by external  electrical noise and interference. The  set and reset coils of the latching relay  each have a flyback diode to prevent  back emf peaks damaging T1 and T2. The contacts of the latching relay can  be used to switch a more powerful  relay, or a motor driver.

Smart Laptop Docking Station

You can easily convert your ordinary docking station into a smart electronic laptop docking station with antitheft alarm.

The add-on sensor circuit required for this is built around IC CNY70 (IC1) and IC CD4060 (IC2) as shown in Fig. 1. IC CNY70 is an integrated reflective-type opto-sensor that contains a photo-transistor and an infrared LED. The LED emits infrared light and the transistor works as a receiver. The current flowing through the phototransistor depends on the intensity of the light detected.  IC CD4060 is a 14-stage ripple-carry binary counter. The counter is reset to zero by a gating positive voltage at the reset input independent of clock.

Power supply to the circuit is derived from AC mains by using step-down transformer X1. The transformer output is rectified by a full-wave bridge rectifier comprising diodes D1 through D4 and smoothed by capacitor C1. When power switch S1 is in ‘on’ position, the circuit gets power supply and power-on indicator LED1 lights  up. At the same time, the mains socket also gets the AC mains supply. This mains socket can be used to connect the laptop charger and/or a desktop lamp, etc. Working of the circuit is simple.

When the laptop is in the docking station, the phototransistor inside IC1 receives the IR light from the LED, reflected by the laptop surface. The phototransistor conducts to make reset pin 12 of IC2 high, so IC2 does not oscillate. When someone lifts up the laptop from the docking station, the photo-transistor cuts off and pin 12 of IC2 goes low. As a result, IC2 starts oscillating. After a few seconds, delay pin 3 of IC2 goes high to drive transistor  T1. The piezobuzzer starts beeping to raise an alert and the LED2 glows to indicate that someone has stolen the laptop from the dockyard.

The simplicity of the circuit makes it ideal for construction on a small  PCB. After completion of wiring, check the circuit for proper functioning of all the sections and enclose the unit in a suitable ABS case. Mount the finished unit beneath the docking station using small screws/double-sided glue pads so that the opto-sensor is exactly at the centre of the docking-station base  plate. Refer Fig. 2 for the arrangement.
If your laptop computer is black in colour, it will reflect far less IR light. You can overcome this drawback by attaching a white sticker suitably at the bottom of the laptop. Calibrate the circuit before first use. Set preset VR1 at the centre and place the laptop in the docking station. Now turn VR1 slowly until IC2 goes to standby (no-oscillation) mode. Then remove the laptop from the docking station, ensure that IC2 is enabled  (pin 12 is low) and wait for the alarm sound. Repeat the process and adjust VR1 until you get the correct result. Note that the LED in the opto sensor is  permanently powered via resistor R2. Similarly, you are free to experiment with the values of IC2 timing components C5, R3 and R4 for increasing or  decreasing the delay time.

Friday 25 May 2012

Electronic Security System

This reliable and easy-to-operate electronic security system can be used in banks, factories, commercial establishments, houses, etc.
The system comprises a monitoring sys-tem and several sensing zones. Each sensing zone is provided with a closed-loop switch known as sense switch. Sense switches are fixed on the doors of premises under security and connected to the monitoring system. As long as the doors are closed, sense switches are also closed. The monitoring system can be installed at a convenient central place for easy operation.
Fig. shows the monitoring circuit only for zone 1 along with the common alarm circuit. For other zones, the monitoring circuit is identical, with only the prefixes of components changing as per zone number. Encircled points A, B, and C of each zone monitoring circuit need to be joined to the corresponding points of the alarm circuit .

When zone 1 sensing switch S11, zone on/off slide switch S12, and system on/off switch S1 are all on, pnp transistor T12 reverse biases to go in cut-off condition, with its collector at around 0 volt. When the door fitted with sensor switch S11 is opened, transistor T12 gets forward biased and it conducts. Its collector voltage goes high, which forward biases transistor T10 via resistor R10 to turn it on. (Capacitor C10 serves as a filter capacitor.) As a result, the collector voltage of transistor T10 falls to forward bias transistor T11, which conducts and its collector voltage is sustained at a high level. Under this latched condition, sensor switch S11 and the state of transistor T12 have no effect. In this state, red LED11 of the zone remains lit.
Simultaneously, the high-level voltage from the collector of transistor T11 via di-ode D10 is applied to VDD pin 5 of siren sound generator IC1 (UM3561) whose pin 2 is grounded. Resistor R3 connected across pins 7 and 8 of IC1 determines the frequency of the in-built oscillator. As a result, IC1 starts generating the audio signal output at pin 3. The output voltage from IC1 is further amplified by Darlington pair of transistors T1 and T2. The amplified output of the Darlington pair drives the loud- speaker whose out- put volume can be con- trolled by potentiometer VR1. Capacitor C1 serves as a filter capacitor.
You can alter the alarm sound as desired by changing the connections of IC1 as shown in the table. The circuit continues to sound the alarm until zone door is closed (to close switch S11) and the reset switch is pressed momentarily (which causes transistor T10 to cut off, returning the circuit to its initial state).
The system operates off a 3V DC battery or recharging battery with charging circuit or battery eliminator. If desired, more operating zones can be added. Initially keep the monitoring system switch S1 off. Keep all the zone doors fixed with sensing switches S11, S21, S31, S41, etc closed. This keeps the sensing switches for respective zones in closed position. Also keep zone slide switches S12, S22, S32, S42, etc in ‘on’ position. This puts the system in operation, guarding all the zone doors.
Now, if the door of a particular zone is opened, the monitoring system sounds an audible alarm and the LED corresponding to the zone glows to indicate that the door of the zone is open. The alarm and the LED indication will continue even after that particular door with the sensing switch is immediately closed, or even if that switch is removed/damaged or connecting wire is cut open.
Any particular zone in the monitoring system can be put to operation or out of operation by switching on or switching off the corresponding slide switch in the monitoring system.


Thursday 24 May 2012

difference between c and embedded c


Though C and embedded C appear different and are used in different contexts, they have more similarities than the differences. Most of the constructs are same; the difference lies in their applications.
 
C is used for desktop computers, while embedded C is for microcontroller based applications. Accordingly, C has the luxury to use resources of a desktop PC like memory, OS, etc. While programming on desktop systems, we need not bother about memory. However, embedded C has to use with the limited resources (RAM, ROM, I/Os) on an embedded processor. Thus, program code must fit into the available program memory. If code exceeds the limit, the system is likely to crash.
 
Compilers for C (ANSI C) typically generate OS dependant executables. Embedded C requires compilers to create files to be downloaded to the microcontrollers/microprocessors where it needs to run. Embedded compilers give access to all resources which is not provided in compilers for desktop computer applications.
 
Embedded systems often have the real-time constraints, which is usually not there with desktop computer applications.
 
Embedded systems often do not have a console, which is available in case of desktop applications.
 
So, what basically is different while programming with embedded C is the mindset; for embedded applications, we need to optimally use the resources, make the program code efficient, and satisfy real time constraints, if any. All this is done using the basic constructs, syntaxes, and function libraries of ‘C’.

Mobile Car Stereo Player

Using a mobile phone while driving is dangerous. It is also against the law. However, you can use your mobile phone as a powerful music player with the help of a stereo power amplifier. This does away with the need of a sophisticated in-dash car music system. Most mobile phones have a music player that offers a number of features including preset/manual sound equalisers. They have standard 3.5mm stereo sockets that allow music to be played through standard stereo headphones/sound amplifiers. Nokia 2700 classic is an example.

A car audio amplifier with 3.5mm socket can be designed and simply connected to the mobile phone output via a shielded cable with suitable connectors/jacks (readymade 3.5mm male-to-male connector cable is a good alternative). Fig. 1 shows the circuit of car stereo player. It is built around popular single-chip audio power amplifier TDA1554Q (IC1). The TDA1554Q is an integrated class-B power amplifier in a 17-lead single-in-line (SIL) plastic power package.
IC TDA1554Q contains four 11W identical amplifiers with differential input stages (two inverting and two non-inverting) and can be used for single-ended or bridge applications. The gain of each amplifier is fixed at 20 dB. Here it is configured as two 22W stereo bridge amplifiers. The amplifier is powered from the 12V car battery through RCA socket J2. Diode D1 protects against wrong-polarity connection. LED1 indicates the power status
Connect stereo sound signal from the 3.5mm headset socket of the mobile phone to audio input socket J1. When you play the music from your mobile, IC1 amplifies the input. The output of IC1 is fed to speakers LS1 and LS2 fitted at a suitable place in your car. Electrolytic capacitor C5 connected between pin 4 of IC1 and GND improves the supply-voltage ripple rejection. Components R2 and C4 connected at mute/standby pin (pin 14) of IC1 eliminate the switch on/off plop. The circuit is quite compact. A good-quality heat-sink assembly is crucial for IC1. Fig. 2 shows the stereo socket and stereo jack.
Assemble the circuit on a general-purpose PCB and enclose in a suitable cabinet. Small dimensions of the power amplifier make it suitable for being enclosed in a plastic (ABS) case with vent holes. Signal input socket, speaker output terminals, on/off switch, indicator, fuse holder and power supply socket are best located on the front panel of the enclosure as shown in Fig.

Spy Camera Solar Power Box


Battery life has always been a critical consideration for most of the electronic gadgets and equipment. When we talk about spy  cameras,  which  normally  function  round-the-clock, they often run out of power within a few days.  Many spy cameras (CCTV cameras) are powered by 9V PP3 type batteries that offer five times more energy  than the regular 9V alkaline battery.

Mini CCTV cameras also accept 6-12V DC supply from AC mains adaptor through the DC IN jack. AC mains adaptor for the camera increases the capacity of the 9V PP3 battery but is bulky and noisy. Whether disposable  or rechargeable batteries, making frequent replacement or recharging them is a cumbersome job. The unique solar power box described here serves an alternative solution to the problem. 

The circuit of the solar power box is simple. It contains a  battery charger and a battery health indicator and  a few other components.  As shown in the circuit,  DC supply available from  the solar panel (SP1) is  directly applied to the in-put of the circuit through  a protection diode (D1).  This diode is used to pre-vent  the  reverse  current  flow from the battery to  the  solar  panel  during  night. Thus, D1 allows  the current to flow from the solar panel  to the battery only. Low-voltage-drop  type 1N5817 diode is perfect for the  job.

At the heart of the circuit is an integrated current source, realised using a  popular 3-pin adjustable voltage regulator LM317T(IC1). This IC is designed  to adjust its internal resistance between  the In (pin 3) and Out (pin 2) terminals  to maintain a constant voltage of 1.25V  between the Out (pin 2) and Adj (pin 1) terminals. Here, a 9V, 280 mAh  rechargeable PP3 type Ni-MH battery  (BATT) is used as reservoir. Normally,  a charging current of about 10 per cent  of  ampere-hour  rating  is  safe  for  the  battery. Resistor R1 (39-ohm, 0.5W),  connected between pin 1 and 3 of IC1,  limits  the  charging  current  to  about  30 mA. DC output from the battery is  available at output jack J2. Red LED  ( LED1) is used as a battery ‘health’  indicator. Switch S1 is used to start the  charging while S2 is used for connect-ing the load. Note that suitable heat  sink should be used for the IC1.

The proper selection of solar panel  is important but not critical. A miniature 12V type solar panel with a cur-rent output of about 100 mA can be  used. Even if you have a solar panel  with  higher  voltage  rating,  it  will  not  create a problem as the circuit ensures  that the charging current cannot exceed  the predetermined value.

The circuit can be easily assembled  on a general-purpose PCB and housed  in a small plastic cabinet.


Mini Ups System

This circuit provides an uninterrupted  power supply (UPS) to operate 12V, 9V and 5V DC-powered instruments at up to 1A current. The backup battery takes up the load without spikes or delay when the mains power gets interrupted. It can also be used as a workbench power supply that provides 12V, 9V and 5V operating voltages. The circuit immediately disconnects the load when the battery voltage reduces to 10.5V to  prevent deep discharge of the battery.  LED1  indication  is  provided  to  show  the full charge voltage level of the battery. miniature white LEDs (LED2 and  LED3) are used as emergency lamps during power failure at night.



A standard step-down transformer provides 12V of AC, which is rectified by diodes D1 and D2. Capacitor C1 provides ripple-free DC to  charge the battery and to the remaining circuit. When the mains power is  on, diode D3 gets forward biased to charge the battery. Resistor R1 limits the charging current. Potentiometer VR1 (10k) with transistor T1 acts as the voltage comparator to indicate the voltage level. VR1 is so adjusted that LED1 is in the ‘off’ mode. When the battery is fully charged, LED1 glows indicating a full voltage level of 12V.

When the mains power fails, diode D3 gets reverse biased and D4 gets forward biased so that the battery can automatically take up the load without any delay. When the battery voltage or  input voltage  alls below 10.5V, a cut-off circuit is used  to prevent deep discharging of the battery. Resistor R3, zener diode  ZD1 (10.5V) and transistor  T2  form  the  cut-off circuit. When the voltage level is above 10.5V, transistor T2 conducts and its base becomes negative (as set by R3, VR2 and ZD1). But when the voltage reduces below  10.5V, the zener diode stops conduction and the base voltage of transistor T2 becomes positive. It goes into the ‘cut-off’ mode and prevents the current in the output stage. Preset VR2 (22k) adjusts the voltage below 0.6V to make T2 work if the voltage is above 10.5V.

When power from the mains is available, all output voltages—12V, 9V and 5V—are ready to run the load. On the other hand, when the mains  power is down, output  volt-ages can run the load only when the  battery is fully charged (as indicated by LED1). For the partially charged battery, only 9V and 5V are available. Also, no output is available when the voltage goes below 10.5V. If battery voltage varies between 10.5V and  13V, output at terminal A may also vary between 10.5V and 12V, when the UPS system is in battery mode.

Outputs at points B and C provide 9V and 5V, respectively, through regulator ICs (IC1 and IC2), while output A provides 12V through the zener diode. The emergency lamp uses two ultra-bright white LEDs (LED2 and LED3) with current limiting resistors R5 and R6. The lamp can be manually switched ‘on’ and ‘off’ by S1. The circuit is assembled on a general purpose PCB. There is adequate space between the components to avoid overlapping. heat sinks for transistor T2 and regulator ICs (7809 and 7805) to dissipate heat are used.

The positive and negative rails should be strong enough to handle high current. Before connecting the circuit to the battery and transformer, connect it to a variable power supply. Provide 12V DC and adjust VR1 till LED1  glows. After setting the high voltage  level, reduce the voltage to 10.5V and adjust  VR2  till  the  output  trips  off.  After  the  settings  are complete, remove the variable power sup-ply and connect a fully-charged battery to the terminals and see that LED1 is  on. After making all the adjustment connect the circuit to the battery and transformer. The battery used in the circuit is a 12V, 4.5Ah UPS battery.

detail about the 8085 microprocessor


The Intel 8085 is an 8-bit microprocessor introduced by Intel in 1977. It was binary-compatible with the more-famous Intel 8080 but required less supporting hardware, thus allowing simpler and less expensive microcomputer systems to be built.
The "5" in the model number came from the fact that the 8085 requires only a +5-volt (V) power supply rather than the +5V, −5V and +12V supplies the 8080 needed. Both processors were sometimes used in computers running the CP/M operating system, and the 8085 also saw use as a micro controller, by virtue of its low component count. Both designs were eclipsed for desktop computers by the compatible Zilog Z80, which took over most of the CP/M computer market as well as taking a share of the booming home computer market in the early-to-mid-1980s.
The 8085 had a long life as a controller. Once designed into such products as the DECtape controller and the VT100 video terminal in the late 1970s, it continued to serve for new production throughout the life span of those products (generally longer than the product life of desktop computers)

Description

The 8085 is a conventional von Newman design based on the Intel 8080. Unlike the 8080 it does not multiplex state signals onto the data bus, but the 8-bit data bus was instead multiplexed with the lower part of the 16-bit address bus to limit the number of pins to 40. Pin No. 40 is used for the power supply (+5v) and pin No. 20 for ground. Pin No. 39 is used as the hold pin. Pins No. 15 to No. 8 are generally used for address buses. The processor was designed using nMOS circuitry and the later "H" versions were implemented in Intel's enhanced nMOS process called HMOS, originally developed for fast static RAM products. Only a 5 Volt supply is needed, like competing processors and unlike the 8080. The 8085 uses approximately 6,500transistors.
The 8085 incorporates the functions of the 8224 (clock generator) and the 8228 (system controller), increasing the level of integration. A downside compared to similar contemporary designs (such as the Z80) was the fact that the buses required demultiplexing; however, address latches in the Intel 8155, 8355, and 8755 memory chips allowed a direct interface, so an 8085 along with these chips was almost a complete system.
The 8085 has extensions to support new interrupts, with three maskable interrupts (RST 7.5, RST 6.5 and RST 5.5), one non-maskable interrupt(TRAP), and one externally serviced interrupt (INTR). The RST n.5 interrupts refer to actual pins on the processor, a feature which permitted simple systems to avoid the cost of a separate interrupt controller.
Like the 8080, the 8085 can accommodate slower memories through externally generated wait states (pin 35, READY), and has provisions for Direct Memory Access (DMA) using HOLD and HLDA signals (pins 39 and 38). An improvement over the 8080 was that the 8085 can itself drive a piezoelectric crystal directly connected to it, and a built in clock generator generates the internal high amplitude two-phase clock signals at half the crystal frequency (a 6.14 MHz crystal would yield a 3.07 MHz clock, for instance).
The 8085 is a binary compatible follow up on the 8080, using the same basic instruction set as the 8080. Only a few minor instructions were new to the 8085 above the 8080 set.

Applications

For the extensive use of 8085 in various applications, the microprocessor is provided with an instruction set which consists of various instructions such as MOV, ADD, SUB, JMP etc. These instructions are written in the form of a program which is used to perform various operations such as branching, addition, subtraction, bitwise logical and bit shift operations. More complex operations and other arithmetic operations must be implemented in software. For example, multiplication is implemented using a multiplication algorithm.
The 8085 processor was used in a few early personal computers, for example, the TRS-80 Model 100 line used a OKI manufactured 80C85 (MSM80C85ARS). The CMOS version 80C85 of the NMOS/HMOS 8085 processor has several manufacturers. Some manufacturers provide variants with additional functions such as additional instructions. The rad-hard version of the 8085 has been in on-board instrument data processors for several NASA and ESA space physics missions in the 1990s and early 2000s, including CRRES, Polar, FAST, Cluster, HESSI, theSojourner Mars Rover and THEMIS. The Swiss company SAIA used the 8085 and the 8085-2 as the CPUs of their PCA1 line of programmable logic controllers during the 1980s.

detail about the embedded c


Introduction to Embedded C
Looking around, we find ourselves to be surrounded by various types of embedded systems. Be it a digital camera or a mobile phone or a washing machine, all of them has some kind of processor functioning inside it. Associated with each processor is the embedded software. If hardware forms the body of an embedded system, embedded processor acts as the brain, and embedded software forms its soul. It is the embedded software which primarily governs the functioning of embedded systems.
 
During infancy years of microprocessor based systems, programs were developed using assemblers and fused into the EPROMs. There used to be no mechanism to find what the program was doing. LEDs, switches, etc. were used to check correct execution of the program. Some ‘very fortunate’ developers had In-circuit Simulators (ICEs), but they were too costly and were not quite reliable as well.
 
As time progressed, use of microprocessor-specific assembly-only as the programming language reduced and embedded systems moved onto C as theembedded programming language of choice. C is the most widely used programming language for embedded processors/controllers. Assembly is also used but mainly to implement those portions of the code where very high timing accuracy, code size efficiency, etc. are prime requirements.
 
Initially C was developed by Kernighan and Ritchie to fit into the space of 8K and to write (portable) operating systems. Originally it was implemented on UNIX operating systems. As it was intended for operating systems development, it can manipulate memory addresses. Also, it allowed programmers to write very compact codes. This has given it the reputation as the language of choice for hackers too.
 
As assembly language programs are specific to a processor, assembly language didn’t offer portability across systems. To overcome this disadvantage, several high level languages, including C, came up. Some other languages like PLM, Modula-2, Pascal, etc. also came but couldn’t find wide acceptance. Amongst those, C got wide acceptance for not only embedded systems, but also for desktop applications. Even though C might have lost its sheen as mainstream language for general purpose applications, it still is having a strong-hold in embedded programming. Due to the wide acceptance of C in the embedded systems, various kinds of support tools like compilers & cross-compilers, ICE, etc. came up and all this facilitated development of embedded systems using C.
 

hello

hello