Transcript
Page 1: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

1

CONTENTS

PAGE NO

1.0 Introduction 2

2.0 Description of the Circuit 2

3.0 Installation 3

4.0 Demonstration Examples 4

4.1 Demonstration Program for MPS 85-3 Trainer 5

4.2 Demonstration Program for ESA 85-2 Trainer 6

4.3 Demonstration Program for ESA-80 Trainer 8

4.4 Demonstration Program for ESA-65 Trainer 10

4.5 Demonstration Program for ESA-31 Trainer 12

4.6 Demonstration Program for ESA-68K Trainer 13

4.7 Demonstration Program for ESA-196 Trainer 15

4.8 Demonstration Program for ESA 86/88-2 Trainer 17

4.9 Demonstration Program for ESA 68K-2 Trainer 19

4.10 Demonstration Program for ESA-51 Trainer 21

4.11 Demonstration Program for ESA 86/88-3 Trainer 24

4.12 Demonstration Program for ESA-51E Trainer 26

4.13 Demonstration Program for ESA 86/88E Trainer 29

5.0 Exercises 31

Appendix A : Component Layout Diagram

Appendix B : Schematic Diagram

Page 2: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

2

CALCULATOR KEYPAD INTERFACE

1.0 INTRODUCTION

Electro Systems Associates Private Limited (ESA) manufactures trainers for most of the popular

microprocessors viz 8085, Z-80, 6502, 8031, 68000 and 8086/8088 . ESA offers a variety of

modules which can be interfaced to these trainers. These modules can be effectively used for

teaching/training in the laboratories.

In many microprocessor based systems, calculator keypad is used as an input device. A calculator

keypad can be interfaced to a microprocessor using a dedicated peripheral controller like INTEL

8279A Keyboard/Display controller. In this case, the controller can handle the interface problems

like key debounce, 2-key lock-out, N-key roll-over etc,. Further, such controllers can directly

encode the position of the depressed key. In an alternative approach, the calculator keypad interface

is passive and software is used for encoding the key positions and for handling problems like key

debounce, roll-over etc.

The present interface module provides a calculator style calculator keypad consisting of the keys 0

to 9, + ,-, x, =, %, ., C, CE and two spare keys. These 20 keys are arranged in a 3x8 matrix (the

third row has only 4 keys). The row lines can be driven through port C (Bits PC2, PC1 and PC0)

and the status of column lines can be read through port A. This interface allows the user to study

a number of techniques generally used in calculator keypad interfacing. User can write programs

for software debouncing of key closures, two-key lock out, keyboard encoding and parsing etc

to gain a good understanding of keyboard interface. Further, user can become familiar with the

arithmetic group of processor instructions by implementing the calculator functions like

Addition, Subtraction, Multiplication, Division, Percentage etc.

2.0 DESCRIPTION OF THE CIRCUIT

Please refer to the schematic of this interface presented in Appendix B.

It can be seen that the 20 keys are arranged in a 3x8 matrix fashion. The row lines are driven by

PC0, PC1 and PC2. The column lines are read through port A. When no key is pressed, all the

return lines are low. The rows are driven high one after another in sequence. When a row is

driven high, pressing a key in that row causes the corresponding return line to be read as high.

Then it scan for the column for which the key is depressed. The row and column positions can then

be used to encode the key. As the scanning of the rows occurs at very high speed compared to

human reaction times, there is no danger of missing a key depression. Further issues like

debounce etc have to be handled through appropriate software routines.

The sample program presented in the next section illustrates some of these techniques. User can

develop the software for other functions (for eg: calculator functions) and test the results.

Page 3: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

3

3.0 INSTALLATION

The interface is housed in a plastic enclosure which has a locking mechanism. To open the cover,

push the locking mechanism with the finger and lift the cover to open.

The interface module has a 26-pin connector at one edge of the card. This is used for connecting the

interface to the trainer with a flat cable connector set. The +5V DC power required by this

interface is drawn from the trainer via the flat cable connector set.

Table 3-1 shows the connector on various trainers for which the interface can be connected. Some

trainers have two connectors and either may be used for connecting the interface to the trainer.

The demonstration programs presented in this manual assumes that the interface is connected to

connectors shown in column A. If the connector shown in column B is used, then user has to

change the port addresses appropriately. User may refer to the component layout diagrams of

respective ESA trainers to locate the connectors mentioned here.

TABLE-3.1

MICROPROCESSOR

TRAINER

A B

MPS85-3 J2 J1

ESA85-2 J2 J1

ESA-80 J2 J1

ESA-65 P4

ESA-68K P3 P4

ESA 68K-2 J2 J1

ESA 68-2 J1 J6

ESA 196 J1 J2

ESA-31 J2 J1

ESA-51 J10 J7

ESA-51E J5 J3

ESA-86/88-2 J4 J5

ESA-86/88-3 J8 J9

ESA-86/88E J4 J6

Page 4: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

4

4.0 DEMONSTRATION EXAMPLES

A sample program to illustrate the operation of this interface is presented below:

This program encodes the key position as follows:

Key code = D7 D6 D5 D4 D3 D2 D1 D0

where

D7 = D6 = 0

D5 D4 D3 = row number (000 or 001 or 010)

D2 D1 D0 = column number (000 to 111)

Examples:

a) Key labeled 7 is in row 0 and column 7

so D5 D4 D3 = 000 and

D2 D1 D0 = 111

Code = 00 000 111 = 07H

b) Key labeled X is in row 1 and column 5

so D5 D4 D3 = 001 and

D2 D1 D0 = 101

Code = 00 001 101 = 0DH

c) Key labeled CE is in row2 and column 1

so D5 D4 D3 = 010 and

D2 D1 D0 = 001

code = 00 010 001 = 11H

The encoding of the other keys can be worked out in a similar way.

The program is written as an infinite loop. So, user must press the RESET key to allow the

monitor program to regain control.

Page 5: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

5

4.1 DEMONSTRATION PROGRAM FOR MPS 85-3 TRAINER

; Assume the interface is connected over J2 of the trainer.

; The trainer can be in KEYBOARD MODE or SERIAL MODE.

UPDDT EQU 044CH

DISPM EQU 0B5BH

DISLOC EQU 8FF1H

NMOUT EQU 0C41H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8C00 3E 92 MVI A,92H ;Configure 8255 for

;mode 0

8C02 D3 43 OUT 43H ;Port A as I/P,

;Port C as O/P.

8C04 21 5B 8C LXI H,MES ;Display the message

8C07 CD 5B 0B CALL DISPM ;for the serial mode

8C0A DB 50 BACK: IN 50H ;Read DIP switch

8C0C E6 08 ANI 08H

8C0E CA 1E 8C JZ SRL

8011 CD 30 8C CALL KESCN ;Wait for key enclose

8C14 79 MOV A,C

8C15 32 F1 8F STA DISLOC

8C18 CD 4C 04 CALL UPDDT ;Display key code

;in data field

8C1B C3 0A 8C JMP BACK ;Repeat the same

8C1E CD 30 8C SRL: CALL KESCN

8C21 79 MOV A,C

8C22 F5 PUSH PSW ;Push the scanned value

8C23 21 74 8C LXI H,DEL ;Delete old values

8C26 CD 5B 0B CALL DISPM

8C29 F1 POP PSW ;Get the scanned value

8C2A CD 41 0C CALL NMOUT ;Display the scanned

8C2D C3 0A 8C JMP BACK ;value.

8C30 16 02 KESCN: MVI D,02H ;3 Scan rows

8C32 0E 10 MVI C,10H ;keycode

