STICK
In this project we show that how we modify the blind stick for blind person.
We convert the normal blind stick into robotic blind stick. In this stick we
use five different sensor with microcontroller interface. Here in this project
we use ic 89s51 as a main microcontroller to interface the blind stick with
the different sensors and different sound. Main part of this project is
software, software is to be written in assmeblly language and assemble this
software in the 8051 assembler. After assemble the software in the assembler
we assemble it and then assembler automatically convert this asm file into
hex file. Now this hex file is to be transfer into the blank ship with the help
of programmer kit. Programmer kit is connect with the computer via serial
port and hex file from the computer is to be transfer into the blank chip with
the help of this kit. We use a multitime programmable chip, so we use this
chip for many time.
SENSOR LOGIC:
In light sensor we use LDR, ldr sense a excessive light and due to this light
our circuit trigger and alarm is on , on every sensor alarm sound is different.
LDR is basically use for a excessive light like, car headlight in night.
Mercury sensor for falling logic, when stick fall on the ground then mercury
sensor activate and at this time provide a negative signal to the
microcontroller through transistor circuit.
Infra red transmitter and receiver circuit , sense a interruption and when
controller sense this interruption then produce a sound. Along with the infra
red transmitter we use photodidoe to sense a interruption and controller
produce a sound.
Water sense is simply a two conducting wire when sense a water then act
automatically and produce a sound from the controller.
REMOTE SENSOR. In the remote sensor we attach one infra red eye with
the circuit. This eye is a special frequency decoder eye. We use this eye in
t.v receiver. This eye is respond a small signal when any remote of 36 k htz
produce a signal. With the help of this eye we catch a 36 kHtz signal and
then proceed to the microcontroller circuit.
Any blind person wanted to locate his blind stick then first of all he press
the remote in all direction. If the stick is in the room then eye respond with
the sound buzzer
Digital voice recording chips with different features and coding technology
for speech compression and processing are available on the market from a
number of semiconductor manufacture. Advanced chips
such as Texas
prediction.. On the other hand APR 9600 single chip voice recorder and
playback device from Aplus integrated circuits makes use of a proprietary
analogue storage technique implemented using flash non-volatic memory
process in which each cell is capable of storing up to 256 voltage levels.
This technology enables the APR9600 to reproduce voice signals in the
natural form. The APR 9600 is a good stand lone voice recorder or playback
ic with non volatile storage and playback capability fro 32 to 60 seconds. It
can record and play multiple message at random or in sequential mode. The
user can select sample rates with consequent quality and recording time
trade off. Microphone amplifier, automatic gain control ( AGC ) circuits,
internal antialiashing filter, integrated output amplifier and message
management are some of the features of the APR 9600. Complete chip
management is accomplished through the device control and message
control blocks. Voice signal from the microphone is fed into the
chip
through a differential amplifier. It is further amplified by connecting AnaOut ( pin 21 ) to Ana_in ( pin 20) via an external Dc blocking capacitor C1.
a bias signal is applied to the microphone and to save power during
playback, the ground return of this bias network can be connected to the
normally open side of the record switch. Both Mic.in and Mic.Ref ( pins
18 and 19) must be coupled to the microphone network through capacitors.
Recording signal from the external source can also be fed directly into the
chip using Ana-In ( pin 20), but the connection between ana_in ( pin 20) and
Ana)out ( pin 21) is still required for playback. An internal anti-aliasing
filter automatically adjusts its response according to the sampling frequency
selected. Then the signal is processed into the memory array through a
combination of the sample and hold circuits and analogue read/write circuit.
The incoming voice signals are sampled and the instantaneous voltage
samples are stored in the non-volatic flash memory cells in the 8 bit binary
encoded format. During playback, the stored signals are retrived from the
memory, smoothed to form a continuous signal level at the speaker terminals
SP+ and SP- ( pins 14 and 15 respectively) is at about 12mw power into 16
ohm impedence. The output from pin 14 ( sp+) is further amplified by the
low power amplifier using LM386 ( IC2) as shown in the figure. The
recorded message is reproduced into speaker LS1. an internal oscillaot
provides sampling clock to the APR 9600. the frequency od the oscillator
and sampling rate depend on the value of resistor R12 connected across the
OSCR ( pin 7 ) of the chip and the ground.
Higher sampling rates improve the voice bandwidth requirement and thus
reduce the duration lower sampling
sets the AGC attack time. ( the attack time is defined as the delay present
before the AGC circuit begins to adjust gain)
The modes are defined by pins 24, 25 and 9 as shown as table _1 and cannot
be mixed. An important feature of the apr9600 chip is indication of changes
in the device status through beeps superimposed on the device output: for
example, the start of recording is indicated by a beep, so the person can now
start speaking into the microphone. This feature is enabled by making pin
11 high
recording
COMPONENTS USED:
IC 89S51 CONTROLLER
APR 9600 VOICE PROCESSOR.
LM 386 SOUND AMPLIFIER.
IC 7805 5 VOLT REGULATOR.
TRANSISTOR NPN BC 548(4)
PNP BC 558 (3)
PUSH TO ON SWITCH 5PC
ON/OFF SWITCH 1PC
CONDENSER MIKE (1)
VARIABLE RESISTOR 4K7 (2)
CAPACITOR 1000 MFD (2),
470 MFD (1),
33MFD (1),
47 MFD (1)
10 MFD (1)
L.E.D (6)
RESISTOR:
10 K OHM (5)
1 K OHM (5)
4K7 VARIABLE (2)
100 K (7)
470 OHM (5)
4K7 (3)
220 K (1)
CRYSTAL 12 Mhtz
27 PF (2) PIECE GROUNDED FROM THE CRYSTAL TO REDUCE
NOISE.
.01 (2) WITH THE CONDENSER MIKE CIRCUIT
What happens if one of the resistors in the voltage divider is replaced by an LDR? In the
circuit below, Rtop is a 10
resistor, and an LDR is used as Rbottom :
, 0.5
in the
In other words, this circuit gives a LOW voltage when the LDR is in the light, and a
HIGH voltage when the LDR is in the shade. The voltage divider circuit gives an output
Temperature sensors
A temperature-sensitive resistor is are several different types:
How could you make a sensor circuit to detect temperatures less than 4C to warn
motorists that there may be ice on the road? You want HIGH:
part of V across them. A suitable circuit for use with a 9 V supply is:
The 4 a voltage divider which provides 1.6 V across the microphone. Sound waves
generate small changes in voltage, usually in the range 10-20 mV. To isolate these small
signals from the steady 1.6 V, a capacitor is used.
The pull down resistor in the first circuit when the switch is pressed. A resistor value of
org 0000h
sjmp main
our next command is sjmp main. It means that jump to the main function
automatically. Main function is start from the 0030h location. Our next
program is start from the 0030 h location.
org 0030h
main:
jnb p1.0,water
jnb p1.1,falling
jnb p1.2,fire
jnb p1.3,light
jnb p1.4,inter
jnb p1.5,reset
Our first work of this stick is to be monitor the all the sensors if there is any
interruption from water, heat light or any thing then jump to specify location
automatically
; for the water sensor we use two metallic plate under the stick , when water
touches on this stick then buzzer is on and at this time we set a counter on
onlu for one buzzer, so buzzer rings for only one time and stop
automatically. But if there is continueous water sensing then buzzer is switch
on regularly.
water:
mov r0,#01
acall buzzer
acall buzzer
on the falling sensor we use one mercury sensor. In the mercury sensor we
use two metallic sensor and with mercury inside , when stick fall on the
road then metallic plates join together and at this time buzzer is on, In the
falling mode we call the buzzer signal for 2 timer.
fire:
mov r0,#03
acall buzzer
fire sensor: in the fire sensor we we use one thermistor with transistor
circuit. With NTC thermistor. When we heat the thermistor then thermistor
value is to be decreased and circuit activate and buzzer is on. Note that for
all the sensors we use negative input to the microcontroller. When
microcontroller is on reset position then all the pins are goes high and we
program the microcontroller for negative logic. So that from all the sensors
we provide a negative input to the microcontroller.
light:
mov r0,#04
acall buzzer
sjmp main
In the light sensor we use ldr as a main sensor. When light fall on the ldr
then ldr shows a low resistance and due to that transistor provide a negative
signal to the controller. In the light version we provide a 4 time buzzer
sound.
inter:
mov r0,#05
acall buzzer
ljmp main
In the interruption mode we use one infra red led and photodiode in pair. If
there is any object in the front of the stick then infra red light is reflected
from the object and due to that photodiode gets a negative signal on the
controller. When controller sense a negative signal on the pin then processor
provide a five time buzzer sound.
buzzer:
; BUZZER IS OFF
acall delay
DJNZ R0,S1
DELAY:
MOV R1,#03
MOV R2,#04
MOV R3,#02
SIM:
DJNZ R1,SIM
DJNZ R2,SIM
DJNZ R3,SIM
RET
RESET:
SETB P1.0
sJMP reset.
Basic of microcontroller.
Look around. Notice the smart intelligent systems? Be it the T.V, washing
machines, video games, telephones, automobiles, aero planes, power
systems, or any application having a LED or a LCD as a user interface, the
control is likely to be in the hands of a micro controller!
Measure and control, thats where the micro controller is at its best.
Micro controllers are here to stay. Going by the current trend, it is obvious
that micro controllers will be playing bigger and bigger roles in the different
activities of our lives.
These embedded chips are very small, but are designed to replace
components much bigger and bulky In size. They process information very
intelligently and efficiently. They sense the environment around them. The
signals they gather are tuned into digital data that streams through tributaries
of circuit lines at the speed of light. Inside the microprocessor collates and
calculators. The software has middling intelligence. Then in a split second,
the processed streams are shoved out.
This does not require ultra violet rays, and memory can be cleared using
circuits within the chip itself.
Finally there is the FLASH, which is an improvement over the EEPROM.
While the terms EEPROM and flash are sometimes used interchangeably,
the difference lies in the fact that flash erases the complete memory at one
stroke, and not act on the individual cells. This results in reducing the time
for erasure.
PIC
One of the famous microcontrollers used in the industries. It is
based on RISC Architecture which makes the microcontroller process faster than
other microcontroller.
INTEL
These are the first to manufacture microcontrollers. These are not
as sophisticated other microcontrollers but still the easiest one to learn.
ATMEL
Atmels AVR microcontrollers are one of the most powerful
in the embedded industry. This is the only microcontroller having 1kb of ram even
the entry stage. But it is unfortunate that in India we are unable to find this kind of
microcontroller.
Intel 8051
Intel 8051 is CISC architecture which is easy to program in assembly language and also
has a good support for High level languages.
The memory of the microcontroller can be extended up to 64k.
This microcontroller is one of the easiest microcontrollers to learn.
The 8051 microcontroller is in the field for more than 20 years. There are lots of books
and study materials are readily available for 8051.
Derivatives
The best thing done by Intel is to give the designs of the 8051 microcontroller to
everyone. So it is not the fact that Intel is the only manufacture for the 8051 there more
than 20 manufactures, with each of minimum 20 models. Literally there are hundreds of
models of 8051 microcontroller available in market to choose. Some of the major
manufactures of 8051 are
Atmel
Philips
Philips
The Philipss 8051 derivatives has more number of features than in any
microcontroller. The costs of the Philips microcontrollers are higher than the Atmels
which makes us to choose Atmel more often than Philips
Dallas
Dallas has made many revolutions in the semiconductor market. Dallass 8051
derivative is the fastest one in the market. It works 3 times as fast as a 8051 can process.
But we are unable to get more in India.
Atmel
These people were the one to master the flash devices. They are the cheapest
microcontroller available in the market. Atmels even introduced a 20pin variant of 8051
named 2051. The Atmels 8051 derivatives can be got in India less than 70 rupees. There
are lots of cheap programmers available in India for Atmel. So it is always good for
students to stick with 8051 when you learn a new microcontroller.
Architecture
Architecture is must to learn because before learning new machine it is necessary to learn
the capabilities of the machine. This is some thing like before learning about the car you
cannot become a good driver. The architecture of the 8051 is given below.
The 8051 doesnt have any special feature than other microcontroller. The only feature is
that it is easy to learn. Architecture makes us to know about the hardware features of the
microcontroller. The features of the 8051 are
The 8051 has a 8-Bit CPU that means it is able to process 8 bit of data at a time. 8051 has
235 instructions. Some of the important registers and their functions are
The positive side (+ve) of the battery is connected to one side of a switch.
The other side of the switch is connected to a bulb or LED (Light Emitting
Diode). The bulb is then connected to a resistor, and the other end of the
resistor is connected to the negative (-ve) side of the battery.
When the switch is closed or switched on the bulb glows. When the switch
is open or switched off the bulb goes off
If you are instructed to put the switch on and off every 30 seconds, how
would you do it? Obviously you would keep looking at your watch and
every time the second hand crosses 30 seconds you would keep turning the
switch on and off.
Imagine if you had to do this action consistently for a full day. Do you think
you would be able to do it? Now if you had to do this for a month, a year??
No way, you would say!
The next step would be, then to make it automatic. This is where we use the
Microcontroller.
But if the action has to take place every 30 seconds, how will the
microcontroller keep track of time?
Execution time
Look at the following instruction,
clr p1.0
This is an assembly language instruction. It means we are instructing the
microcontroller to put a value of zero in bit zero of port one. This
instruction is equivalent to telling the microcontroller to switch on the bulb.
The instruction then to instruct the microcontroller to switch off the bulb is,
Set p1.0
This instructs the microcontroller to put a value of one in bit zero of port
one.
Dont worry about what bit zero and port one means. We shall learn it in
more detail as we proceed.
There are a set of well defined instructions, which are used while
communicating with the microcontroller. Each of these instructions requires
10,000,000/12=833333.33333 cycles.
Therefore for one cycle, what would be the time? Try it out.
The instruction clr p1.0 would use one cycle to execute. Similarly, the
instruction setb p1.0 also uses one cycle.
Getting back to our bulb example, all we would need to do is to instruct the
microcontroller to carry out some instructions equivalent to a period of 30
seconds, like counting from zero upwards, then switch on the bulb, carry out
instructions equivalent to 30 seconds and switch off the bulb.
Just put the whole thing in a loop, and you have a never ending on-off
sequence.
Let us now have a look at the features of the 8051 core, keeping the above
example as a reference,
1. 8-bit CPU.( Consisting of the A and B registers)
Most of the transactions within the microcontroller are carried out through
the A register, also known as the Accumulator. In addition all arithmetic
functions are carried out generally in the A register. There is another
Thus port one would have 8 bits. There are a total of four ports named p0,
p1, p2, p3, giving a total of 32 lines. These lines can be used both as input or
output.
5. Two 16 bit timers / counters.
A microcontroller normally executes one instruction at a time. However
certain applications would require that some event has to be tracked
independent of the main program.
The manufacturers have provided a solution, by providing two timers. These
timers execute in the background independent of the main program. Once
the required time has been reached, (remember the time calculations
described above?), they can trigger a branch in the main program.
These timers can also be used as counters, so that they can count the number
of events, and on reaching the required count, can cause a branch in the main
program.
6. Full Duplex serial data receiver / transmitter.
The 8051 microcontroller is capable of communicating with external devices
like the PC etc. Here data is sent in the form of bytes, at predefined speeds,
also known as baud rates.
The transmission is serial, in the sense, one bit at a time
7. 5- interrupt sources with two priority levels (Two external and three
internal)
During the discussion on the timers, we had indicated that the timers can
trigger a branch in the main program. However, what would we do in case
we would like the microcontroller to take the branch, and then return back to
the main program, without having to constantly check whether the required
time / count has been reached?
This is where the interrupts come into play. These can be set to either the
timers, or to some external events. Whenever the background program has
reached the required criteria in terms of time or count or an external event,
the branch is taken, and on completion of the branch, the control returns to
the main program.
Priority levels indicate which interrupt is more important, and needs to be
executed first in case two interrupts occur at the same time.
8. On-chip clock oscillator.
This represents the oscillator circuits within the microcontroller. Thus the
hardware is reduced to just simply connecting an external crystal, to achieve
the required pulsing rate.
2
3
5.
6.
7.
PORT2. port 2 also have a 8 pins. It can be used as a input or output. There
is no need of any pull up resistor to this pin.
PORT 3. Port3 occupies a totoal 8 pins from pin no 10 to pin no 17. It can
be
used as input or output. Port 3 does not require any pull up resistor. The
same as port 1 and port2. Port 3 is configured as an output port on reset. Port
3 has the additional function of providing some important signals such as
interrupts. Port 3 also use for serial communication.
ALE
ALE is an output pin and is active high. When connecting an 8031 to external
memory, port 0 provides both address and data. In other words, the 8031 multiplexes
address and data through port 0 to save pins. The ALE pin is used for demultiplexing the
address and data by connecting to the ic 74ls373 chip.
PSEN. PSEN stands for program store eneable. In an 8031 based system in which an
external rom holds the program code, this pin is connected to the OE pin of the rom.
EA. EA. In 89c51 8751 or any other family member of the ateml 89c51 series all come
with on-chip rom to store programs, in such cases the EA pin is connected to the Vcc.
For family member 8031 and 8032 is which there is no on chip rom, code is stored in
external memory and this is fetched by 8031. In that case EA pin must be connected to
GND pin to indicate that the code is stored externally.
ACCUMULATOR
0E0H
B REGISTER
0F0H
PSW
0D0H
SP
STACK POINTER
81H
DPTR
DPL
DPH
82H
83H
P0
PORT0
80H
P1
PORT1
90H
P2
PORT2
0A0H
P3
PORT3
0B0H
TMOD
89H
TCON
88H
TH0
8CH
TLO
8AH
TH1
8DH
TL1
8BH
SCON
SERIAL CONTROL
98H
SBUF
99H
PCON
POWER CONTROL
87H
INSTRUCTIONS
CLR BIT
CPL BIT
JB BIT,TARGET
JBC BIT,TARGET
MOV INSTRUCTIONS
MOV instruction simply copy the data from one location to another location
MOV D,S
Copy the data from(S) source to D(destination)
MOV R0,A
MOV R1,A
MOV A,R3
MOV R0,#12h
MOV R5,#0F9H
ADD INSTRUCTIONS.
ADD instructions adds the source byte to the accumulator ( A) and place the result in the
Accumulator.
MOV A, #25H
ADD A,#42H
ADDA,R3
JC TARGET
JUMP TO THE TARGET IF CY FLAG =1
JNC TARGET
JUMP TO THE TARGET ADDRESS IF CY FLAG IS = 0
RRC A
This is same as RR A but difference is that the bit rotated out of register first
enter in to carry and then enter into MSB
RLC A
ROTATE A LEFT THROUGH CARRY
Same as above but but shift the data from MSB to carry and carry to LSB
RET
This is return from subroutine. This instructions is used to return from a
subroutine previously entered by instructions LCALL and ACALL.
RET1
THIS is used at the end of an interrupt service routine. We use this
instructions after intruupt routine,
PUSH.
This copies the indicated byte onto the stack and increments SP by . This
instructions supports only direct addressing mode.
POP.
DPTR INSTRUCTIONS.
MOV DPTR,#16 BIT VALUE
LOAD DATA POINTER
This instructions load the 16 bit dptr register with a 16 bit immediate value
MOV C A,@A+DPTR
This instructions moves a byte of data located in program ROM into register
A. This allows us to put strings of data, such as look up table elements.
MOVC A,@A+PC
This instructions moves a byte of data located in the program area to A. the
address of the desired byte of data is formed by adding the program counter
( PC) register to the original value of the accumulator.
INC BYTE
This instructions add 1 to the register or memory location specified by the
operand.
INC A
INC Rn
INC DIRECT
DEC BYTE
This instructions subtracts 1 from the byte operand. Note that CY is
unchanged
DEC A
DEC Rn
DEC DIRECT
ARITHMATIC INSTRUCTIONS.
ANL dest-byte, source-byte
This perform a logical AND operation
This performs a logical AND on the operands, bit by bit, storing the result in
the destination. Notice that both the source and destination values are byte
size only
`
DIV AB
This instructions divides a byte accumulator by the byte in register B. It is
assumed that both register A and B contain an unsigned byte. After the
division the quotient will be in register A and the remainder in register B.
Both timer is the 89c51 share the one register TMOD. 4 LSB bit for the timer 0 and 4
MSB for the timer 1.
In each case lower 2 bits set the mode of the timer
Upper two bits set the operations.
GATE:
Gating control when set. Timer/counter is enabled only while the INTX
pin is high and the TRx control pin is set. When cleared, the timer is enabled whenever
the TRx control bit is set
C/T :
Timer or counter selected cleared for timer operation ( input from internal
system clock)
M1
Mode bit 1
M0
Mode bit 0
M1
M0
MODE
OPERATING MODE
13 BIT TIMER/MODE
CY
PSW.7
CARRY FLAG
AC
PSW.6
AUXILIARY CARRY
F0
PSW.5
RS1
PSW.4
RS0
PSW.3
0V
PSW.2
OVERFLOW FLAG
--
PSW.1
PSW.0
CRYSTAL FREQUENCY
256---- ____________________
384 X BAUD RATE
If the SMOD IS = 1
TH1
CRYSTAL FREQUENCY
256-------------------------------------192 X BAUD RATE
There are two ways to increase the baud rate of data transfer in the 8051
1.
2.
PCON register is an 8 bit register . Of the 8 bits, some are unused, and some are used for
the power control capability of the 8051. the bit which is used for the serial
communication is D7, the SMOD bit. When the 8051 is powered up, D7 ( SMOD BIT)
OF PCON register is zero. We can set it to high by software and thereby double the baud
rate
( DECIMAL)
HEX
SMOD =0
SMOD =1
-3
-6
-12
-24
FD
FA
F4
E8
9600
4800
2400
1200
19200
9600
4800
2400
EA
IE.7
IE.6
NOT implemented
ET2
IE.5
ES
IE.4
ET1
IE.3
EX1
IE.2
ET0
IE.1
EX0
IE.0
If the bit is 0, the corresponding interrupt has a lower priority and if the bit is 1 the
corresponding interrupt has a higher priority
IP.7
IP.6
PT2
IP.5
PS
IP.4
PT1
IP.3
PX1
IP.2
PT0
IP.1
PX0
IP.0
SCON
SM0
SM1
SM2
SCON.5
REN
TB8
SCON.3 The 9th bit that will be transmitted in modes 2 and 3, Set/cleared
By software
RB8
SCON.2 In modes 2 &3, is the 9th data bit that was received. In mode 1,
If SM2 = 0, RB8 is the stop bit that was received. In mode 0
RB8 is not used
T1
SCON.1 Transmit interrupt flag. Set by hardware at the end of the 8th bit
Time in mode 0, or at the beginning of the stop bit in the other
Modes. Must be cleared by software
R1
SCON.0 Receive interrupt flag. Set by hardware at the end of the 8th bit
Time in mode 0, or halfway through the stop bit time in the other
Modes. Must be cleared by the software.
TCON
TCON.7
TR1
TCON.6
TF0
TCON.5
TR0
TCON.4
IE1
TCON.3
ITI
TCON.2
IE0
TCON.1
IT0
TCON.0
Arithmetic Operations
Mnemonic
Description
Size
Cycles
ADD A,Rn
ADDC A,direct
ADDC A,@Ri
ADDC A,#data
SUBB A,Rn
SUBB A,direct
INC Rn
Increment register.
1
2
INC direct
INC @Ri
Decrement ACC.
DEC A
DEC Rn
Decrement register.
DEC direct
DEC @Ri
INC DPTR
MUL AB
DIV AB
DA A
Size
Cycles
Logical Operations
Mnemonic
Description
ANL A,Rn
ANL direct,#data
ORL A,Rn
OR Register to ACC.
2
1
1
3
XRL direct,#data
CLR A
CPL A
Compliment ACC.
RL A
RLC A
RR A
RRC A
SWAP A
1
1
Data Transfer
Mnemonic
Description
Size
Cycles
MOV A,Rn
MOV A,direct
2
1
MOV A,@Ri
MOV A,#data
MOV Rn,A
MOV Rn,direct
MOV Rn,#data
MOV direct,A
MOV direct,Rn
MOV direct,direct
MOV direct,@Ri
MOV direct,#data
MOV @Ri,A
MOV @Ri,direct
MOV @Ri,#data
MOVC A,@A+DPTR
1
2
MOVC A,@A+PC
MOVX A,@Ri
2
2
MOVX A,@DPTR
MOVX @Ri,A
MOVX @DPTR,A
PUSH direct
POP direct
XCH A,Rn
XCH A,direct
XCH A,@Ri
XCHD A,@Ri
Description
Size
Cycles
CLR C
CLR bit
SETB C
SETB
CPL C
CPL bit
1
2
ANL C,bit
ANL C,/bit
ORL C,bit
ORL C,/bit
MOV C,bit
MOV bit,C
JC rel
JNC rel
JB bit,rel
JNB bit,rel
JBC bit,rel
Size
Cycles
Program Branching
Mnemonic
Description
ACALL
addr11
LCALL
addr16
RET
RETI
SJMP rel
JMP @A+DPTR
JZ rel
JNZ rel
CJNE A,direct,rel
CJNE A,#data,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel Compare immediate byte to indirect and jump if not equal.32
DJNZ Rn,rel Decrement register and jump if not zero.
DJNZ direct,rel
Other Instructions
Mnemonic
NOP
Description
No operation. 1
Size
1
Cycles
org 0000h
sjmp main
main:
jnb p1.0,light
jnb p1.1,fire
jnb p1.2,int
jnb p1.3,water
jnb p1.4,remote
sjmp main
clr p2.2
acall delay
setb p2.2
sjmp main
water: clr p2.3
acall delay
setb p2.3
sjmp main
remote: clr p2.4
acall delay
setb p2.4
sjmp main
delay:
mov r0,#100
mov r1,#200
mov r2,#200
sim: djnz r0,sim
djnz r1,sim
djnz r2,sim
ret