This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Fire Alarm System Homework Help

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

Parents
  • #define CHARACTER_LOOP_COUNT1 10
    #define CHARACTER_LOOP_COUNT2 107
    #define CHARACTER_LOOP_COUNT3 19
    #define CHARACTER_LOOP_COUNT4 33
    #define CHARACTER_LOOP_COUNT5 27

    should be something like
    #define FETCH_CHARACTER_LOOP_COUNT 10
    #define IMAGE_CHARACTER_LOOP_COUNT 107
    #define RESPONSE_CHARACTER_LOOP_COUNT 19
    #define COMPARE_CHARACTER_LOOP_COUNT 33
    #define DISPLAY_CHARACTER_LOOP_COUNT 27

    your version STILL uses "magic numbers"

    oh yes, I have seen this "workaround":
    typedef enum
    {ONE, TWO, THREE, FOUR}

    the idea is that you dismiss those that play games like this

Reply
  • #define CHARACTER_LOOP_COUNT1 10
    #define CHARACTER_LOOP_COUNT2 107
    #define CHARACTER_LOOP_COUNT3 19
    #define CHARACTER_LOOP_COUNT4 33
    #define CHARACTER_LOOP_COUNT5 27

    should be something like
    #define FETCH_CHARACTER_LOOP_COUNT 10
    #define IMAGE_CHARACTER_LOOP_COUNT 107
    #define RESPONSE_CHARACTER_LOOP_COUNT 19
    #define COMPARE_CHARACTER_LOOP_COUNT 33
    #define DISPLAY_CHARACTER_LOOP_COUNT 27

    your version STILL uses "magic numbers"

    oh yes, I have seen this "workaround":
    typedef enum
    {ONE, TWO, THREE, FOUR}

    the idea is that you dismiss those that play games like this

Children
No data