8C34 06 04 MVI B,04H ;Scan lines high

8C36 78 NXTGRP: MOV A,B ;Make one of the

8C37 D3 42 OUT 42H ;Scan lines high

8C39 0F RRC

8C3A 47 MOV B,A

8C3B DB 40 IN 40H

8C3D FE 00 CPI 00H ;Any key pressed?

8C3F C2 50 8C JNZ NXTKEY ;Yes, Check for the

Page 6: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

6

;corresponding key

8C42 79 MOV A,C ;No, Then make the

8C43 D6 08 SUI 08H ;next scan lines high

8C45 4F MOV C,A

8C46 15 DCR D

8C47 7A MOV A,D

8C48 FE FF CPI 0FFH ;Check again

8C4A C2 36 8C JNZ NXTGRP

8C4D C3 30 8C JMP KESCN ;Repeat the same

8C50 0F NXTKEY: RRC

8C51 D8 RC ;Key code is ok, return

8C52 F5 PUSH PSW

8C53 79 MOV A,C

8C54 C6 01 ADI 01H ;If not, Try next

8C56 4F MOV C,A ;keycode.

8C57 F1 POP PSW

8C58 C3 50 8C JMP NXTKEY

8C5B 0A 0D 20 50 52 MES DB 0AH,0DH,

8C60 45 53 53 45 44 ' PRESSED VALUE IS = ',00

8C65 20 56 41 4C 55

8C6A 45 20 49 53 20

8C6F 3D 20 20 20 00

8C74 08 08 00 DEL DB 08H,08H,00

4.2 DEMONSTRATION PROGRAM FOR ESA 85-2 TRAINER

; Assume the interface is connected over J2 of the trainer.

; The trainer can be in KEYBOARD MODE or SERIAL MODE.

UPDDT EQU 0578H

DISPM EQU 0B04H

DISLOC EQU FE75H

NMOUT EQU 0C11H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8000 3E 92 MVI A,92H ;Configure 8255 for

;mode 0

8002 D3 43 OUT 43H ;Port A as I/P,

;Port C as O/P.

8004 21 5B 80 LXI H,MES ;Display the message

8007 CD 04 0B CALL DISPM ;for the serial mode

800A DB 70 BACK: IN 70H ;Read DIP switch

Page 7: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

7

800C E6 08 ANI 08H

800E CA 1E 80 JZ SRL

8011 CD 30 80 CALL KESCN ;Wait for key enclose

8014 79 MOV A,C

8015 32 75 FE STA DISLOC

8018 CD 78 05 CALL UPDDT ;Display key code

;in data field

801B C3 0A 80 JMP BACK ;Repeat for ever

801E CD 30 80 SRL: CALL KESCN

8021 79 MOV A,C

8022 F5 PUSH PSW ;Push the scanned value

8023 21 74 80 LXI H,DEL ;Delete old values

8026 CD 04 0B CALL DISPM

8029 F1 POP PSW ;Get the scanned value

802A CD 11 0C CALL NMOUT ;Display the scanned

802D C3 0A 80 JMP BACK ;value.

8030 16 02 KESCN: MVI D,02H ;3 Scan rows

8032 0E 10 MVI C,10H ;keycode

8034 06 04 MVI B,04H ;Scan line high

8036 78 NXTGRP: MOV A,B ;Make one of the

8037 D3 42 OUT 42H ;scan lines high

8039 0F RRC

803A 47 MOV B,A

803B DB 40 IN 40H

803D FE 00 CPI 00H ;Any key pressed?

803F C2 50 80 JNZ NXTKEY ;Yes, Check for the

;corresponding key

8042 79 MOV A,C ;No, Then make the

8043 D6 08 SUI 08H ;next scan line high

8045 4F MOV C,A

8046 15 DCR D

8047 7A MOV A,D

8048 FE FF CPI 0FFH ;Check again

804A C2 36 80 JNZ NXTGRP

804D C3 30 80 JMP KESCN ;Repeat the same

8050 0F NXTKEY: RRC

8051 D8 RC ;Key code is ok, return

8052 F5 PUSH PSW

8053 79 MOV A,C

8054 C6 01 ADI 01H ;If not, Try next

8056 4F MOV C,A ;keycode.

8057 F1 POP PSW

8058 C3 50 80 JMP NXTKEY

805B 0A 0D 20 50 52 MES DB 0AH,0DH,

Page 8: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

8

8060 45 53 53 45 44 ' PRESSED VALUE IS = ',00

8065 20 56 41 4C 55

806A 45 20 49 53 20

806F 3D 20 20 20 00

8074 08 08 00 DEL DB 08H,08H,00

4.3 DEMONSTRATION PROGRAM FOR ESA-80 TRAINER

; Assume the interface is connected over J2 of the trainer.

; The trainer can be KEYBOARD MODE or SERIAL MODE.

SCAN1 EQU 0624H

HEX7SG EQU 0678H

DISPM EQU 0B5BH

BYTE0 EQU 8100H

OUTBF EQU 8103H

NMOUT EQU 0C41H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8000 3E 92 LD A,92H ;Configure 8255

;for mode 0

8002 D3 43 OUT (43H),A ;Port A as I/P

;Port C as O/P.

8004 21 6C 80 LD HL,MES ;Display the message

8007 CD 5B 0B CALL DISPM ;for the serial mode

800A DB 50 BACK: IN A,(50) ;Read DIP switch

800C E6 08 AND 08H

800E 20 12 JR NZ,KBDISPM

8010 CD 42 80 CALL KEYSCAN ;Get the keycode

8013 79 LD A,C

8014 F5 PUSH AF

8015 21 82 80 LD HL,DEL ;Delete old

8080 CD 5B 0B CALL DISPM ;value

801B F1 POP AF

801C CD 41 0C CALL NMOUT ;Display current

801F C3 0A 80 JP BACK ;value of the

;key pressed

8022 CD 42 80 KBDISPM: CALL KEYSCAN ;Get the keycode

8025 79 LD A,C

8026 32 00 81 LD (8100H),A ;Store it in

;location 8100H

8029 11 00 81 LD DE,BYTE0 ;Initialise DE

802C 21 03 81 LD HL,OUTBF ;pair 8100H & HL

Page 9: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

9

;pair to 8103H.

802F 06 03 LD B,03H ;Count for DATA

8031 1A LOOP1: LD A,(DE) ;ADDRESS field.

8032 CD 78 06 CALL HEX7SG ;Display routine

8035 13 INC DE ;to display the

8036 10 F9 DJNZ LOOP1 ;value of

8038 DD 21 03 81 LD IX,OUTBF ;key pressed.

803C CD 24 06 CALL SCAN1

803F C3 0A 80 JP BACK

8042 16 02 KEYSCN: LD D,02H ;3 Scan rows

8044 0E 10 LD C,10H ;keycode

8046 06 04 LD B,04H ;Scan line high

8048 78 NXTGRP: LD A,B ;Make one of the

8049 D3 42 OUT (42H),A ;scan lines high.

804B 0F RRCA

804C 47 LD B,A

804D DB 40 IN A,(40H)

804F FE 00 CP 00H ;Any key pressed?

8051 20 0F JR NZ,NXTKEY ;Yes, Check for the

;corresponding key

8053 79 LD A,C ;No, Then make the

8054 D6 08 SUB 08H ;next scan line

8056 4F LD C,A ;high

8057 15 DEC D

8058 7A LD A,D

8059 FE FF CP 0FFH ;Check again

805B 20 EB JR NZ,NXTGRP

805D 0E FF LD C,0FFH

805F C3 42 80 JP KEYSCAN ;Repeat the same

