EASy68K  
It is currently Thu Apr 02, 2020 1:13 pm

All times are UTC




Post new topic Reply to topic  [ 6 posts ] 
Author Message
PostPosted: Wed Apr 20, 2011 1:26 pm 
Offline

Joined: Fri Apr 15, 2011 8:12 pm
Posts: 6
Location: malaysia
i do not know how to display the above alphabet in 2 segment. i do not know how to edit it using the program I'm having now, such as below:
where should i start? I'm using version 3.7.5


Code:
* Main Program
*-------------------------------------------------------------------------------
                ORG     $1000
                        MOVE.W  #$2300,SR
                        MOVE.B  #32,D0
                        MOVE.B  #00,D1
                        TRAP    #15
UP                      JSR     INITIALIZATION
                        JSR     TASK1         

* Initialization:Initialize 7Segment and LED
*-------------------------------------------------------------------------------
INITIALIZATION          MOVE.B  #11,D0
                        MOVE.W  $FF00,D1
                        TRAP    #15
                        CLR.B   LED
CLEARSEGMENT            CLR.B   SEG8   
                        CLR.B   SEG7
                        CLR.B   SEG6
                        CLR.B   SEG5
                        CLR.B   SEG4
                        CLR.B   SEG3
                        CLR.B   SEG2
                        CLR.B   SEG1
                        RTS


* Task 1:Display group member's names
*-------------------------------------------------------------------------------
TASK1                   MOVE.B  #14,D0          *Display input message
                        LEA     Input_msg,A1
                        TRAP    #15
                        LEA     Name,A1         *Get and store input names
                        MOVE.B  #2,D0
                        TRAP    #15
                        MOVE.B  D1,Name_length  *Store name length
                        JSR     NAMECHECK
CONT1                   JSR     SEG_RIGHT_TO_LEFT
                        BRA     CONT1
                       
NAMECHECK               CLR.L   D0              *To check and categorize the characters entered
                        MOVE.B  NAme_length,D0
                        BEQ     ERROR1
                        LEA     NAME,A0
LOOP1A                  MOVE.B  (A0),D1
                        CMP.B   #$20,D1
                        BEQ     SPACE
                        CMP.B   #$7A,D1
                        BHI     ERROR2
                        CMP.B   #$61,D1
                        BHS     LOWERCASE
                        CMP.B   #$5A,D1
                        BHI     ERROR2
                        CMP.B   #$41,D1
                        BHS     UPPERCASE
                        BRA     ERROR2
SPACE                   SUB.B   #$6,D1          *To process input of SPACE
                        BRA     NEXT1A
LOWERCASE               SUB.B   #$61,D1         *To process input of lowercase character
                        BRA     NEXT1A
UPPERCASE               SUB.B   #$41,D1         *To process input of uppercase character
                        BRA     NEXT1A
NEXT1A                  MOVE.B  D1,(A0)+
                        SUB.L   #$1,D0
                        BNE     LOOP1A
                        RTS
ERROR1                  MOVE.B  #13,D0          *To display error message if incorrect character is entered
                        LEA     Error_msg1,A1
                        Trap    #15
                        BRA     TASK1
ERROR2                  MOVE.B  #13,D0          *To display error message if no character is entered
                        LEA     Error_msg2,A1
                        Trap    #15
                        BRA     TASK1

                       
SEG_RIGHT_TO_LEFT       MOVE.B  Name_length,D1  *To Display names from right to left
                        ADD.L   #8,D1
                        CLR.L   D0
                        LEA     Name,A0
                        LEA     Alphabet,A1
GO_UP                   JSR     LOOP1C
                        CMP.B   #8,D1
                        BLS     CLRSEG1B       
                        MOVE.B  0(A0,D0.W),D3
                        MOVE.B  0(A1,D3.W),D2
                        MOVE.B  D2,SEG1
                        BRA     NEXT1C
CLRSEG1B                CLR.B   SEG1
NEXT1C                  JSR     DELAY
                        ADD.L   #1,D0
                        SUB.L   #1,D1
                        BNE     GO_UP
                        RTS     
LOOP1C                  MOVE.B  SEG7,SEG8
                        MOVE.B  SEG6,SEG7
                        MOVE.B  SEG5,SEG6
                        MOVE.B  SEG4,SEG5
                        MOVE.B  SEG3,SEG4
                        MOVE.B  SEG2,SEG3
                        MOVE.B  SEG1,SEG2
                        RTS
               


*Interrupt
*-------------------------------------------------------------------------------
                        ORG     $70             *Address for interrupt level 4
                        DC.L    $5000           *Location of ISR for interrupt level 4
                        DC.L    $6000           *Location of ISR for interrupt level 5
                       




                         
