Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
11/16/09 20:05
Read: times


 
#170886 - start with C, optimize generated asm later?
Responding to: ???'s previous message
Maybe start with C, passing this through a compiler:

unsigned char data a[3];
extern void out_a(void);

void doit(unsigned char c)
{
    a[0] = '0' + c/100;
    a[1] = '0' + (c%100)/10;
    a[2] = '0' + (c%10);

    out_a();
}

 

Using SDCC as compiler will get you here:

_doit:
        mov     r2,dpl
;       bin2ascii.c:6: a[0] = '0' + c/100;
        mov     b,#0x64
        mov     a,r2
        div     ab
        add     a,#0x30
        mov     _a,a
;       bin2ascii.c:7: a[1] = '0' + (c%100)/10;
        mov     b,#0x64
        mov     a,r2
        div     ab
        mov     a,b
        mov     b,#0x0A
        div     ab
        add     a,#0x30
        mov     (_a + 0x0001),a
;       bin2ascii.c:8: a[2] = '0' + (c%10);
        mov     b,#0x0A
        mov     a,r2
        div     ab
        mov     a,b
        add     a,#0x30
        mov     (_a + 0x0002),a
;       bin2ascii.c:10: out_a();
        ljmp    _out_a

 

Especially if your knowledge of 8051 assembly code is (still) low the compiler generated code is a good start (you can strip some cycles and bytes, although that likely wont matter on a LCD:)

List of 18 messages in thread
TopicAuthorDate
Convert Binary numbers to symbols to show on a lcd.            01/01/70 00:00      
   Have you considered searching?            01/01/70 00:00      
      BCD?            01/01/70 00:00      
         Quite sure ASCII            01/01/70 00:00      
            Yes, BCD            01/01/70 00:00      
   Language dependent            01/01/70 00:00      
      The *techniques* are not language-dependent            01/01/70 00:00      
   Binary to BCD to ascii Assembly code 8051            01/01/70 00:00      
      Step by step...            01/01/70 00:00      
         Attempt to fix code            01/01/70 00:00      
            What Assembler? What Simulator?            01/01/70 00:00      
               EdSim51            01/01/70 00:00      
            please comment and format your "code"            01/01/70 00:00      
            Test your code - at least with pen and paper            01/01/70 00:00      
      Not strictly true            01/01/70 00:00      
      start with C, optimize generated asm later?            01/01/70 00:00      
         That still requires...            01/01/70 00:00      
         Misplaced focus?            01/01/70 00:00      

Back to Subject List