8062 0F NXTKEY: RRCA ;Keycode is OK

8063 D8 RET C ;return

8064 F5 PUSH AF

8065 79 LD A,C

8066 C6 01 ADD A,01H ;If not, Try next

8068 4F LD C,A ;keycode.

8069 F1 POP AF

806A 18 F6 JR NXTKEY

806C 0A 0D 4B 45 59 MES: DB 0AH,0DH,

8071 20 50 52 45 53 'KEY PRESSED IS = ',00H

8076 53 45 44 20 49

807B 53 20 3D 20 20

8080 20 00

8082 08 08 00 DEL: DB 08H,08H,00H

Page 10: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

10

4.4 DEMONSTRATION PROGRAM FOR ESA-65 TRAINER

; Assume the interface is connected over P4 of the trainer.

; The trainer can be in KEYBOARD MODE or SERIAL MODE.

CTRLPORT EQU A043H

UPDDT EQU FE59H

PORT C EQU A042H

PORT A EQU A040H

NMOUT EQU E015H

CRLF EQU E018H

DISPM EQU E039H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

0200 ORG 200H

0200 A9 92 LDA #$92H ;Configure 8255 in

;mode 0. port A,B

0202 8D 43 A0 STA CTRLPORT ;as I/P. & port C

;as O/P.

0205 AD 80 A4 BACK: LDA A480H ;Check for KB or

0208 10 0E BPL DISPSER ;serial mode.

020A 20 3F 02 JSR KEYDEP ;Display in

020D AD 50 10 LDA 1050H ;keyboard mode.

0210 A2 00 LDX #$00H

0212 20 59 FE JSR UPDDT ;Display the keycode

0215 4C 05 02 JMP BACK ;Repeat the

0218 A0 00 DISPSER: LDY #00H ;sequence.

021A B9 76 02 DSER: LDA MES,Y ;Display the value

021D 48 PHA ;of key pressed in

021E 20 39 E0 JSR DISPM ;the serial mode.

0221 C8 INY

0222 68 PLA

0223 C9 00 CMP #$00H

0225 D0 F3 BNE DSER

0227 20 3F 02 AGAIN: JSR KEYDEP ;Get the key

022A A9 08 LDA #08HH ;pressed value.

022C 20 39 E0 JSR 0E039H

022F A9 08 LDA #08H

0231 20 39 E0 JSR 0E039H

0234 AD 50 10 LDA 1050H

0237 20 15 E0 JSR NMOUT

023A EA NOP

023B EA NOP

023C 4C 27 02 JMP AGAIN

Page 11: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

11

023F A2 03 KEYDEP: LDX #$03H ;No of scan lines

0241 A0 04 LDY #$04H

0243 A9 10 LDA #$10H ;Base code.

0245 8D 50 10 STA 1050H

0248 8C 42 A0 NXTGROUP: STY PORT C ;Make scan line

024B 98 TYA ;high

024C 4A LSR A

024D A8 TAY ;Next scan line

024E AD 40 A0 LDA PORT A ;Sample return

0251 C9 00 CMP #$00H ;lines.

0253 D0 0F BNE NXTKEY ;If No, go to

0255 AD 50 10 LDA 1050H ;sample next

0258 38 SEC ;return line?

0259 E9 08 SBC #$08H

025B 8D 50 10 STA 1050H ;Base code for

025E CA DEX ;next scan row.

025F D0 E7 BNE NXTGROUP ;If all the 3 scan

;rows are not

;scanned go back to

;scan the next row

0261 4C 3F 02 JMP KEYDEP ;Else, Start

;scanning from

;the first row.

0264 4A NXTKEY: LSR A ;Next return line

0265 90 01 BCC INCREMENT ;If no key is

;depressed in the

;present return

;line, go to sample

;next return line

0267 60 RTS ;Else, go to

0268 48 INCREMENT: PHA ;display the code

0269 AD 50 10 LDA 1050H ;of the key

026C 18 CLC ;depressed.

026D 69 01 ADC #$01

026F 8D 50 10 STA 1050H ;Code for next

0272 68 PLA ;key in the row.

0273 4C 64 02 JMP NXTKEY ;Go to check for

;next key is

;depressed.

0276 0A 0D 4B 45 59 MES: DB 0AH,0DH,

027B 20 50 52 45 53 'KEY PRESSED IS',00H

0280 53 45 44 20 49

0285 53 20 20 00

Page 12: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

12

4.5 DEMONSTRATION PROGRAM FOR ESA-31 TRAINER

; Assume the interface is connected over J2 of the trainer.

; The trainer can be in KEYBOARD MODE or SERIAL MODE.

SEG EQU 0E8H

SEG1 EQU 0E1H

PARLOW EQU 60H

DISPD8 EQU 019BH

CRLOUT EQU 1787H

DISPM EQU 164BH

PUTBYTE EQU 185EH

P2 EQU 0A0H

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8000 ORG 8000H

8000 75 A0 E1 MOV P2,#E1H

8003 78 02 MOV R0,#02H ;3 Scan rows.

8005 E2 MOVX A,@R0

8006 20 E3 17 JB ACC.3,KBD

8009 12 17 87 LCALL CRLOUT

800C 90 80 62 MOV DPTR,#MESG

800F 12 16 4B LCALL DISPM

8012 12 80 5B BACK: LCALL DILIT

8015 12 80 2E LCALL KSCAN ;Wait for key

8018 EC MOV A,R4 ;closure

8019 F5 71 MOV 71H,A ;Get keycode for

801B 12 18 5E LCALL PUTBYTE ;key pressed.

801E 80 F2 SJMP BACK

8020 12 80 2E KBD: LCALL KSCAN

8023 EC MOV A,R4

8024 F5 60 MOV PARLOW,A

8026 75 F0 00 MOV B,#00H

8029 12 01 9B LCALL DISPD8

802C 80 F2 SJMP KBD

802E 75 A0 E8 KSCAN: MOV P2,#SEG

8031 78 03 MOV R0,#03H ;No of scan lines

8033 74 92 MOV A,#92H ;Configure 8255 in

;Mode 0. Port A,B

8035 F2 MOVX @R0,A ;as I/P ports.

;port C as O/P.

8036 AB 02 KSCN: MOV R3,02H ;3 Scan rows.

8038 7C 10 MOV R4,#10H ;Base code.

803A 79 04 MOV R1,#04H ;Scan line high.

Page 13: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

13

803C E9 NXTGRP: MOV A,R1 ;Make one of the

803D 78 02 MOV R0,#02H ;scan lines high.

803F F2 MOVX @R0,A

8040 13 RRC A

8041 F9 MOV R1,A

8042 78 00 MOV R0,#00H

8044 E2 MOVX A,@R0 ;Any key pressed?

8045 70 0A JNZ NXTKEY ;Yes, check for the

8047 EC MOV A,R4 ;corresponding key.

8048 94 08 SUBB A,#08H ;No, then make the

804A FC MOV R4,A ;next scan line

804B 1B DEC R3 ;high.

804C EB MOV A,R3 ;Check again

804D DB ED DJNZ R3,NXTGRP

804F 80 E5 SJMP KSCN ;Repeat the same.

8051 13 NXTKEY: RRC A

8052 50 01 JNC NEXT1 ;Keycode is OK

8054 22 RET ;return.

8055 CC NEXT: XCH A,R4

8056 24 01 ADD A,#01H ;If not, try next

8058 CC XCH A,R4 ;keycode.

8059 80 F6 SJMP NXTKEY

805B

805B 90 80 77 DILIT: MOV DPTR,#DELET ;Delete old value