* Task 2: user input
*-------------------------------------------------------------------------------
                       ORG     $5000
                       
                       JSR     INITIALIZATION
                       JSR     TASK1
                       RTE       

* Task 3:exit sequence
*-------------------------------------------------------------------------------
                       ORG     $6000
                       MOVE.B  #11, D0
                       MOVE.W  #$ff00, D1
                       TRAP    #15
                       MOVE.B  #14,D0
                       LEA     MSG,A1
                       TRAP    #15
                       move.b  #9,d0
                       trap    #15
                       RTE
       


* Definition
*-------------------------------------------------------------------------------
CR              EQU     $0D                     *Define location for Carriage Return
LF              EQU     $0A                     *Define location for Line Feed
LED             EQU     $00E00010               *Define location for LED display*
SEG8            EQU     $00E00000               *Define location for 8th 7Segment display
SEG7            EQU     $00E00002               *Define location for 7th 7Segment display
SEG6            EQU     $00E00004               *Define location for 6th 7Segment display
SEG5            EQU     $00E00006               *Define location for 5th 7Segment display
SEG4            EQU     $00E00008               *Define location for 4th 7Segment display
SEG3            EQU     $00E0000A               *Define location for 3rd 7Segment display
SEG2            EQU     $00E0000C               *Define location for 2nd 7Segment display
SEG1            EQU     $00E0000E               *Define location for 1st 7Segment display
SWITCH          EQU     $00E00012               *Define location for switch
               
                ORG     $2800
Input_msg       DC.B    CR,LF,'Enter The Message To Be Displayed :',CR,LF,0
Error_msg1      DC.B    CR,LF,'Error! No name is entered',0
Error_msg2      DC.B    CR,LF,'Error! Incorrect character is entered',0
MSG             DC.B    CR,LF,'THE PROGRAM IS TERMINATED',0

                ORG     $3000
Name            DS.B    80                      *To store the names entered
Name_length     DS.B    1                       *To store the length of names entered

                ORG     $4000
Alphabet        DC.B    $5F,$7C,$58,$5E,$7B,$71,$3D,$74,$30,$1E
                DC.B    $75,$38,$55,$54,$5C,$73,$67,$50,$6D,$78
                DC.B    $1C,$2A,$6A,$49,$6E,$5B,$00




* DELAY
*-------------------------------------------------------------------------------

                ORG     $9000
DELAY                   MOVE.L  #$0f0000,D5     *To delay the operation of the program
REPEATDELAY             SUB.L   #$1,D5
                        BNE     REPEATDELAY
                        RTS
                       
*-------------------------------------------------------------------------------       
                               
                END     $1000














Top
 Profile  
 
 Post subject:
PostPosted: Wed Apr 20, 2011 3:53 pm 
Offline

Joined: Mon Jul 26, 2010 11:43 pm
Posts: 198
Location: Aurora, IL
The 7 segment display is obviously limited in it's ability to display certain characters. Some are likely to be symbolic. The 't' character looks to be Ok.

Do you want to use two character cells to represent certain letters?

Can you draw a stick diagram of the segments you want to illuminate for these characters?

If you can do that, you should be able to compute a binary representation, and then perhaps expand your alphabet table to encode one or two display segments.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Apr 20, 2011 5:10 pm 
Offline
User avatar

Joined: Thu Dec 16, 2004 6:42 pm
Posts: 1118
The Scrolling Text example by Alan Swanson might be of help.

_________________
Prof. Kelly


Top
 Profile  
 
 Post subject:
PostPosted: Thu Apr 21, 2011 7:48 am 
Offline

Joined: Fri Apr 15, 2011 8:12 pm
Posts: 6
Location: malaysia
i have edited the program but it seems to be able to use interrupt once only and unable to key in the input again, what seems to be the problem?

Code:
* Main Program
*-------------------------------------------------------------------------------
                ORG     $1000
                        MOVE.W  #$2300,SR
                        MOVE.B  #32,D0
                        MOVE.B  #00,D1
                        TRAP    #15
UP                      JSR     INITIALIZATION
                        JSR     TASK1         

* Initialize 7Segment and LED
*-------------------------------------------------------------------------------
INITIALIZATION          CLR.B   LED
CLEARSEGMENT            CLR.B   SEG8   
                        CLR.B   SEG7
                        CLR.B   SEG6
                        CLR.B   SEG5
                        CLR.B   SEG4
                        CLR.B   SEG3
                        CLR.B   SEG2
                        CLR.B   SEG1
                        RTS


