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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
11/13/06 03:50
Read: times


 
#127845 - Great!
Responding to: ???'s previous message
Cool. I modified the display_bcd routine. Now the program code is as follows:

#include "8051equ.inc"

.org	00h
	ajmp	start

.org	0bh
	reti

.org	13h
	reti

.org	1bh
	reti

.org	23h
	reti

.org	25h


initialize:
	; start timer 0 - 16 bit timer mode
	mov	TMOD, #01h
	setb	TR0

	mov	PSW, #00h
	mov	IE, #00h
	ret

; delay for 1 ms (11.0592 MHz crystal)
delay_ms:
	mov	r7, #00h
loop_1:
	inc	r7
	mov	a, r7
	cjne	a, #0ffh, loop_1
	ret

; 8-bit binary to bcd converter
; a  - input value
; r2 - output digit 1
; r3 - output digit 2
; r4 - output digit 3
bin_to_bcd:

	mov	B, #010d
	div	ab
	mov	r4, B
	mov	B, #010d
	div	ab
	mov	r3, B
	mov	B, #010d
	div	ab
	mov	r2, B
	ret

segment_table:	
	.db 	00001001b, 11101011b, 01000101b, 01100001b, 10100011b, 00110001b, 00010001b, 01101011b, 00000001b, 00100011b

; display 3 digit BCD number in the A register
display_bcd:
	mov	dptr, #segment_table
	movc	a, @a+dptr
	mov	P1, a
	ret
		
start:
	acall	initialize

	; set P3.0 to be used as an input
	setb	P3.0	

	; wait until switch is pressed (and debounce)
wait1:
	acall	delay_ms
	jb	P3.0, wait1

random:
	mov	a, TL0

	; wait for switch to be released (and debounce)
wait2:
	mov	20h, a
	acall	delay_ms
	mov	a, 20h
	jnb	P3.0, wait2
	acall	bin_to_bcd

display_loop:
	mov	a, r2
	acall	display_bcd
	setb	P3.3
	acall	delay_ms
	clr	P3.3

	mov	a, r3
	acall	display_bcd
	setb	P3.4
	acall	delay_ms
	clr	P3.4

	mov	a, r4
	acall	display_bcd
	setb	P3.5
	acall	delay_ms
	clr	P3.5

	; display same number until switch is pressed
	jb	P3.0, display_loop
	ajmp	random
	
.end


Thats much better! Do you have any other optimization suggestions for an 8051 newbie?

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