Need help in making my own little experiment in EdSim51

Thread Starter

p3nny

Joined Jul 22, 2022
1
Hi! I am currently in college and taking up a course which requires us to use EdSim51 Simulator and we were tasked to think of our own experiment.
So what I thought of was a Binary Indentifier
How does it work?
Basically all there is to it is when you press a key in the keypad, it will reflect on the SSD, then the 8bit binary of the decimal value that the user pressed on the keypad would appear at the LCD and the LED would also show the 8bit binary value but in the means of light.
Where am I?
I am now at the part where the key I pressed on the keypad is reflecting in the SSD, I am now stuck because on certain numbers such as 8 and 5, the LCD shows the message "Error! Function set not called." I want to get rid of that (if possible) and input in the LCD.

Here is my code so far:
Code:
ORG 0000H
MAIN:

    CLR P0.3
    CALL ONETWOTHREE
    JB F0, DONE
   
    CLR P0.2
    CALL FOURFIVESIX
    JB F0, DONE
   
    CLR P0.1
    CALL SEVENEIGHTNINE
    JB F0, DONE

    CLR P0.0
    CALL ZERO
    JB F0, DONE

    JMP MAIN

DONE:

    JMP $

ZERO:

    JNB P0.5, KEYZERO

SEVENEIGHTNINE:

    JNB P0.4, KEYNINE
    JNB P0.5, KEYEIGHT
    JNB P0.6, KEYSEVEN

FOURFIVESIX:

    JNB P0.4, KEYSIX
    JNB P0.5, KEYFIVE
    JNB P0.6, KEYFOUR

ONETWOTHREE:

    JNB P0.4, KEYTHREE
    JNB P0.5, KEYTWO
    JNB P0.6, KEYONE

KEYTHREE:

    SETB F0
    MOV R7, #10110000B
    MOV P1, R7
    RET

KEYTWO:

    SETB F0
    MOV R7, #10100100B
    MOV P1, R7
    RET

KEYONE:

    SETB F0
    MOV R7, #11111001B
    MOV P1, R7
    RET

KEYSIX:

    SETB F0
    MOV R7, #10000011B
    MOV P1, R7
    RET

KEYFIVE:

    SETB F0
    MOV R7, #10010010B
    MOV P1, R7
    RET

KEYFOUR:

    SETB F0
    MOV R7, #10011001B
    MOV P1, R7
    RET

KEYNINE:

    SETB F0
    MOV R7, #10011000B
    MOV P1, R7
    RET

KEYEIGHT:

    SETB F0
    MOV R7, #10000000B
    MOV P1, R7
    RET

KEYSEVEN:

    SETB F0
    MOV R7, #11111000B
    MOV P1, R7
    RET

KEYZERO:

    SETB F0
    MOV R7, #111000000B
    MOV P1, R7
    RET

    END
Thank you for the answers!
 

MrChips

Joined Oct 2, 2009
29,869
Welcome to AAC!

Before you start writing code you should always draw a flowchart.
It will make coding at lot easier.
 

MrChips

Joined Oct 2, 2009
29,869
If you examine your subsections they all do the same thing except for one parameter. Think code efficiency. How can you combine them all into one subroutine?
 

MrChips

Joined Oct 2, 2009
29,869
A basic program flow would begin like this:

flowchart1.jpg
As with most embedded systems, the program never ends. Thus we would modify the program flow to this:
flowchart2.jpg
 
Top