805E 12 16 4B LCALL DISPM

8061 22 RET

8062 4B 45 59 20 50 MESG: DB 'KEY PRESSEED IS = ',00H

8067 52 45 53 53 45

806C 44 20 49 53 20

8071 3D 20 20 20 20

8076 00

8077 08 08 08 00 DELET: DB 08H, 08H, 00H

4.6 DEMONSTRATION PROGRAM FOR ESA-68K TRAINER

; Assumes the interface is connected over P3 of the trainer.

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

40600 4E B8 03 JSR $304 ;Call the monitor

04 ;routine `CRLF'

40604 13 FC 00 MOVE.B #$92,$80306 ;Configure 8255

92 00 08 ;for mode 0.

Page 14: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

14

03 06 ;Port A as I/P,

;Port C as O/P.

4060C 32 3C 00 START: MOVE.B #03,D1 ;4 Rows of keys

03

40610 22 7C 00 MOVEA.L #$STRING,A1

04 06 80

40616 16 3C 00 MOVE.B #01,D3

01

4061A 13 C3 00 GROUPS: MOVE.B D3,$80304 ;Make one of the

08 03 04 ;scan lines high

;through Port C

40620 14 39 00 MOVE.B $80300,D2 ;Read the return

08 03 00 ;lines

40626 0C 02 00 CMPI.B #00,D2 ;Any key pressed?

00

4062A 67 3C BEQ NEXTGROUP ;No, go for scan-

;ing next row.

4062C 42 84 CLR.L D4 ;(D4)= key to be

;checked.

4062E 09 02 KEYSCAN: BTST D4,D2 ;Key depressed?

40630 67 2E BEQ NEXTKEY ;No, go for next

;key in the row

40632 2A 3C 00 MOVE.L #$A000,D5 ;Debounce delay

00 A0 00

40638 53 85 LOOP: SUBQ.L #01,D5

4063A 66 FC BNE LOOP

4063C 14 39 00 MOVE.B $80300,D2 ;Check after

08 03 00 ;debouncing

40642 09 02 BTST D4,D2

40644 67 C6 BEQ START ;If not depressed

;go back to

;beginning.

40646 33 D1 00 MOVE (A1),$406D4 ;Insert key in the

04 06 D4 ;MESSAGE+$14

;message

4064C 13 FC 00 MOVE.B #$0D,$406C0 ;Insert CR at the

0D 00 04 ;beginning of

06 C0 ;MESSAGE

40654 2C 7C 00 MOVE.L #MESSAGE,A6

04 06 C0

4065A 4E B8 13 JSR $1300 ;Call monitor sub-

00 ;routine to display

;message on console

4065E 60 AC BRA START ;Go to beginning

40660 D2 FC 00 NEXTKEY: ADDA #02,A1

Page 15: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

15

02

40664 52 04 ADDQ.B #01,D4

40666 60 C6 BRA KEYSCAN

40668 53 41 NEXTGROUP: SUBQ #01,D1

4066A 67 A0 BEQ START ;If all rows are

;over go to

;beginning

4066C D2 FC 00 ADDA #$10,A1 ;Base code for

10 ;next row

40670 E3 1B ROL.B #01, D3

40672 60 A6 BRA GROUPS

40680 20 30 20 31 STRING: ASCII ` 0 1 2 3

20 32 20 33 4 5 6 7

20 34 20 35 8 9 . +

20 36 20 37 - x / %

20 38 20 39 CCEF1F2'

20 2E 20 2B

20 2D 20 58

20 2F 20 25

20 43 43 45

46 31 46 32

