| ??? 04/01/08 08:11 Read: times |
#152816 - Here we go again ... yes but we are helpless ;-) Responding to: ???'s previous message |
Yahya A. Shokr said:
hi.... i miss u all and ur usefull replys..i'm gone do a great project using the AT89c52 and as a part of it i will mack a digital thrmometer LM35>>> any way i need a subrouten by assimble to convert the hex numbers into decimal numbers to display it on a 7-segmant display.... i'll ur replys >>> :) bye bin to BCD convert: Try this
B DATA 0F0H
ACC DATA 0E0H
NAME BCD
?PR?bin2bcd?BCD SEGMENT CODE
EXTRN DATA (U_b)
PUBLIC bin2bcd
RSEG ?PR?bin2bcd?BCD
USING 0
bin2bcd:
MOV A,U_b
JNB ACC.7,POSITIVE
CLR C ; negative argument
CLR A
SUBB A,U_b+3
MOV U_b+3,A
CLR A
SUBB A,U_b+2
MOV U_b+2,A
CLR A
SUBB A,U_b+1
MOV U_b+1,A
CLR A
SUBB A,U_b
JNZ ERROR ; should be ZERO
MOV R3,#5 ;"Digit" Counter
MOV R1,#U_b ;"Digit" Pointer
MOV R2,#5 ;"Nibble" Counter
MOV R0,#U_b ;"Nibble" Pointer
MOV U_b+5,#0FH ; 0x0F as '-' Character
; (will be converted for
; 7-seg. LCD)
MOV A,U_b+1 ; LSB2 LN -> 0
MOV U_b,A
ANL U_b,#0FH
ANL A, #0F0H ; should be ZERO
JNZ ERROR
MOV A,U_b+3 ; LSB0 LN -> 4
MOV U_b+4,A
ANL U_b+4,#0FH
SWAP A
MOV U_b+3,A ; LSB0 HN -> 3
ANL U_b+3,#0FH
MOV A,U_b+2 ; LSB1 LN -> 2
ANL U_b+2,#0FH
SWAP A
MOV U_b+1,A ; LSB1 HN -> 1
ANL U_b+1,#0FH
CLR A
SJMP LOOP_DIV ; everything is in place now
POSITIVE:
MOV A,U_b+1
ANL A, #0F0H ; should be ZERO
JNZ ERROR
MOV A,U_b+3 ; LSB0 LN -> 5
MOV U_b+5,A
ANL U_b+5,#0FH
SWAP A
MOV U_b+4,A ; LSB0 HN -> 4
ANL U_b+4,#0FH
MOV A,U_b+2 ; LSB1 LN -> 3
MOV U_b+3,A
ANL U_b+3,#0FH
SWAP A
MOV U_b+2,A ; LSB1 HN -> 2
ANL U_b+2,#0FH
ANL U_b+1,#0FH ; LSB2 LN -> 1
MOV R3,#6 ;"Digit" Counter
MOV R1,#U_b ;"Digit" Pointer
MOV R2,#5 ;"Nibble" Counter
MOV R0,#U_b+1 ;"Nibble" Pointer
CLR A
SJMP LOOP_DIV ; everything is in place now
LOOP_DIGIT:
MOV AR0,AR1
MOV AR2,AR3
CLR A
LOOP_DIV:
XCHD A,@R0
MOV B,#10 ; DIVISOR
DIV AB
XCHD A,@R0
MOV A,B
SWAP A ; Remainder in AKKU HIGH NIBBLE
INC R0
DJNZ R2,LOOP_DIV
MOV A,@R1 ; should be ZERO
JNZ ERROR
MOV @R1,B
INC R1
DJNZ R3,LOOP_DIGIT
END1:
RET
ERROR:
MOV A,#0FH ; 0x0F as '-' Character
MOV U_b,A
MOV U_b+1,A
MOV U_b+2,A
MOV U_b+3,A
MOV U_b+4,A
MOV U_b+5,A
END2:
RET
END
Then go here http://www.doctronics.co.uk/4511.htm Best/ Ap |
| Topic | Author | Date |
| hi everybody i need ur help | 01/01/70 00:00 | |
| hex numbers into decimal | 01/01/70 00:00 | |
| Why wear the old hat ?? | 01/01/70 00:00 | |
| yes DS1820 is one such | 01/01/70 00:00 | |
| Not I2C, but... | 01/01/70 00:00 | |
| Mind you, | 01/01/70 00:00 | |
| Here we go again ... | 01/01/70 00:00 | |
| Here we go again ... yes but we are helpless ;-) | 01/01/70 00:00 | |
| More old hat - Why go there? | 01/01/70 00:00 | |
the reason this happens again and again ... | 01/01/70 00:00 |



