Forum Need help with the following Homework assignment… Design a fire alarm system using a 8051 microcontroller. The specs are as follows: A) If the alarm is detected (one of the switches is activated) it should start flashing 4 LEDS (4 on the right (LEDS 1-4) and 4 on the left (LEDS 5-8), alternating). B) If the alarm is not detected, the display should show only 2 middle LEDS (LEDS 4 & 5) steadily ON (not flashing) indicating NORMAL operation. This is the code I’ve come up with so far, but I appear to be stuck. I would appreciate and assistance. Thank you.
Code…
ORG 0H ;Program starting location MOV A, #0 ; MOV P2, A ; MOV A, #OFFH ; MOV P1, A ;
INPUT: MOV A, P1 ;
HERE: JNB A, HERE ; MOV P2, #1 ;
DELAY: MOV R3, #15 ; OUTER: MOV R2, #240 ; INNER: DJNZ R2, INNER ; DJNZ R3, OUTER ; RET
SDELAY: MOV R5, #45 ;put 45 in R5 H3: MOV R4, #242 ;put 242 in R4 H2: MOV R3, #255 ;put 255 in R5 H1: DJNZ R3, H1 ;Decrement R3 keep @ H1 if not zeroed DJNZ R4, H2 ;Decrement R4 keep @ H2 if not zeroed DJNZ R5, H3 ;Decrement R5 keep @ H3 if not zeroed RET ;Return & Go back to line after ACALL
;--------------------
END
The only absolute rule is that there can be no absolute rule - an inflexible tree snaps in the storm.
But the general idea is to know and understand rules before starting to bend them. It's much better to cherry-pick what works well than spending the day trying to hammer down a square peg in a round hole.