* Display text
*-------------------------------------------------------------------------------
TASK1                   MOVE.B  #14,D0          *Display input message
                        LEA     Input_msg,A1
                        TRAP    #15
                        LEA     text,A1         *Get and store input text
                        MOVE.B  #2,D0
                        TRAP    #15
                        MOVE.B  D1,text_length  *Store text length
                        JSR     TEXTCHECK
CONT1                   JSR     SEG_RIGHT_TO_LEFT
                        BRA     CONT1
                       
TEXTCHECK               CLR.L   D0              *To check and categorize the characters entered
                        MOVE.B  text_length,D0
                        BEQ     ERROR1
                        LEA     text,A0
                        LEA     converted,a6
LOOP1A                  MOVE.B  (A0)+,D1
                        CMP.B   #$20,D1
                        BEQ     UPPERCASE 
                        CMP.B   #$7A,D1
                        BHI     ERROR2
                        CMP.B   #$61,D1
                        BHS     LOWERCASE
                        CMP.B   #$5A,D1
                        BHI     ERROR2
                        CMP.B   #$41,D1
                        BHS     UPPERCASE
                        BRA     ERROR2
LOWERCASE               SUB.B   #$20,D1         *To convert input of lowercase character to uppercase character
                        clr.b   d5
UPPERCASE               move.b  D1,d5
                        bsr     digit
                        move.b  d4,(a6)+

                        SUB.L   #$1,D0
                        BNE     LOOP1A
                        RTS
ERROR1                  MOVE.B  #13,D0          *To display error message if incorrect character is entered
                        LEA     Error_msg1,A1
                        Trap    #15
                        BRA     TASK1
ERROR2                  MOVE.B  #13,D0          *To display error message if no character is entered
                        LEA     Error_msg2,A1
                        Trap    #15
                        BRA     TASK1

                       
SEG_RIGHT_TO_LEFT       MOVE.B  text_length,D6  *To Display text from right to left
                        ADD.L   #8,D6
                        CLR.L   D0
                        LEA     converted,A1
GO_UP                   JSR     LOOP1C
                        CMP.B   #8,D6
                        BLS     CLRSEG1B       
                       
                        MOVE.B  0(A1,D0.W),D2
                        MOVE.B  D2,SEG1
                        BRA     NEXT1C
CLRSEG1B                CLR.B   SEG1
NEXT1C                  JSR     DELAY
                        ADD.L   #1,D0
                        SUB.L   #1,D6
                        BNE     GO_UP
                        RTS     
LOOP1C                  MOVE.B  SEG7,SEG8
                        MOVE.B  SEG6,SEG7
                        MOVE.B  SEG5,SEG6
                        MOVE.B  SEG4,SEG5
                        MOVE.B  SEG3,SEG4
                        MOVE.B  SEG2,SEG3
                        MOVE.B  SEG1,SEG2
                        RTS
        ORG $8000                       
                       
digit   clr.l   d4
A       cmp     #'A',d5
        bne     B
        move.b  #%01110111,d4
B       cmp     #'B',d5
        bne     C
        move.b  #%01111100,d4
C       cmp     #'C',d5
        bne     D
        move.b  #%00111001,d4
D       cmp     #'D',d5
        bne     E
        move.b  #%01011110,d4
E       cmp     #'E',d5
        bne     F
        move.b  #%01111001,d4
F       cmp     #'F',d5
        bne     G
        move.b  #%01110001,d4
G       cmp     #'G',d5
        bne     H
        move.b  #%01111101,d4
H       cmp     #'H',d5
        bne     I
        move.b  #%01110110,d4
I       cmp     #'I',d5
        bne     J
        move.b  #%00000110,d4
J       cmp     #'J',d5
        bne     K
        move.b  #%00011110,d4
K       cmp     #'K',d5
        bne     L
        move.b  #%01110100,d4
        move.b  d4,(a6)+
        add.b   #1,text_length
        move.b  #%00100000,d4
L       cmp     #'L',d5
        bne     M
        move.b  #%00111000,d4
M       cmp     #'M',d5
        bne     N
        move.b  #%00110011,d4
        move.b  d4,(a6)+
        add.b   #1,text_length
        move.b  #%00100111,d4
N       cmp     #'N',d5
        bne     O
        move.b  #%01010100,d4
O       cmp     #'O',d5
        bne     P
        move.b  #%00111111,d4
P       cmp     #'P',d5
        bne     Q
        move.b  #%01110011,d4
Q       cmp     #'Q',d5
        bne     R
        move.b  #%00111101,d4
        move.b  d4,(a6)+
        add.b   #1,text_length
        move.b  #%00011111,d4
R       cmp     #'R',d5
        bne     S
        move.b  #%01010000,d4
