Tutorial Microcontroller MCS-51 ATMEL ISP

Pelatihan Dasar Mikrokontroller
14-15 April 2007
Surabaya
Rp. 300.000

 

Microcontroller Kits

Programmer and Target 89s51
Rp.100.000
(USD $10)

Simple Mikrokontroller 89s51 Trainer
Rp, 350.000
(USD $35)


Standart
Mikrokontroller 89s51 Trainer
Rp. 650.000
(USD $65)

Super Mikrokontroller Trainer 89s51
Rp.1.250.000
(USD $125)

 

 

BACK

Convert 5 digit decimal number into 3 bytes binary number

;********************************************************************************************;
;* CONVERTS 5 DIGIT DECIMAL NUMBER INTO 3 BYTES BINARY NUMBER *;
;********************************************************************************************;


BIN_1 EQU 42H ; LSB
BIN_2 EQU 41H ; MIDDLE SB
BIN_3 EQU 40H ; MSB

DEC_1 EQU 50H ; TEN THOUSANDS OF 5 DIGIT DECIMAL NUMBER
DEC_2 EQU 51H ; THOUSANDS OF 5 DIGIT DECIMAL NUMBER
DEC_3 EQU 52H ; HUNDREDS OF 5 DIGIT DECIMAL NUMBER
DEC_4 EQU 53H ; TENS OF 5 DIGIT DECIMAL NUMBER
DEC_5 EQU 54H ; UNITS OF 5 DIGIT DECIMAL NUMBER

FACTOR EQU 60H ; AUXILLIARY VARIABLE


;*******************************************************;
;**** MAIN CODE ****:
;*******************************************************;

;******************************************************;
;*** EXAMPLE ****;
;*******************************************************;
;** TO CONVERT 5 DIGIT DECIMAL NUMBER <12345> INTO 3 BYTES BINARY NUMBER ***;
;*******************************************************

MOV R2,#00 ; NEW LINE
; \
MOV BIN_1,#00 ; |
MOV BIN_2,#00 ; | 3 BYTES BINARY OUTPUT
MOV BIN_3,#00 ; |
; /


MOV DEC_1,#05D ; UNITS
MOV DEC_2,#04D ; TENS
MOV DEC_3,#03D ; HUNDREDS
MOV DEC_4,#02D ; THOUSANDS (1st Decimal place)
MOV DEC_5,#01D ; TEN THOUSANDS (2nd Decimal place)

MOV A,DEC_1 ; TAKE THE UNITS DIRECTLY AS IT IS TO THE LSB
MOV BIN_1,A

MOV A,DEC_2 ; TAKE THE TENS BY MULTIPLYING WITH #10D AND
MOV B,#10 ; AND ADDING TO THE LSB
MUL AB
ADD A,BIN_1
MOV BIN_1,A

MOV R0,#52H ; THE ADDRESS OF 3rd DIGIT
MOV FACTOR,#00D ; INITIALIZE AS ZERO
MOV A,@R0 ; TAKE THE 3rd DIGIT INTO R1 FOR PROCESSING
MOV R1,A

CJNE R1,#00,LOOP ; SKIP IF THE DIGIT IS A ZERO
SJMP ITS_ZERO

LOOP
MOV A,#100D ; ADD CONSTANT 100D TO LSB AS MANY TIMES
CLR C
ADD A,BIN_1
MOV BIN_1,A
JNC NO_EXCEED

INC BIN_2 ; INCREASE THE NEXT HIGHER BYTES WHEN THE LSB
MOV A,BIN_2 ; OVERFLOWS

CJNE A,#00H,NO_EXCEED
INC BIN_3

NO_EXCEED
DJNZ R1,LOOP

;-----------
CJNE R2,#00,CONTINUE
SJMP ITS_ZERO
CONTINUE
DEC R2
SJMP LOOP
;-----------

ITS_ZERO
INC R0 ; GET NEXT DIGIT WHEN THE LOOP EXHAUSTS
CJNE R0,#55H,PROCEED; GET OUT WHEN ALL THE 3 DIGITS HAVE BEEN
; WORKED UPON. (1st and 2nd digits are used
; before the loop)
SJMP OUT_LOOP

PROCEED
INC FACTOR ; CALCULATE AS HOW MANY TIMES THE CONSTANT
MOV A,@R0 ; 100D HAS TO BE ADDED TO LSB DEPENDING ON
CJNE A,#00,NOT_ZERO ; THE VALUE OF THE DIGIT ACQUIRED BY @R0
SJMP ITS_ZERO

NOT_ZERO
PUSH FACTOR

MULTIPLY
MOV B,#10D
CLR OV
MUL AB
JNB OV,SINGLE
PUSH ACC
MOV A,B
ADD A,R2
MOV R2,A
POP ACC
SINGLE
DJNZ FACTOR,MULTIPLY
MOV R1,A
POP FACTOR
SJMP LOOP

OUT_LOOP

MOV R1,BIN_2
MOV R2,BIN_1
MOV R0,BIN_3

END

**********************************************************
IDEA:
**********************************************************

LSB
+ (DEC_1)
+ (DEC_2 x 10D)
+ (DEC_3 x 1 x 100D)
+ (DEC_4 x 10 x 100D)
+ (DEC_5 x 100 x 100D)

Comments, questions and discussion about this topic

BACK

 

 

 

Programmer
ISP 89s

Free Software

a. Edsim 51
b. MIDE-51
c. ATMEL ISP

Lesson 1:
Architecture

1.1.Memory
1.2.SFR
1.3.Addressing
1.4.Instruction Set
1.5.Assignment

Lesson 2:
Input Output
2.1.LED
2.2.Swicht
2.3.7 Segmen
2.4.LCD Character
2.5.ADC
2.6.DAC
2.7.Motor Stepper
2.8.Keypad
2.9.Assignment

Lesson 3:

Timer Counter

3.1.Basic
3.2.Mode 0
3.3.Mode 1
3.4.Mode 2
3.5.Mode 3
3.5.Assignment

Lesson 4:

Serial Comm.

4.1.Basic
4.2.LED
4.3.Rotate LED
4.2 ADC
4.3.LCD
4.4.Assignment

Lesson 5:
Interuption

5.1.Basic
5.2.Timer
5.2.External

5.3.Assignment