8051 Microcontroller - Random Generator

Thread Starter

kay19

Joined Mar 2, 2014
1
Hello, I am doing a project that requires 3 parts, and I have finished 2 parts. They were (1) getting two led's moving back and forth across the display & (2) Two led's that start at the center and each move to the end, one to the left and one to the right.

There's one more part that i'm just stuck, because the book does not say anything about generating random numbers/led, as well as instructor told us to look for it online. More specific, (3) Three led's moving randomly around the 8-bit display, but not necessarily connected.

I am using assembly language Atmel 89C51RD2 to do this. Here is my code if anyone wants to take a look and tinker it around. Any help on how to generate random 3 LED sequences.

Rich (BB code):
ORG 000H 
	
	MOV P0, #0E7H
	LJMP MAIN

	ORG 0100H
	
	

MAIN:
	MOV A, P0
	;MOV R7, P0
	ANL A, #11100000b

	CJNE A, #20H, J0
	LJMP PATERN1

	J0: CJNE A, #40H, J1
	LJMP PATERN2
	
	J1: CJNE A, #60H, J2
	LJMP PATERN3
	
	J2: CJNE A, #80H, J3
	LJMP PATERN4
	
	J3: CJNE A, #0A0H, J4
	LJMP PATERN5
	
	J4: CJNE A, #0C0H, J5
	LJMP PATERN6
	
	J5: CJNE A, #0E0H, J6
	LJMP PATERN7
	
	J6: CJNE A, #00H, J7
	LJMP PATERN8

	J7: LJMP MAIN
	
PATERN1:
	MOV P1, #0C0H
	ACALL DELAY
	MOV P1, #60H
	ACALL DELAY
	MOV P1, #30H
	ACALL DELAY
	MOV P1, #18H
	ACALL DELAY
	MOV P1, #0CH
	ACALL DELAY
	MOV P1, #06H
	ACALL DELAY
	MOV P1, #03H
	ACALL DELAY
	MOV P1, #06H
	ACALL DELAY
	MOV P1, #0CH
	ACALL DELAY
	MOV P1, #18H
	ACALL DELAY
	MOV P1, #30H
	ACALL DELAY
	MOV P1, #60H
	ACALL DELAY
	MOV P1, #0C0H
	ACALL DELAY
	
	LJMP MAIN
	
	
PATERN2:
	MOV P1, #01H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #01H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #01H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	
	LJMP MAIN

	
PATERN3:
	MOV P1, #18H
	ACALL DELAY
	MOV P1, #24H
	ACALL DELAY
	MOV P1, #42H
	ACALL DELAY
	MOV P1, #81H
	ACALL DELAY
	MOV P1, #42H
	ACALL DELAY
	MOV P1, #24H
	ACALL DELAY
	
	LJMP MAIN
	
PATERN4:
	
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #88H
	ACALL DELAY
	MOV P1, #44H
	ACALL DELAY
	MOV P1, #22H
	ACALL DELAY
	MOV P1, #11H
	ACALL DELAY
	MOV P1, #22H
	ACALL DELAY
	MOV P1, #44H
	ACALL DELAY
	MOV P1, #88H

	ACALL DELAY
	
PATERN5:
	MOV P1, #03H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #03H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #03H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	
	LJMP MAIN
	
PATERN6:
	MOV P1, #07H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #07H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #07H
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	
	LJMP MAIN
	
PATERN7:
	MOV P1, #0BH
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #0BH
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #0BH
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	
	LJMP MAIN
	
PATERN8:
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #0FFH
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #0FFH
	ACALL DELAY
	MOV P1, #00H
	ACALL DELAY
	MOV P1, #0FFH
	ACALL DELAY
	
	LJMP MAIN
	
	
		
DELAY		: 
	MOV A, P0
	ANL A, #00000111b

	S0: CJNE A, #00H, S1
	LJMP SELECT0

	S1: CJNE A, #01H, S2
	LJMP SELECT1
	
	S2: CJNE A, #02H, S3
	LJMP SELECT2
	
	S3: CJNE A, #03H, S4
	LJMP SELECT3

	S4: CJNE A, #04H, S5
	LJMP SELECT4
	
	S5: CJNE A, #05H, S6
	LJMP SELECT5
	
	S6: CJNE A, #06H, S7
	LJMP SELECT6

	S7: ;CJNE A, #07H, S8
	LJMP SELECT7
	
	
SELECT0		: MOV R1, #2
			  MOV R2, #1
			  SJMP SL2
SELECT1		: MOV R1, #3
			  MOV R2, #1
			  SJMP SL2
SELECT2		: MOV R1, #6
			  MOV R2, #1
			  SJMP SL2
SELECT3		: MOV R1, #10
			  MOV R2, #1
		      SJMP SL2
SELECT4		: MOV R1, #20
			  MOV R2, #1
		      SJMP SL2
SELECT5		: MOV R1, #200
			  MOV R2, #1
		      SJMP SL2
			 
SELECT6		: MOV R2, #10
			  MOV R1, #200 
			  SJMP SL3
SELECT7		: MOV R2, #100
			  MOV R1, #200
			  SJMP SL3

SL3			: MOV R1, #200
			  
SL2 		: MOV R0, #23

SL1			: DJNZ R0, SL1
			  DJNZ R1, SL2
			  DJNZ R2, SL3
			  
		      RET
		      END
 
Top