S       cmp     #'S',d5
        bne     T
        move.b  #%01101101,d4
T       cmp     #'T',d5
        bne     U
        move.b  #%00000111,d4
        move.b  d4,(a6)+
        add.b   #1,text_length
        move.b  #%00000001,d4
U       cmp     #'U',d5
        bne     v
        move.b  #%00111110,d4
V       cmp     #'V',d5
        bne     W
        move.b  #%01100100,d4
        move.b  d4,(a6)+
        add.b   #1,text_length
        move.b  #%01000010,d4
W       cmp     #'W',d5
        bne     X
        move.b  #%00111100,d4
        move.b  d4,(a6)+
        add.b   #1,text_length
        move.b  #%00011110,d4
X       cmp     #'X',d5
        bne     Y
        move.b  #%01110000,d4
        move.b  d4,(a6)+
        add.b   #1,text_length
        move.b  #%01000110,d4
Y       cmp     #'Y',d5
        bne     Z
        move.b  #%01100110,d4
Z       cmp     #'Z',d5
        bne     dash
        move.b  #%01011011,d4
dash    cmp     #'-',d5
        bne     per
        move.b  #%01000000,d4
per     cmp     #'.',d5
        bne     space
        move.b  #$80,d4
space   cmp     #' ',d5
        bne     return
        move.b  #%00000000,d4

return  rts
 
               


*Interrupt
*-------------------------------------------------------------------------------
                        ORG     $70             *Address for interrupt level 4
                        DC.L    $5000           *Location of ISR for interrupt level 4
                        DC.L    $6000           *Location of ISR for interrupt level 5
                       




                         
* user input
*-------------------------------------------------------------------------------
                       ORG     $5000
                       MOVE.B  #11,D0
                       MOVE.W  #$FF00,D1
                       TRAP    #15
                       JSR     INITIALIZATION
                       JSR     TASK1
                       RTE       

* exit sequence
*-------------------------------------------------------------------------------
                       ORG     $6000
                       MOVE.B  #11,D0
                       MOVE.W  #$FF00,D1
                       TRAP    #15
                       MOVE.B  #14,D0
                       LEA     exitmsg,A1
                       TRAP    #15
                       move.b  #9,d0
                       trap    #15
                       RTE
       


* Definition
*-------------------------------------------------------------------------------
CR              EQU     $0D                     *Define location for Carriage Return
LF              EQU     $0A                     *Define location for Line Feed
LED             EQU     $00E00010               *Define location for LED display*
SEG8            EQU     $00E00000               *Define location for 8th 7Segment display
SEG7            EQU     $00E00002               *Define location for 7th 7Segment display
SEG6            EQU     $00E00004               *Define location for 6th 7Segment display
SEG5            EQU     $00E00006               *Define location for 5th 7Segment display
SEG4            EQU     $00E00008               *Define location for 4th 7Segment display
SEG3            EQU     $00E0000A               *Define location for 3rd 7Segment display
SEG2            EQU     $00E0000C               *Define location for 2nd 7Segment display
SEG1            EQU     $00E0000E               *Define location for 1st 7Segment display
SWITCH          EQU     $00E00012               *Define location for switch
               
                ORG     $2800
Input_msg       DC.B    CR,LF,'Enter The Message To Be Displayed :',CR,LF,0
Error_msg1      DC.B    CR,LF,'Error! No name is entered',0
Error_msg2      DC.B    CR,LF,'Error! Incorrect character is entered',0
exitmsg         DC.B    CR,LF,'The program is terminated',0
                ORG     $3000
text            DS.B    80                      *To store the names entered
converted       DS.B    160                      *To store the converted name code
text_length     DS.B    1                       *To store the length of names entered






* DELAY
*-------------------------------------------------------------------------------

                ORG     $9000
DELAY                   MOVE.L  #$060000,D5     *To delay the operation of the program
REPEATDELAY             SUB.L   #$1,D5
                        BNE     REPEATDELAY
                        RTS
                       
*-------------------------------------------------------------------------------       
                               
                END     $1000



















Top
 Profile  
 
 Post subject:
PostPosted: Thu Apr 21, 2011 12:32 pm 
Offline

Joined: Mon Jul 26, 2010 11:43 pm
Posts: 198
Location: Aurora, IL
Consider if TASK1 actually ever returns, and whether it is appropriate to call under interrupt.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Apr 21, 2011 5:15 pm 
Offline

Joined: Fri Apr 15, 2011 8:12 pm
Posts: 6
Location: malaysia
found the problem, i need to clear the registers. thanks for everything


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC


Who is online

Users browsing this forum: Bing [Bot] and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group