Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

binary to BCD 8051

Status
Not open for further replies.

meowth08

Member
Hi,

I want to convert an 8-bit binary to 12 bit Binary Coded Decimal using assembly programming in 8051.

I mean: ex. binary:1111 1111 to BCD: 0010 0101 0101
I am having a hard time figuring out how to do this.

Could someone show me the code for this or maybe the technique on how to do this?

Thank you.
 
Luckily with the 8051 instructions we have the MUL AB and the DIV AB commands

If you place 255 into the A register and 100 in the B register

After the DIV AB command A will contain 55 and B will contain 2

save them in R0 & R1 then load A and B with 55 and 10 DIV AB again and save

Code:
        clr A
	MOV R0, A
	MOV R1, A	; clear reg's'
	mov A, #0FFh	; 255
	mov B, #64h	; 100
	DIV AB
	mov R0, A	; store A in R0 ( 2)
	mov A, B		; get remainder (55)
	mov B, #0AH
	DIV AB		; / 10
	mov R2, A	; save tens elsewhere ( 5)
	mov A, B		; get units
	mov R1,A		; save in R1
	mov A, R2	; retreive tens
	RR A
	RR A
	RR A
	RR A		; shift into high byte
	orl A, R1	; or with units
	mov R1, A	; store in R1
 
Last edited:
Hi,

Thanks so much for the code.
After posting this, I did google bcd to binary.
Luckily I found a hint too so I just worked backwards.

Actually, it is just a part of our homework's program requirement.
We were tasked to output the decimal equivalent of the 8-bit binary in three seven segment displays.
Included is an ENABLE bit that when it goes from logic 1 to 0, the numbers on the seven segment displays are updated.

question:
I used P0.2, P0.1, and P0.0 as the output for each SSD.
I used P0.3 for the enable bit. (input)
Will it be a problem?
 
Last edited:
question:
I used P0.2, P0.1, and P0.0 as the output for each SSD.
I used P0.3 for the enable bit. (input)
Will it be a problem?
You'll need more than 3 pins to control the SSD; 3 pins (assuming a decoder IC is used) will allow for values from 0..7, but not 8 & 9. A 4th pin will allow the full range for each digit.
 
You'll need more than 3 pins to control the SSD; 3 pins (assuming a decoder IC is used) will allow for values from 0..7, but not 8 & 9. A 4th pin will allow the full range for each digit.

Hi,

Sorry I did not make it clear.
P0.2, P0.1, P0.0 controls the common pins of the SSD which in this case are all common anode.
8-bits of P2 is used to control the segments of the SSD including the dot.
I used P0.3 as the enable bit.

My question:
Is it okay to use the same port as input and output?

m8
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top