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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
11/12/06 15:07
Read: times


 
#127815 - Hints for a smaller program
Responding to: ???'s previous message
Dan said:
... and keep in mind that I have only been working with 8051 for ~4 days so go easy.

Maybe after a few more days check out the MOVC instructions. One variant makes it easy to look up values from a fixed table in code memory. Using this technique, you could collapse your gigantic 'display_bcd' routine into just a few lines. An example follows. You'd replace the TIMES_3_TABLE with a table containing the ten magic values you need to load into P1 for each of the ten decimal digits.

You might also want to check out the JMP @A+DPTR instruction. In a similar fashion (using indirection through a table), it lets you jump to various points in your program based on the current contents of the accumulator.

-- Russ
;------------------------------------------------------------------------------
;			       MULTIPLY_BY_THREE
;------------------------------------------------------------------------------
; DESCRIPTION:	This routine multiplies the accumulator by three, using a table
;		lookup technique.  (This is intended only to demonstrate the
;		table lookup technique; there are lots better ways to multiply
;		by three!)
;------------------------------------------------------------------------------

TIMES_3_TABLE:	DB	0, 3, 6, 9, 12, 15

MULTIPLY_BY_THREE:
		MOV	DPTR,#TIMES_3_TABLE	; Point DPTR at lookup table
		MOVC	A,@A+DPTR		; Grab the value indexed by A
		RET				; Done



List of 53 messages in thread
TopicAuthorDate
Pseudo-Random Number Generator Strangeness            01/01/70 00:00      
   Problem lies in BCD converter            01/01/70 00:00      
      Why?            01/01/70 00:00      
         I like see the program 0-255            01/01/70 00:00      
            0-255 SSD Counter            01/01/70 00:00      
               Clarity?            01/01/70 00:00      
               Thanks for the reply            01/01/70 00:00      
                  WRONG            01/01/70 00:00      
                  Not necessarily each line            01/01/70 00:00      
                     re useful            01/01/70 00:00      
      FIXED            01/01/70 00:00      
         Yes ... but WHAT fixed it???            01/01/70 00:00      
   Hints for a smaller program            01/01/70 00:00      
      Great!            01/01/70 00:00      
         More hints            01/01/70 00:00      
   Count the cycles            01/01/70 00:00      
      Good guess, Maarten!!!            01/01/70 00:00      
      Brilliant, Maarten!            01/01/70 00:00      
      Wait Period            01/01/70 00:00      
         Wait does not make up            01/01/70 00:00      
            Makes Sense            01/01/70 00:00      
               why 'debounce'            01/01/70 00:00      
                  ARGHHHHH eric            01/01/70 00:00      
                     Jez, please            01/01/70 00:00      
               Divide by 2            01/01/70 00:00      
   This problem needs more thought            01/01/70 00:00      
      Interrupts don't help            01/01/70 00:00      
         Thanks, Maarten            01/01/70 00:00      
   A Suggestion            01/01/70 00:00      
      use TH1            01/01/70 00:00      
         Use TL0            01/01/70 00:00      
            agreed somewhat, but            01/01/70 00:00      
   Misunderstanding            01/01/70 00:00      
      Just SSD values            01/01/70 00:00      
         Thanks for the reply            01/01/70 00:00      
         Dan if like            01/01/70 00:00      
         7-Segment Connexions            01/01/70 00:00      
            Will Comment Soon...            01/01/70 00:00      
               Famous last words!            01/01/70 00:00      
               A More Excellent Way            01/01/70 00:00      
                  some do flowcharts, before they code            01/01/70 00:00      
   An Update            01/01/70 00:00      
      Typo            01/01/70 00:00      
      Still misleading comment            01/01/70 00:00      
         Fine            01/01/70 00:00      
   Dan this program needs            01/01/70 00:00      
      Tautology?!            01/01/70 00:00      
         Overkill            01/01/70 00:00      
            a typical example of follwing rules to the letter            01/01/70 00:00      
               Exception to the rule?            01/01/70 00:00      
            Not only comments, but format as well            01/01/70 00:00      
               8051 Simulator            01/01/70 00:00      
                  simulator support            01/01/70 00:00      

Back to Subject List