|
|
|
Manufact. |
Intel |
various |
STM |
PHILIPS |
DALLAS/MAXIM |
DALLAS/MAXIM |
SILABS |
AD |
GOAL |
GOAL |
ATMEL |
WINBOND |
TI |
|
|
|
|
|
Type |
8051 |
RD2 (incl. P89C668) |
uPSD3354 |
P89LPC935 |
DS80C320 |
DS89C450 |
C8051F120 |
ADuC841 |
VERSA1 |
VERSA MIX VMX1020 |
AT89LP4052 |
W77E516 |
MSC1211Y5 |
|
|
|
|
max.freq. |
12MHz |
20MHz |
40MHz |
12MHz |
33MHz |
33MHz |
100MHz |
20MHz |
16MHz |
14MHz |
20MHz |
40MHz |
30MHz |
|
|
|
|
SRAM |
no |
0.75kB (1kB-7.75kB) |
32kB (program may execute) |
0.5kB |
no |
1kB |
8kB |
2kB (can contain stack) |
1kB |
1kB |
no |
1kB |
1kB (program can execute) |
|
|
|
|
FLASH |
4kB |
64kB (+8kB) |
256kB+32kB |
8kB |
no |
64kB |
128kB |
62kB |
64kB(+2kB OTP) |
56kB |
4kB |
64kB+4kB |
32kB (can be mapped data) |
|
|
|
|
EEPROM |
no |
(2kB) |
no |
0.5kB |
no |
no |
no |
4kB |
no |
|
no |
64B |
no |
|
|
|
|
bus |
UART |
UART, (I2C, SPI) |
2xUART (IrDA), SPI, I2C |
UART, I2C, SPI |
2xUART |
2xUART |
2xUART,I2C,SPI |
UART, I2C or SPI |
2xUART, SPI, RS485 |
2xUART, SPI, I2C, RS485 |
UART, SPI |
2xUART |
2xUART, SPI, I2C |
|
|
|
|
other |
|
PCA, WDT |
16 macrocell PLD, freely mappable FLASH/RAM via PLD, JTAG onchip debug, PCA, WDT, BOD, 8MUX 10bit 100ksps ADC, push-pull output (8x) |
onchip RC oscillator, 2x 4MUX 8bit ADC, push-pull outputs, 2x comparator, BOD, WDT, RTC, capture/compare unit |
BOD, WDT |
BOD, WDT |
onchip oscillator + PLL, onchip JTAG debugger, 8MUX 12bit 100ksps ADC, 8MUX 8bit 500ksps ADC, 2x 12bit DAC, MAC, 5x 16bit timers, WDT, BOD, onchip temperature sensor, PCA, push-pull outputs, partially exchangable |
8MUX 420kSPS 12bit ADC, on chop reference, 2x12bit DAC, PWM, on chip temperature monitor, WD, power supply monitor |
4MUX 12bit ADC BOD, MAC |
onchip debugger (UART), 3xcompare/capture, onchip voltage reference, 4x16-bit PWM, 4MUX 12bit 10kSps ADC, programmable current source, OPAMP, 2x digipot, 1x switch, BOD, WDT |
WDT,BOD,PO R,Push-pull capable IO, comparator, PWM |
WDT,WaitState for XRAM |
8xMUX 24-bit ADC + PGA, 4x16-bit DAC, onchip reference, WaitState, BOD, WDT, LowVoltage detect, 16-bit PWM, 2 HW breakpoints, boot+debug ROM |
|
|
|
|
package |
DIL40, PLCC44 |
DIL40, PLCC44 (TQFP44) |
TQPF52, TQFP80 |
TSSOP28, PLCC28, HVQFN28 |
DIP40, PLCC44, TQFP44 |
DIP40, PLCC44, TQFP44 |
TQFP100 |
PQFP52, CSP56 |
PQFP44 |
QFP64 |
DIL20,SOIC20, TSSOP20 |
DIL40,PLCC44, QFP44 |
TQFP64 |
|
|
|
|
supply volt. |
5V |
5V (3V) |
5V+3.3V/3.3V |
3.3V |
5V |
5V |
3.3V |
3V/5V |
5V |
5V |
2.4-5V |
5V |
2.7-5V |
|
|
|
|
flash programming |
parallel |
parallel, UART ISP, IAP |
parallel, JTAG ISP, IAP |
parallel, SPI-like "ICP", IAP (enabling UART ISP) |
no |
UART ISP, IAP |
JTAG, IAP |
parallel, UART ISP, IAP |
I2C (12V) |
I2C (12V) |
parallel, SPI |
parallel, IAP |
parallel, UART |
|
|
|
|
DPTR |
1 |
2 |
2, autotoggle, autoinc/dec |
2 |
2 (different SFR) |
2 (different SFR), autotoggle, autoinc/dec |
1 |
2, autotoggle, autoinc/dec/LSB- toggle |
2 (different SFR) |
2 (different SFR) |
1 |
2 |
2 (different SFR) |
|
|
|
|
external memory |
yes |
yes |
yes (80-pin only) |
no |
yes |
yes |
data only (A-bus may be non-muxed) |
data only (up to 16MB) |
no |
no |
no |
yes |
yes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mnemonic |
Description |
Size(bytes) |
Hex Code |
12x |
6x |
4x |
2x |
4x |
1x |
1x |
1x |
4x |
1x |
1x |
4x |
4x |
|
Arithmetic instructions |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ADD A, Rn |
Add register to A |
1 |
28-2Fh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
ADD A, direct |
Add direct byte to A |
2 |
25h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ADD A, @Ri |
Add data memory to A |
1 |
26-27h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
|
ADD A, #data |
Add immediate to A |
2 |
24h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ADDC A, Rn |
Add register to A with carry |
1 |
38-3Fh |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
ADDC A, direct |
Add direct byte to A with carry |
2 |
35h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ADDC A, @Ri |
Add data memory to A with carry |
1 |
36-37h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
|
ADDC A, #data |
Add immediate to A with carry |
2 |
34h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
SUBB A, Rn |
Subtract register from A with borrow |
1 |
98-9Fh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
SUBB A, direct |
Subtract direct byte from A with borrow |
2 |
95h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
SUBB A, @Ri |
Subtract data memory from A with borrow |
1 |
96-97h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
|
SUBB A, #data |
Subtract immediate from A with borrow |
2 |
94h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
INC A |
Increment A |
1 |
04h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
INC Rn |
Increment register |
1 |
08-0Fh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
|
INC direct |
Increment direct byte |
2 |
05h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
INC @Ri |
Increment data memory |
1 |
06-07h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
3 |
2 |
1 |
1 |
|
DEC A |
Decrement A |
1 |
14h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
DEC Rn |
Decrement register |
1 |
18-1Fh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
|
DEC direct |
Decrement direct byte |
2 |
15h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
DEC @Ri |
Decrement data memory |
1 |
16-17h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
3 |
2 |
1 |
1 |
|
INC DPTR |
Increment data pointer |
1 |
A3h |
2 |
2 |
2 |
2 |
3 |
1 |
1 |
3 |
3 |
1 |
2 |
2 |
3 |
|
MUL AB |
Multiply A by B |
1 |
A4h |
4 |
4 |
4 |
4 |
5 |
9 |
4 |
9 |
5 |
5 |
2 |
5 |
5 |
|
DIV AB |
Divide A by B |
1 |
84h |
4 |
4 |
4 |
4 |
5 |
10 |
8 |
9 |
5 |
5 |
4 |
5 |
5 |
|
DA A |
Decimal adjust A |
1 |
D4h |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
2 |
1 |
1 |
1 |
1 |
1 |
|
Logical Instructions |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ANL A, Rn |
AND register to A |
1 |
58-5Fh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
ANL A, direct |
AND direct byte to A |
2 |
55h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ANL A, @Ri |
AND data memory to A |
1 |
56-57h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
|
ANL A, #data |
AND immediate to A |
2 |
54h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ANL direct, A |
AND A to direct byte |
2 |
52h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
ANL direct, #data |
AND immediate data to direct byte |
3 |
53h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
4 |
3 |
3 |
3 |
|
ORL A, Rn |
OR register to A |
1 |
48-4Fh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
ORL A, direct |
OR direct byte to A |
2 |
45h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ORL A, @Ri |
OR data memory to A |
1 |
46-47h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
|
ORL A, #data |
OR immediate to A |
2 |
44h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ORL direct, A |
OR A to direct byte |
2 |
42h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
ORL direct, #data |
OR immediate data to direct byte |
3 |
43h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
4 |
3 |
3 |
3 |
|
XRL A, Rn |
Exclusive-OR register to A |
1 |
68-6Fh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
XRL A, direct |
Exclusive-OR direct byte to A |
2 |
65h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
XRL A, @Ri |
Exclusive-OR data memory to A |
1 |
66-67h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
|
XRL A, #data |
Exclusive-OR immediate to A |
2 |
64h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
XRL direct, A |
Exclusive-OR A to direct byte |
2 |
62h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
XRL direct, #data |
Exclusive-OR immediate to direct byte |
3 |
63h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
4 |
3 |
3 |
3 |
|
CLR A |
Clear A |
1 |
E4h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
CPL A |
Compliment A |
1 |
F4h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
RL A |
Rotate A left |
1 |
23h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
RLC A |
Rotate A left through carry |
1 |
33h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
RR A |
Rotate A right |
1 |
03h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
RRC A |
Rotate A right through carry |
1 |
13h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
SWAP A |
Swap nibbles of A |
1 |
C4h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
Data Transfer Instructions |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MOV A, Rn |
Move register to A |
1 |
E8-EFh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
MOV A, direct |
Move direct byte to A |
2 |
E5h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
MOV A, @Ri |
Move data memory to A |
1 |
E6-E7h |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
1 |
2 |
2 |
1 |
1 |
|
MOV A, #data |
Move immediate to A |
2 |
74h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
MOV Rn, A |
Move A to register |
1 |
F8-FFh |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
|
MOV Rn, direct |
Move direct byte to register |
2 |
A8-AFh |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
4 |
2 |
2 |
2 |
|
MOV Rn, #data |
Move immediate to register |
2 |
78-7Fh |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
MOV direct, A |
Move A to direct byte |
2 |
F5h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
MOV direct, Rn |
Move register to direct byte |
2 |
88-8Fh |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
MOV direct, direct |
Move direct byte to direct byte |
3 |
85h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
4 |
3 |
3 |
3 |
|
MOV direct, @Ri |
Move data memory to direct byte |
2 |
86-87h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
4 |
2 |
2 |
2 |
|
MOV direct, #data |
Move immediate to direct byte |
3 |
75h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
MOV @Ri. A |
Move A to data memory |
1 |
F6-F7h |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
1 |
3 |
1 |
1 |
1 |
|
MOV @Ri, direct |
Move direct byte to data memory |
2 |
A6-A7h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
5 |
2 |
2 |
2 |
|
MOV @Ri, #data |
Move immediate to data memory |
2 |
76-77h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
MOV DPTR, #data16 |
Move immediate to data pointer |
3 |
90h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
MOVC A, @A+DPTR |
Move code byte relative DPTR to A |
1 |
93h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
3 |
3 |
3 |
2 |
3 |
|
MOVC A, @A+PC |
Move code byte relative PC to A |
1 |
83h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
3 |
3 |
3 |
2 |
3 |
|
MOVX A, @Ri |
Move external data (A8) to A |
1 |
E2-E3h |
2 |
2 |
2 |
2 |
2-9 |
2 |
3 |
4 |
3 |
3-10 |
- |
2-9 |
2-9 |
|
MOVX A, @DPTR |
Move external data (A 16) to A |
1 |
E0h |
2 |
2 |
2 |
2 |
2-9 |
2 |
3 |
4 |
3 |
3-10 |
- |
2-9 |
2-9 |
|
MOVX @Ri, A |
Move A to external data (A8) |
1 |
F2-F3h |
2 |
2 |
2 |
2 |
2-9 |
2 |
3 |
4 |
3 |
4-11 |
- |
2-9 |
2-9 |
|
MOVX @DPTR, A |
Move A to external data (A 16) |
1 |
F0h |
2 |
2 |
2 |
2 |
2-9 |
2 |
3 |
4 |
3 |
4-11 |
- |
2-9 |
2-9 |
|
PUSH direct |
Push direct byte onto stack |
2 |
C0h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
4 |
2 |
2 |
2 |
|
POP direct |
Pop direct byte from stack |
2 |
D0h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
XCH A, Rn |
Exchange A and register |
1 |
C8-CFh |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
|
XCH A, direct |
Exchange A and direct byte |
2 |
C5h |
1 |
1 |
1 |
1 |
2 |
3 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
XCH A, @Ri |
Exchange A and data memory |
1 |
C6-C7h |
1 |
1 |
1 |
1 |
1 |
3 |
2 |
2 |
1 |
3 |
2 |
1 |
1 |
|
XCHD A, @Ri |
Exchange A and data memory nibble |
1 |
D6-D7h |
1 |
1 |
1 |
1 |
1 |
3 |
2 |
2 |
1 |
3 |
2 |
1 |
1 |
|
Boolean Instructions |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLR C |
Clear carry |
1 |
C3h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
CLR bit |
Clear direct bit |
2 |
C2h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
SETB C |
Set carry |
1 |
D3h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
SETB bit |
Set direct bit |
2 |
D2h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
CPL C |
Complement carry |
1 |
B3h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
CPL bit |
Complement direct bit |
2 |
B2h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
ANL C, bit |
AND direct bit to carry |
2 |
82h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ANL C, /bit |
AND direct bit inverse to carry |
2 |
B0h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ORL C, bit |
OR direct bit to carry |
2 |
72h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
ORL C, /bit |
OR direct bit inverse to carry |
2 |
A0h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
MOV C, bit |
Move direct bit to carry |
2 |
A2h |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
MOV bit, C |
Move carry to direct bit |
2 |
92h |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
Branching Instructions |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ACALL addr 11 |
Absolute call to subroutine |
2 |
11-F1h |
2 |
2 |
2 |
2 |
3 |
2 |
3 |
3 |
3 |
6 |
3 |
3 |
3 |
|
LCALL addr 16 |
Long call to subroutine |
3 |
12h |
2 |
2 |
2 |
2 |
4 |
3 |
4 |
4 |
4 |
6 |
4 |
4 |
4 |
|
RET |
Return from subroutine |
1 |
22h |
2 |
2 |
2 |
2 |
4 |
3 |
5 |
4 |
4 |
4 |
4 |
2 |
4 |
|
RETI |
Return from interrupt |
1 |
32h |
2 |
2 |
2 |
2 |
4 |
3 |
5 |
4 |
4 |
4 |
4 |
2 |
4 |
|
AJMP addr 11 |
Absolute jump unconditional |
2 |
01-E1h |
2 |
2 |
2 |
2 |
3 |
2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
LJMP addr 16 |
Long jump unconditional |
3 |
02h |
2 |
2 |
2 |
2 |
4 |
3 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
SJMP rel |
Short jump (relative address) |
2 |
80h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
JC rel |
Jump on carry = 1 |
2 |
40h |
2 |
2 |
2 |
2 |
3 |
3 |
2/3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
JNC rel |
Jump on carry = 0 |
2 |
50h |
2 |
2 |
2 |
2 |
3 |
3 |
2/3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
JB bit, rel |
Jump on direct bit = 1 |
3 |
20h |
2 |
2 |
2 |
2 |
4 |
4 |
3/4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
JNB bit, rel |
Jump on direct bit = 0 |
3 |
30h |
2 |
2 |
2 |
2 |
4 |
4 |
3/4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
JBC bit, rel |
Jump on direct bit = 1 and clear |
3 |
10h |
2 |
2 |
2 |
2 |
4 |
4 |
3/4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
JMP @A+DPTR |
Jump indirect relative DPTR |
1 |
73h |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
2 |
3 |
2 |
3 |
|
JZ rel |
Jump on accumulator = 0 |
2 |
60h |
2 |
2 |
2 |
2 |
3 |
3 |
2/3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
JNZ rel |
Jump on accumulator 1= 0 |
2 |
70h |
2 |
2 |
2 |
2 |
3 |
3 |
2/3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
CJNE A, direct, rel |
Compare A, direct JNE relative |
3 |
B5h |
2 |
2 |
2 |
2 |
4 |
5 |
3/4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
CJNE A, #d, rel |
Compare A, immediate JNE relative |
3 |
B4h |
2 |
2 |
2 |
2 |
4 |
4 |
3/4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
CJNE Rn, #d, rel |
Compare reg, immediate JNE relative |
3 |
B8-BFh |
2 |
2 |
2 |
2 |
4 |
4 |
3/4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
CJNE @Ri, #d, rel |
Compare ind, immediate JNE relative |
3 |
B6-B7h |
2 |
2 |
2 |
2 |
4 |
5 |
4/5 |
4 |
4 |
4 |
4 |
4 |
4 |
|
DJNZ Rn, rel |
Decrement register, JNZ relative |
2 |
D8-DFh |
2 |
2 |
2 |
2 |
3 |
4 |
2/3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
DJNZ direct, rel |
Decrement direct byte, JNZ relative |
3 |
D5h |
2 |
2 |
2 |
2 |
4 |
5 |
3/4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
Miscellaneous Instruction |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NOP |
No operation |
1 |
00h |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SerialISR: |
PUSH PSW |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
4 |
2 |
2 |
2 |
|
|
PUSH ACC |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
4 |
2 |
2 |
2 |
|
|
SETB RS0 |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
|
JBC TI,TI_ISR |
|
|
2 |
2 |
2 |
2 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
TI_ISREnd: |
JBC RI,RI_ISR |
|
|
2 |
2 |
2 |
2 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
SerialISREnd: |
POP ACC |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
|
POP PSW |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
|
RETI |
|
|
2 |
2 |
2 |
2 |
3 |
3 |
5 |
4 |
4 |
4 |
4 |
2 |
3 |
|
TI_ISR: |
MOV A,TI_PTR |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
|
JZ TI_ISREnd |
|
|
2 |
2 |
2 |
2 |
3 |
3 |
2 |
3 |
3 |
3 |
3 |
3 |
3 |
|
|
DEC TI_PTR |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
|
ADD A,#LOW(TxBuff-1) |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
|
MOV R0,A |
|
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
|
|
MOV R2,P2 |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
4 |
2 |
2 |
2 |
|
|
CLR A |
|
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
ADDC A,#HIGH(TxBuff-1) |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
|
MOV P2,A |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
|
MOVX A,@R0 |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
3 |
4 |
3 |
3 |
? (4) |
2 |
2 |
|
|
MOV P2,R2 |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
|
MOV SBUF,A |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
|
SJMP TI_ISREnd |
|
|
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
RI_ISR: |
MOV R1,RX_Head |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
4 |
2 |
2 |
2 |
|
|
MOV @R1,SBUF |
|
|
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
5 |
2 |
2 |
2 |
|
|
INC R1 |
|
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
1 |
1 |
1 |
|
|
CJNE R1,#RXBuffEnd,RI_ISR_X1 |
|
|
2 |
2 |
2 |
2 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
|
|
MOV R1,#RXBuff |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
RI_ISR_X1: |
MOV A,R1 |
|
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
CJNE A,RX_Tail,RI_ISR_X2 |
|
|
2 |
2 |
2 |
2 |
5 |
5 |
4 |
4 |
4 |
4 |
4 |
4 |
5 |
|
|
SJMP SerialISREnd |
|
|
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
RI_ISR_X2: |
MOV RX_Head,A |
|
|
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
3 |
2 |
2 |
2 |
|
|
SJMP SerialISREnd |
|
|
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cycles |
|
49 |
49 |
49 |
49 |
72 |
72 |
73 |
74 |
73 |
94 |
74 |
70 |
72 |
|
|
|
clocks |
|
588 |
294 |
196 |
98 |
288 |
72 |
73 |
74 |
292 |
94 |
74 |
280 |
288 |
|
|
|
execution time [us] |
49,00 |
14,70 |
4,90 |
8,17 |
8,73 |
2,18 |
0,73 |
3,70 |
18,25 |
6,71 |
3,70 |
7,00 |
9,60 |
|
The results of the "mini-benchmark" are of course only approximative, as the real performance depends on a particular instruction mix in the given application. Where instructions are of various execution time (e.g. branches at SiLabs, or external memory access with possible waitstates at more processors), a minimum time is assumed, which might not be always appropriate. The faster clocked mcus (SiLabs, STM uPSD) have also branch caches, so performance depends on hits/misses on them.
Original excel table can be found here. A simplified version is also available in xls and pdf format.