406C1 20 20 4B 45 MESSAGE+1:ASCII ` KEY DEPRESSED IS ',00

59 20 44 45

50 52 45 53

53 45 44 20

49 53 20 20

20 20 00

4.7 DEMONSTRATION PROGRAM FOR ESA 196 TRAINER

;Assume the interface is connected over J1 of the trainer.

;The trainer can be in KEYBOARD MODE or SERIAL MODE.

REG1 EQU 52H

REG2 EQU 54H

REG3 EQU 56H

REG4 EQU 58H

PORT_A EQU 200H

PORT_B EQU 202H

PORT_C EQU 204H

CMD_PORT EQU 206H

Page 16: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

16

OUT_STRING EQU 22F5H

HEX_ASCII EQU 230FH

OUT_CHARI EQU 21FBH

GET_CH EQU 22F0H

CLR_LCD EQU 354BH

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8000 A1 00 E0 18 LD 18H,#0E000H ;Initialise Stack

8004 B1 92 52 LDB REG1,#92H ;Configure

8007 C7 01 06 02 STB REG1,CMD_PORT ;8255 for mode0

800B 52 ;Port A as I/P.

;Port C as O/P.

800C EF 3C B5 LCALL 354BH ;Clear LCD display.

800F A1 80 80 2A LD 2AH,#MSG ;Display the

8013 EF DF A2 LCALL OUT_STRING ;message.

8016 EF 19 00 SRL: LCALL KSCAN

8019 B0 56 52 LDB REG1,REG3

801C C8 52 PUSH REG1

801E B1 14 36 LDB 36H,#14

8021 A1 96 80 2A LD 2AH,#DEL

8025 EF CD A2 LCALL OUT_STRING

8028 CC 52 POP REG1

802A B0 56 22 LDB 22H,REG3

802D EF DF A2 LCALL HEX_ASCII

8030 27 E4 SJMP SRL

8032 B1 02 58 KSCAN: LDB REG4,#02H ;3 Scan rows

8035 B1 10 56 LDB REG3,#10H ;Keycode

8038 B1 04 54 LDB REG2,#04H ;Scan line.

803B B0 54 52 NXTGRP: LDB REG1,REG2 ;Make one of

803E C7 01 04 02 STB REG1,PORT_C ;the scan line

8042 52 ;high

8043 18 01 52 SHRB REG1,#01H

8046 B0 52 54 LOOP: LDB REG2,REG1

8049 B3 01 00 02 LDB REG1,PORT_A

804D 52

804E 99 00 52 CMPB REG1,#00H ;Any key pressed?

8051 D7 15 JNE NXTKEY ;Yes, check

8053 B0 56 52 LDB REG1,REG3 ;for the

8056 79 08 52 SUBB REG1,#08H ;corresponding

8059 B0 52 56 LDB REG3,REG1 ;key. No, then

805C 15 58 DECB REG4 ;make the next

805E B0 58 52 LDB REG1,REG4 ;scan line high.

8061 99 FF 52 CMPB REG1,#0FFH ;Check again.

8064 D7 D5 JNE NXTGRP

Page 17: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

17

8066 27 CA SJMP KSCAN ;Repeat the same.

8068 18 01 52 NXTKEY: SHRB REG1,#01H

806B D3 04 JNC LOOP1 ;Keycode is ok

806D 91 80 52 ORB REG1,#10000000B;return.

8070 F0 RET

8071 C8 52 LOOP1: PUSH REG1

8073 B0 56 52 LDB REG1,REG3

8076 75 01 52 ADDB REG1,#01H ;If not, Try

8079 B0 52 56 LDB REG3,REG1 ;next keycode.

807C CC 52 POP REG1

807E 27 E8 SJMP NXTKEY

;ENTER THE FOLLOWING DATA IN DATA MEMORY-D1.

;DATA MEMORY LOC. FROM 8080H TO 8098H.

8080 54 48 45 20 MSG: DCB 'THE KEY PRESSED IS ',00H

8084 4B 45 59 20

8088 50 52 45 53

808C 53 45 44 20

8090 49 53 20 20

8094 20 00

8096 08 08 00 DEL: DCB 08H,08H,00H

4.8 DEMONSTRATION PROGRAM FOR ESA 86/88-2 TRAINER

; Assumes the interface is connected over J4 of the trainer.

; The trainer can be in KEYBOARD MODE or SERIAL MODE.

CS : 0

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

MES: DB 0DH,0AH, ' PRESSED KEY VALUE IS = ',00

2000 0D 0A 20 20

2004 20 20 50 52

2008 45 53 53 45

200C 44 20 4B 45

2010 59 20 56 41

2014 4C 55 45 20

2018 49 53 20 3D

201C 20 20 20 00

2020 BA E6 FF MOVW DX,#0FFE6 ;Configure 8255 for

2023 B0 92 MOVB AL,#92 ;mode 0. Port A as

Page 18: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

18

2025 EE OUTB DX ;I/P, Port C as O/P

2026 2E CS

2027 8D 16 00 LEA DX,MES ;Display the message

20 ;for the serial mode

202B 89 D0 MOVW AX,DX

202D 9A 55 1B CALLS 1B55,0FE00

00 FE

2032 BA ED FF START: MOV DX,#0FFED ;Read DIP switch

2035 EC INB DX

2036 24 80 ANDB AL,#80

2038 74 1B JE KBM

203A B0 08 SRL: MOVB AL,#08

203C 9A 50 1B CALLS 1B50,0FE00

00 FE

2041 B0 08 MOVB AL,#08

2043 9A 50 1B CALLS 1B50,0FE00

00 FE

2048 E8 19 00 CALL KSCAN ;Wait for key enclose

204B 88 F8 MOVB AL,BH

204D 9A 64 1B CALLS 1B64,0FE00 ;Display keycode

00 FE ;to console

2052 EB DE JMP START

2054 E8 0C 00 KBM: CALL KSCAN

2057 8A C7 MOVB AL,BH

2059 B4 00 MOVB AH,#00

205B 9A 0A 0B CALLS 0B0A,0FF00

00 FF

2060 EB DE JMP START

2062 B3 02 KSCAN: MOVB BL,#02 ;3 Scan rows keycode

2064 B7 10 MOVB BH,#10

2066 B1 04 MOVB CL,#04 ;Scan line high

2068 BA E4 FF NXTGRP: MOVW DX,#0FFE4

206B 88 C8 MOVB AL,CL ;Make one of the

206D EE OUTB DX ;Scan lines high

207E D0 D8 RCRB AL,1

2070 88 C1 MOVB CL,AL

2072 BA E0 FF MOVW DX,#0FFE0

2074 EC INB DX ;Any key pressed

2076 08 C0 ORB AL,AL

2078 75 0D JNE NXTKEY ;Yes check for the

207A 80 EF 08 SUBB BH,#08 ;corresponding key

207D FE CB DECB BL ;No then make the

207F 80 FB FF CMPB BL,#0FF ;next scan line high

;Check again

2082 75 E4 JNE NXTGRP

Page 19: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

19

2084 EB DC JMP KSCAN ;Repeat the same

2086 D0 D8 NXTKEY: RCRB AL,1 ;Keycode is OK return

2088 73 01 JNB NZ

208A C3 RET

208B 80 C7 01 NZ: ADDB BH,#01 ;If not try next

208E E9 F5 FF JMP NXTKEY ;Keycode

4.9 DEMONSTRATION PROGRAM FOR ESA 68K-2 TRAINER

; Assume the interface is connected over J2 of the trainer.

; The trainer must be in SERIAL mode only.

ORG 400400H

PORTA EQU 800011H

PORTC EQU 800019H

PA_CT EQU 80000DH

PA_DI EQU 800005H

PC_DI EQU 800009H

PAAR EQU 800015H

ADDRESS OPCODE LABLE MNEMONICS COMMENTS

400400 13FC 00FF MOVE.B #$FF,PC_DI ;To initialise

0080 0009 ;Port C as O/P.

400408 2C7C 0040 MOVEA.L #MESSAGE,A6 ;Display message

04A6

40040E 4E4B TRAP #11

400410 00 06 DC.W $0006

400412 7203 START: MOVE.L #03H,D1 ;3 Scan rows.

400414 227C 0040 MOVEA.L #STRING,A1

047C

40041A 163C 0001 MOVE.B #01,D3

40041E 4643 NOT D3

400420 13C3 0080 GROUPS: MOVE.B D3,PORTC ;Make one of the

0019 ;Scan line high

400426 1439 0080 MOVE.B PAAR,D2

0015

40042C 4642 NOT D2

40042E 0C02 0000 CMPI.B #$00H,D2 ;Any key pressed?

400432 6736 BEQ.S NEXTGROUP ;Yes, Check for

400434 4284 CLR.L D4 ;corresponding

;key.

400436 0902 KEYSCAN: BTST D4,D2

400438 6728 BEQ.S NEXTKEY

Page 20: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

20

40043A 2A3C 0000 MOVE.L #$A000,D5 ;Debounce delay

A000

400440 5385 LOOP: SUBQ.L #01,D5

400442 66FC BNE.S LOOP

400444 1439 0080 MOVE.B PAAR,D2 ;Check after

0015 ;debouncing

40044A 4642 NOT D2

40044C 0902 BTST D4,D2

40044E 67C2 BEQ.S START

400450 33D1 0040 MOVE (A1),MESSAGE+$14

04BA

400456 2C7C 0040 MOVEA.L #MESSAGE,A6

04A6

40045C 4E4B TRAP #11

40045E 00 06 DC.W $0006

400460 60B0 BRA.S START

400462 D2FC 0002 NEXTKEY:ADDA #02,A1 ;Check for the

400466 5204 ADDQ.B #01,D4 ;next key.

400468 60CC BRA.S KEYSCAN

40046A 5301 NEXTGROUP: SUBQ.B #01,D1

40046C 67A4 BEQ.S START

40046E D3FC 0000 ADDA.L #$10,A1

0010

400474 4643 NOT D3

400476 E31B ROL.B #01,D3

400478 4643 NOT D3

40047A 60A4 BRA.S GROUPS

40047C 20 30 20 31 STRING: DB " 0 1 2 3 4 5 6 7 8 9 . + - * /

20 32 % CCEF1F2"

400482 20 33 20 34

20 35

400488 20 36 20 37

20 38

40048E 20 39 20 2E

20 2B

400494 20 2D 20 58

20 2F

40049A 20 25 20 43

43 45

4004A0 46 31 46 32 20 00

4004A6 0D 20 20 20 MESSAGE: DB 0DH," KEY PRESSED IS " ,00H

4B 45

4004AC 59 20 50 52

45 53

4004B2 53 45 44 20

Page 21: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

21

49 53

4004B8 20 20 20 20 00

4.10 DEMONSTRATION PROGRAM FOR ESA-51 TRAINER

;Assume the interface is connected over J10 of the trainer.

;The trainer can be in keyboard mode or in serial mode.

SCRLF EQU 13A7H

OUTPUT EQU 0404H

OUTSTG EQU 1200H

PUTBYTE EQU 13D2H

SEG EQU 0E8H

CLRLCD EQU 03BBH

ADDRESS OPCODE LABLE MNEMONIC COMMENTS

8000 ORG 8000H

8000 75 A0 E9 MOV P2,#0E9H

8003 78 04 MOV R0,#04H ;CHECK WHETHER

8005 E2 MOVX A,@R0 ;KEYBOARD OR

8006 20 E3 17 JB ACC.3,KBD ;SERIAL MODE

8009 12 13 A7 LCALL SCRLF

800C 90 80 88 MOV DPTR,#MESG

800F 12 04 04 LCALL OUTPUT

8012 12 80 81 BACK: LCALL DILIT ;WAIT FOR KEY

;CLOSURE

8015 12 80 54 LCALL KSCAN ;GET KEYCODE FOR

8018 EC MOV A,R4 ;KEY PRESSED

8019 F5 71 MOV 71H,A

801B 12 13 D2 LCALL PUTBYTE

801E 80 F2 SJMP BACK

8020 12 03 BB KBD: LCALL CLRLCD ;CLEAR THE LCD

;DISPLAY

8023 90 80 88 MOV DPTR,#MESG ;DISPLAY THE

;MESSAGE

8026 12 04 04 LCALL OUTPUT ;'KEY PRESSED'

8029 C0 03 KBD1: PUSH 3 ;SAVE THE R3 & R4

802B C0 04 PUSH 4 ;REGISTERS

802D 12 80 54 LCALL KSCAN ;GET THE KEYCODE

8030 EC MOV A,R4 ;FOR KEY PRESSED

8031 D0 04 POP 4 ;GET BACK R4 & R3

8033 D0 03 POP 3 ;REGISTER VALUES

8035 F5 71 MOV 71H,A ;DISPLAY THE

Page 22: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

22

8037 12 13 D2 LCALL PUTBYTE ;KEYCODE

803A 74 10 MOV A,#10H ;MOVE THE CURSOR

803C 12 80 A3 LCALL LCDCMD ;LEFT THREE TIMES

803F 74 10 MOV A,#10H

8041 12 80 A3 LCALL LCDCMD

8044 74 10 MOV A,#10H

8046 12 80 A3 LCALL LCDCMD

8049 74 14 MOV A,#14H ;SHIFTS CURSOR

;POSITION

804B 12 80 A3 LCALL LCDCMD ;TO THE RIGHT

804E 7B 00 MOV R3,#0 ;TO WRITE INTO

;THE 14X1

8050 7C 0E MOV R4,#0EH ;POSITION OF THE

;LCD MODULE

8052 80 D5 SJMP KBD1

8054 75 A0 E8 KSCAN: MOV P2,#0E8H ;CONFIGURE 8255

;IN MODE 0.

8057 78 03 MOV R0,#03H ;PORT A&B AS I/P

;PORTS

8059 74 92 MOV A,#92H ;AND PORT C AS

;O/P PORT.

805B F2 MOVX @R0,A

805C AB 02 KSCN: MOV R3,02H ;3 SCAN ROWS

805E 7C 10 MOV R4,#10H ;BASE CODE

8060 79 04 MOV R1,#04H ;SCAN LINE HIGH

8062 E9 NXTGRP: MOV A,R1 ;MAKE ONE OF THE

;SCAN

8063 78 02 MOV R0,#02H ;LINES HIGH

8065 F2 MOVX @R0,A

8066 13 RRC A

8067 F9 MOV R1,A

8068 78 00 MOV R0,#00H

806A E2 MOVX A,@R0 ;ANY KEY PRESSED ?

806B 70 0A JNZ NXTKEY ;YES,CHECK FOR THE

;CORRESPONDING KEY

806D EC MOV A,R4 ;NO,THEN MAKE THE

806E 94 08 SUBB A,#08H ;NEXT SCAN LINE

8070 FC MOV R4,A ;HIGH

8071 1B DEC R3 ;CHECK AGAIN

8072 EB MOV A,R3

8073 DB ED DJNZ R3,NXTGRP

8075 80 E5 SJMP KSCN ;REPEAT THE

;PROCESS

8077 13 NXTKEY: RRC A ;KEYCODE IS OK

8078 50 01 JNC NEXT ;RETURN

Page 23: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

23

807A 22 RET

807B CC NEXT: XCH A,R4 ;IF NOT TRY NEXT

807C 24 01 ADD A,#01H ;KEYCODE

807E CC XCH A,R4

807F 80 F6 SJMP NXTKEY

8081 90 80 97 DILIT: MOV DPTR,#BACKSP ;DELETE OLD VALUE

8084 12 04 04 LCALL OUTPUT

8087 22 RET

8088 4B 45 59 20 50 MESG: DB 'KEY PRESSED= ',00H

808D 52 45 53 53 45

8092 44 3D 20 20 00

8097 08 08 00 BACKSP: DB 08H,08H,00H

809A 7E 05 DLY: MOV R6,#5H

809C 7F FF DLY1: MOV R7,#FFH

809E DF FE DJNZ R7,$

80A0 DE FA DJNZ R6,DLY1

80A2 22 RET

;SUBROUTINE TO WRITE TO THE COMMAND PORT OF ON BOARD LCD

80A3 F5 F0 LCDCMD: MOV B,A

80A5 11 9A ACALL DLY

80A7 C0 F0 PUSH B

80A9 C0 83 PUSH DPH

80AB C0 82 PUSH DPL

80AD 90 E9 03 MOV DPTR,#0E903H

80B0 74 80 MOV A,#80H

80B2 F0 MOVX @DPTR,A

80B3 7E 7F MOV R6,#7FH

80B5 DE FE S0: DJNZ R6,S0

80B7 90 E9 02 MOV DPTR,#0E902H

80BA 74 04 MOV A,#04

80BC F0 MOVX @DPTR,A

80BD 90 E9 00 MOV DPTR,#0E900H

80C0 E5 F0 MOV A,B

80C2 F0 MOVX @DPTR,A

80C3 A3 INC DPTR

80C4 74 00 MOV A,#00H

80C6 F0 MOVX @DPTR,A

80C7 7E 7F MOV R6,#7FH

80C9 DE FE S1: DJNZ R6,S1

80CB D0 82 POP DPL

80CD D0 83 POP DPH

Page 24: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

24

80CF D0 F0 POP B

80D1 22 RET

4.11 DEMONSTRATION PROGRAM FOR ESA 86/88-3 TRAINER

; Assume the interface is connected over J8 of the trainer.

; This program displays the value of the pressed key on the PC

; console

; in serial mode or LCD in stand-alone mode of operation.

; The program can be executed in STAND-ALONE MODE or SERIAL

; MODE of operation.

; The program starts at memory location 0:2000H

; Please refer ESA 86/88-3 user's manual for mnemonic syntax

; suitable to trainer

Code Segment :0000H

ADDRESS OPCODE LABEL MNEMONIC COMMENTS

2000 B8 00 00 MOVW AX,0000H ;Initialise Segment

2003 8E C8 MOVW CS,AX ;Registers

2005 8E C0 MOVW ES,AX

2007 BC 00 30 MOVW SP,3000H ;Initialise Stack

;Pointer

200A BA E6 FF MOVW DX,0FFE6H ;Configure 8255 Port

200D B0 92 MOVB AL,92H ;A as I/P & Port C

;as O/P

200F EE OUTB DX,AL

2010 EB 18 JMP GO ;Display message

;string

2012 20 50 52 45 53 53 MES: DB ' PRESSED KEY VALUE = ',0H

2018 45 44 20 4B 45 59

201E 20 56 41 4C 55 45

2024 20 3D 20 20 20 00

202A 9A 31 00 00 FB GO: CALLS 0FB00:0031H ;Newline routine

202F 2E CS

2030 8D 16 12 20 LEA DX,@MES

2034 8B C2 MOVW AX,DX

2036 9A 13 00 00 FB CALLS 0FB00:0013H ;Display message

; Routine for scanning which key has been pressed

203B B1 04 KSCAN: MOVB CL,04H ;Scanning 3 rows

Page 25: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

25

203D BB 00 00 MOVW BX,00H ;Initialise count

2040 E8 62 00 NXTGRP: CALL DELAY

2043 BA E4 FF MOVW DX,0FFE4H

2046 8A C1 MOVB AL,CL ;Make one of the

2048 EE OUTB DX,AL ;scan lines high

2049 BA E0 FF MOVW DX,0FFE0H

204C EC INB AL,DX ;Check for key

;pressed

204D 3C 00 CMPB AL,00

204F 75 09 JNE KEYCODE ;If yes, detect key

2051 D0 E9 SHRB CL,1 ;code Else, make

2053 80 F9 00 CMPB CL,0H ;next scan line

;high and repeat

2056 75 E8 JNE NXTGRP

2058 EB E1 JMP KSCAN ;Repeat key scanning

205A 8A D8 KEYCODE: MOVB BL,AL ;Detect column

205C D0 EB KEY: SHRB BL,1

205E 80 FB 00 CMPB BL,0H

2061 74 04 JE NEXT

2063 FE C7 INCB BH ;Increment column

;count

2065 EB F5 JMP KEY ;Repeat continuously

2067 80 F9 01 NEXT: CMPB CL,01H ;Detect row

206A 74 06 JE DISP

206C D0 E1 SHLB CL,1

206E D0 E1 SHLB CL,1

206D 8A D9 MOVB BL,CL ;Save row code

2072 BA ED FF DISP: MOVW DX,0FFEDH ;Check mode of trainer

2075 EC INB AL,DX ;operation

2076 24 10 ANDB AL,10H ;If trainer is in

2078 74 11 JZ SRL ;stand-alone mode,

207A 9A 35 01 00 FB CALLS 0FB00:0135H ;clear display

207F 2E cs

2080 8D 16 12 20 LEA DX,@MES ;on LCD and display

2084 8B C2 MOVW AX,DX ;fresh message

2087 9A 13 00 00 FB CALLS 0FB00:0013H

208B B0 08 SRL: MOVB AL,08H ;Else, output keycode

208D 9A 00 00 00 FB CALLS 0FB00:0000H ;on console.

2092 9A 00 00 00 FB CALLS 0FB00:0000H

2097 0A FB ORB BH,BL ;Compute key value

2099 8A C7 MOVB AL,BH ;from row code &

;column count

209B 9A 52 00 00 FB CALLS 0FB00:0052H ;Display key

;value

20A0 BB 00 00 MOVW BX,00H

Page 26: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

26

20A3 EB 96 JMP KSCAN ;Repeat continuously

20A5 51 DELAY: PUSH CX

20A6 B9 FF FF MOVW CX,0FFFFH ;Delay routine

20A9 E2 FE LOOP 20A9

20AB 59 POP CX

20AC C3 RET

4.12 DEMONSTRATION PROGRAM FOR ESA-51E TRAINER

;ASSUME THE INTERFACE IS CONNECTED OVER J5 OF THE TRAINER.

;THE TRAINER CAN BE IN KEYBOARD MODE OR IN SERIAL MODE.

SCRLF EQU 1373H

OUTPUT EQU 03FAH

PUTBYTE EQU 139EH

SEG EQU 0E8H

CLRLCD EQU 03B1H

ADDRESS OPCODE LABEL MNEMONIC COMMENTS

8000 ORG 8000H

8000 75 A0 E1 MOV P2,#0E1H

8003 78 02 MOV R0,#02H ;CHECK WHETHER

8005 E2 MOVX A,@R0 ;KEYBOARD OR

8006 20 E3 17 JB ACC.3,KBD ;SERIAL MODE

8009 12 13 73 LCALL SCRLF

800C 90 80 88 MOV DPTR,#MESG

800F 12 03 FA LCALL OUTPUT

8012 12 80 81 BACK: LCALL DILIT ;WAIT FOR KEY

;CLOSURE

8015 12 80 54 LCALL KSCAN ;GET KEYCODE FOR

8018 EC MOV A,R4 ;KEY PRESSED

8019 F5 71 MOV 71H,A

801B 12 13 9E LCALL PUTBYTE

801E 80 F2 SJMP BACK

8020 12 03 B1 KBD: LCALL CLRLCD ;CLEAR THE LCD

;DISPLAY

8023 90 80 88 MOV DPTR,#MESG ;DISPLAY THE

;MESSAGE

8026 12 03 FA LCALL OUTPUT ;'KEY PRESSED'

8029 C0 03 KBD1: PUSH 3 ;SAVE THE R3 &R4

802B C0 04 PUSH 4 ;REGISTERS

802D 12 80 54 LCALL KSCAN ;GET THE KEYCODE

8030 EC MOV A,R4 ;FOR KEY PRESSED

Page 27: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

27

8031 D0 04 POP 4 ;GET BACK THE R4&

8033 D0 03 POP 3 ;R3 REGISTER VALUES

8035 F5 71 MOV 71H,A ;DISPLAY THE

8037 12 13 9E LCALL PUTBYTE ;KEYCODE

803A 74 10 MOV A,#10H ;MOVE THE CURSOR

803C 12 80 A3 LCALL LCDCMD ;LEFT 3 TIMES

803F 74 10 MOV A,#10H

8041 12 80 A3 LCALL LCDCMD

8044 74 10 MOV A,#10H

8046 12 80 A3 LCALL LCDCMD

8049 74 14 MOV A,#14H ;SHIFTS CURSOR

804B 12 80 A3 LCALL LCDCMD ;POSITION TO THE

804E 7B 00 MOV R3,#0 ;RIGHT TO WRITE

;INTO THE 14X1

8050 7C 0E MOV R4,#0EH ;POSITION OF THE

;LCD MODULE

8052 80 D5 SJMP KBD1

8054 75 A0 E8 KSCAN: MOV P2,#0E8H ;CONFIGURE 8255 IN

;MODE 0.

8057 78 03 MOV R0,#03H ;PORT A&B AS I/P

8059 74 92 MOV A,#92H ;AND PORT C AS O/P

805B F2 MOVX @R0,A

805C AB 02 KSCN: MOV R3,02H ;3 SCAN ROWS

805E 7C 10 MOV R4,#10H ;BASE CODE

8060 79 04 MOV R1,#04H ;SCAN LINE HIGH

8062 E9 NXTGRP: MOV A,R1 ;MAKE ONE OF THE

8063 78 02 MOV R0,#02H ; SCAN LINES HIGH

8065 F2 MOVX @R0,A

8066 13 RRC A

8067 F9 MOV R1,A

8068 78 00 MOV R0,#00H

806A E2 MOVX A,@R0 ;ANY KEY PRESSED ?

806B 70 0A JNZ NXTKEY ;YES,CHECK FOR THE

;CORRESPONDING KEY

806D EC MOV A,R4 ;NO,THEN MAKE THE

806E 94 08 SUBB A,#08H ;NEXT SCAN LINE

8070 FC MOV R4,A ;HIGH

8071 1B DEC R3 ;CHECK AGAIN

8072 EB MOV A,R3

8073 DB ED DJNZ R3,NXTGRP

8075 80 E5 SJMP KSCN ;REPEAT THE PROCESS

8077 13 NXTKEY: RRC A ;KEYCODE IS OK

8078 50 01 JNC NEXT ;RETURN

807A 22 RET

Page 28: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

28

807B CC NEXT: XCH A,R4 ;IF NOT TRY NEXT

807C 24 01 ADD A,#01H ;KEYCODE

807E CC XCH A,R4

807F 80 F6 SJMP NXTKEY

8081 90 80 97 DILIT: MOV DPTR,#BACKSP ;DELETE OLD

;VALUE

8084 12 03 FA LCALL OUTPUT

8087 22 RET

8088 4B 45 59 20 50 MESG: DB 'KEY PRESSED= ',00H

808D 52 45 53 53 45

8092 44 3D 20 20 00

8097 08 08 00 BACKSP: DB 08H,08H,00H

809A 7E 05 DLY: MOV R6,#5H

809C 7F FF DLY1: MOV R7,#FFH

809E DF FE DJNZ R7,$

80A0 DE FA DJNZ R6,DLY1

80A2 22 RET

;SUBROUTINE TO WRITE TO THE COMMAND PORT OF ON BOARD LCD

80A3 F5 F0 LCDCMD: MOV F0,A

80A5 11 9A ACALL DLY

80A7 C0 F0 PUSH F0

80A9 C0 83 PUSH DPH

80AB C0 82 PUSH DPL

80AD 90 E1 00 MOV DPTR,#0E100H

80B0 74 0D MOV A,#0DH

80B2 F0 MOVX @DPTR,A

80B3 7E 7F MOV R6,#7FH

80B5 DE FE S0: DJNZ R6,S0

80B7 90 E1 03 MOV DPTR,#0E103H

80BA 74 04 MOV A,#04H

80BC F0 MOVX @DPTR,A

80BD 90 E1 01 MOV DPTR,#0E101H

80C0 E5 F0 MOV A,F0

80C2 F0 MOVX @DPTR,A

80C3 A3 INC DPTR

80C4 A3 INC DPTR

80C5 74 00 MOV A,#00

80C7 F0 MOVX @DPTR,A

80C8 7E 7F MOV R6,#7FH

80CA DE FE S1: DJNZ R6,S1

80CC D0 82 POP DPL

Page 29: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

29

80CE D0 83 POP DPH

80D0 D0 F0 POP F0

80D2 22 RET

4.13 DEMONSTRATION PROGRAM FOR ESA 86/88E TRAINER

; Assume the interface is connected over J4 of the trainer.

; This program displays the value of the pressed key on the PC

; console

; in serial mode or LCD in stand-alone mode of operation.

; The program can be executed in STAND-ALONE MODE or SERIAL

; MODE of operation.

; The program starts at memory location 0:2000H

; Please refer ESA 86/88E user's manual for mnemonic syntax

; suitable to trainer

Code Segment :0000H

ADDRESS OPCODE LABEL MNEMONIC COMMENTS

2000 B8 00 00 MOVW AX,0000H ;Initialise Segment

2003 8E C8 MOVW CS,AX ;Registers

2005 8E C0 MOVW ES,AX

2007 BC 00 30 MOVW SP,3000H ;Initialise Stack

;Pointer

200A BA E6 FF MOVW DX,0FFE6H ;Configure 8255 Port

200D B0 92 MOVB AL,92H ;A as I/P & Port C

;as O/P

200F EE OUTB DX,AL

2010 EB 18 JMP GO ;Display message

;string

2012 20 50 52 45 53 53 MES: DB ' PRESSED KEY VALUE = ',0H

2018 45 44 20 4B 45 59

201E 20 56 41 4C 55 45

2024 20 3D 20 20 20 00

202A 9A 31 00 00 FB GO: CALLS 0FB00:0031H ;Newline routine

202F 2E CS

2030 8D 16 12 20 LEA DX,@MES

2034 8B C2 MOVW AX,DX

2036 9A 13 00 00 FB CALLS 0FB00:0013H ;Display message

; Routine for scanning which key has been pressed

203B B1 04 KSCAN: MOVB CL,04H ;Scanning 3 rows

203D BB 00 00 MOVW BX,00H ;Initialise count

Page 30: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

30

2040 E8 62 00 NXTGRP: CALL DELAY

2043 BA E4 FF MOVW DX,0FFE4H

2046 8A C1 MOVB AL,CL ;Make one of the

2048 EE OUTB DX,AL ;scan lines high

2049 BA E0 FF MOVW DX,0FFE0H

204C EC INB AL,DX ;Check for key

;pressed

204D 3C 00 CMPB AL,00

204F 75 09 JNE KEYCODE ;If yes, detect key

2051 D0 E9 SHRB CL,1 ;code Else, make

2053 80 F9 00 CMPB CL,0H ;next scan line

;high and repeat

2056 75 E8 JNE NXTGRP

2058 EB E1 JMP KSCAN ;Repeat key scanning

205A 8A D8 KEYCODE: MOVB BL,AL ;Detect column

205C D0 EB KEY: SHRB BL,1

205E 80 FB 00 CMPB BL,0H

2061 74 04 JE NEXT

2063 FE C7 INCB BH ;Increment column

;count

2065 EB F5 JMP KEY ;Repeat continuously

2067 80 F9 01 NEXT: CMPB CL,01H ;Detect row

206A 74 06 JE DISP

206C D0 E1 SHLB CL,1

206E D0 E1 SHLB CL,1

206D 8A D9 MOVB BL,CL ;Save row code

2072 BA ED FF DISP: MOVW DX,0FFEDH;Check mode of trainer

2075 EC INB AL,DX ;operation

2076 24 10 ANDB AL,10H ;If trainer is in

2078 74 11 JZ SRL ;stand-alone mode,

207A 9A 35 01 00 FB CALLS 0FB00:0135H ;clear display

207F 2E cs

2080 8D 16 12 20 LEA DX,@MES ;on LCD and display

2084 8B C2 MOVW AX,DX ;fresh message

2087 9A 13 00 00 FB CALLS 0FB00:0013H

208B B0 08 SRL: MOVB AL,08H ;Else, output keycode

208D 9A 00 00 00 FB CALLS 0FB00:0000H ;on console.

2092 9A 00 00 00 FB CALLS 0FB00:0000H

2097 0A FB ORB BH,BL ;Compute key value

2099 8A C7 MOVB AL,BH ;from row code &

;column count

209B 9A 52 00 00 FB CALLS 0FB00:0052H ;Display key

;value

20A0 BB 00 00 MOVW BX,00H

20A3 EB 96 JMP KSCAN ;Repeat continuously

Page 31: Intel's MCS-51 family of microcontrollers and its ... · KEYBOARD INTERFACE 3 3.0 INSTALLATION The interface is housed in a plastic enclosure which has a locking mechanism. To open

KEYBOARD INTERFACE

31

20A5 51 DELAY: PUSH CX

20A6 B9 FF FF MOVW CX,0FFFFH ;Delay routine

20A9 E2 FE LOOP $

20AB 59 POP CX

20AC C3 RET

5.0 EXERCISES

The user can further implement the following functions with proper software.

1. All mathematical operations like ADD, SUBTRACT MULTIPLY & DIVIDE. The result can

displayed with an '=' sign. For -ve nos, a -ve sign has to be displayed.

2. The program can be modified such that both C & CE keys are recognized. CE clears the data

just entered where as C clears the complete result.

3. Combination of all the above mathematical functions. For eg, it can be made to solve the

following problem.

Find the value of (5+4) x 3 - 7

The following table gives the corresponding HEX value for the keys

LABLE ON

THE

KEYTOP

HEX CODE

LABLE ON

THE

KEYTOP

HEX

CODE

0 0 - 0C

1 1 X 0D

2 2 / 0E

3 3 / 0F

4 4 AC 10

5 5 CE 11

6 6 CHK 12

7 7 = 13

8 8 MC 14

9 9 MR 15

. 0A M 16

+ 0B M+ 17


Top Related