B&B Electronics Parallel Port Input/Output Converter PPIO User Manual

B&b electronics parallel port input/output converter user manual

Advertisement

Quick Links

Not Recommended for New Installations.
Please contact Technical Support for more information.
Parallel Port Input/Output Converter
Model PPIO
Document No. PPIO2899
B&B Electronics Mfg. Co. Inc.
707 Dayton Road -- P.O. Box 1040 -- Ottawa, IL 61350 USA
Phone (815) 433-5100 -- General Fax (815) 433-5105
Home Page: www.bb-elec.com
Sales e-mail:
orders@bb-elec.com
-- Fax (815) 433-5109
Technical Support e-mail:
support@bb.elec.com
-- Fax (815) 433-5104
Copyright
1991-1999 B&B Electronics -- Revised June 1999
.PPIO2899 Manual
Cover Page
B&B Electronics Mfg Co Inc – 707 Dayton Rd - PO Box 1040 - Ottawa IL 61350 - Ph 815-433-5100 - Fax 815-433-5104

Advertisement

Table of Contents
loading

Summary of Contents for B&B Electronics Parallel Port Input/Output Converter PPIO

  • Page 1 Not Recommended for New Installations. Please contact Technical Support for more information. Parallel Port Input/Output Converter Model PPIO Document No. PPIO2899 B&B Electronics Mfg. Co. Inc. 707 Dayton Road -- P.O. Box 1040 -- Ottawa, IL 61350 USA Phone (815) 433-5100 -- General Fax (815) 433-5105 Home Page: www.bb-elec.com Sales e-mail: orders@bb-elec.com...
  • Page 2: Table Of Contents

    TABLE OF CONTENTS INTRODUCTION ...1 ...2 ACKING PC PARALLEL PORT DESCRIPTION ...3 PPIO DESCRIPTION & CONNECTION...7 CONTROLLING THE PPIO USING GWBASIC...9 CONTROLLING THE PPIO USING PASCAL...12 CONTROLLING THE PPIO USING C...18 INTERFACING TO THE PPIO...27 EXAMPLE USE OF THE PPIO ...29 APPENDIX...33 EXADECIMAL UMBERS...
  • Page 3: Introduction

    NTRODUCTION The PPIO allows you to connect your IBM PC (or clone) computer to the outside world using the computer’s parallel port. The eight I/O points can be used as either inputs or outputs. As an output they can control voltages as high as 50 Volts DC and can handle currents as high as 500 mA DC.
  • Page 4: Packing List

    Packing List Examine the shipping carton and contents for physical damage. If there is damage, contact B&B Electronics immediately. The following items should be in the shipping carton: PPIO unit This Instruction Manual PPIO Sample/Test Disk If any of the above items is missing contact B&B Electronics immediately.
  • Page 5: Pc Parallel Port Description

    PC P ARALLEL To understand how the PPIO can be controlled you must first understand how the parallel port works inside the computer. The parallel port is designed to connect the computer with the outside world. It can have up to 12 TTL compatible outputs and up to 9 TTL compatible inputs.
  • Page 6 used to read the status of the port. The PPIO does not need to use this port as an input port. Again, referring to Table 1, if you input the data on port 0379H, then whatever TTL level pins 15, 13, 12, 10, and 11 are will show up as bits 3 through 7.
  • Page 7 378H Output Note 1: X means no connection to any DB-25 pin. Note 2: Bit 4 of 37AH as an output is used to control the interrupt IRQ7. When this bit is HIGH, IRQ7 is enabled and when this bit is LOW, IRQ7 is disabled.
  • Page 8 There are three port addresses that are normally used on a PC for parallel ports: 3BCH, 378H, and 278H. When your PC is reset or turned on these three addresses are scanned by the BIOS in the order shown above. The first one that the BIOS finds with a parallel port installed is assigned the logical name LPT1.
  • Page 9: Ppio Description & Connection

    PPIO D ESCRIPTION The PPIO makes use of the eight output pins (pins 2 through 9) at address 378H to drive its eight outputs. It uses the upper four bits of address 379H (pins 13, 12, 10, and 11) for the upper four input bits of the PPIO.
  • Page 10 Figure 1 PPIO2899 Manual B&B Electronics Mfg Co Inc – 707 Dayton Rd - PO Box 1040 - Ottawa IL 61350 - Ph 815-433-5100 - Fax 815-433-5104...
  • Page 11: Controlling The Ppio Using Gwbasic

    ONTROLLING THE Refer to the fragment of GWBASIC code in Figure 2 to see how to input the bits and make one 8-bit word. 100 OUT &H37A,&H04: 300 A1=INP(&H37A) AND &H0F: REM Input the 400 A2=INP(&H379) AND &HF0: REM Input the high 4 bits 460 IB=A1 OR A2 : The above assumes that you are using a parallel port located at 0378H.
  • Page 12 I/O Bit Force I/O ON The big advantage of using the ANDing and ORing as shown in Table 2 is that it makes each PPIO pin independent. If you have, for instance, PPIO bit 2 ON and all of the rest of the bits OFF then your variable OB will be equal to 04H (00000100 binary).
  • Page 13 When you input the 8-bit word using lines 300-460 of Figure 2, note that you also get the status of the outputs. If some I/O bits are used by the PPIO as outputs the status of the bits you read will tell you the status of the PPIO outputs.
  • Page 14 ONTROLLING THE The PPIO disk includes two source code files as an example of using the PPIO with the Pascal programming language. PPIO.PAS is the main routine of the example program. PPIOUNIT.PAS contains the routines for communicating with the PPIO. In the rest of this section, we assume that you know the Pascal programming language.
  • Page 15 PROCEDURE Set_IRQ_Off; BEGIN PORT[Control_Address] := $04;{Write 4 to disable IRQ} END; {Set_IRQ_Off} The function, In_Byte, returns the value of the variable, Input_Byte. It is defined as: FUNCTION In_Byte : Byte; BEGIN In_Byte := Input_Byte; End; { In_Byte } Notice that this does not read the value of the parallel port. The function Read_Input_Bit reads the port.
  • Page 16 The parallel port’s status register stores the upper nibble (four bits) of the input line status. Since the smallest value that can be read from the port is a byte, some work must be done to get only the upper nibble’s value. We read a byte from the status register and bitwise AND it with F0h (240 decimal, 11110000 binary).
  • Page 17 Notice that in the binary representation of the mask value, line zero’s mask has bit number zero set, and line one’s mask has bit number one set, etc. So, instead of retrieving the mask value from a table, the value is calculated by shifting 00000001b (1 decimal, 01 hexadecimal) right the same number of times as the desired line number.
  • Page 18 As with the function, In_Byte, the mask value is calculated by shifting 00000001b right the same number of times as the desired line number. Once the mask value is calculated, it is bitwise ANDed with Output_Byte. If the resulting value is non-zero, the line is ON and a boolean TRUE is returned, otherwise a boolean FALSE is returned.
  • Page 19 For example: Output_Byte = 01010101b Line_Number Status 00000001b (1 decimal) shift-right 3 (Line_Number) = 00000001b (Status) shift-right 3 (Line_Number) = OR For an example of an application that uses these functions, look at the source code in PPIO.PAS. PPIO2899 Manual B&B Electronics Mfg Co Inc –...
  • Page 20: Controlling The Ppio Usingc

    ONTROLLING THE The PPIO disk includes three source code files as an example of using the PPIO with the C programming language. PPIO.C is the main routine of the example program. PPIOFUNC.C contains the routines for communicating with the PPIO. PPIOFUNC.H contains the function prototypes and definitions for use by PPIOFUNC.H and PPIO.C.
  • Page 21 The function, Set_IRQ_OFF(), tells the parallel port not to generate any interrupts. This should be called immediately after Set_Start(). It is defined as: void Set_IRQ_Off(void) outport (Control_Address, 0x04); The function, In_Byte(), returns the value of the variable, Input_Byte. It is defined as: unsigned int In_Byte(void) return (Input_Byte);...
  • Page 22 The parallel port’s status register stores the upper nibble (four bits) of the input line status. Since the smallest value that can be read from the port is a byte, some work must be done to get only the upper nibble’s value. We read a byte from the status register and bitwise AND it with F0h (240 decimal, 11110000 binary).
  • Page 23 Notice that in the binary representation of the mask value, line zero’s mask has bit number zero set, and line one’s mask has bit number one set, etc. So, instead of retrieving the mask value from a table, the value is calculated by shifting 00000001b (1 decimal, 01 hexadecimal) right the same number of times as the desired line number.
  • Page 24 Line_Number = 3 Output_Byte = 10101010b 00000001b shift-right 3 (Line_Number) = The function, Set_Output_Bit(), sets the selected output line ON of OFF. The function is defined as: void Set_Output_Bit(unsigned char Line_Number, boolean Status) Output_Byte = (Output_Byte & ((1 << Line_Number) ^ 0xFF)) | (Status <<...
  • Page 25 For example: Output_Byte = 01010101b Line_Number = 3 Status = 1 00000001b (1 decimal) shift-right 3 (Line_Number) = 00000001b (Status) shift-right 3(Line_Number) = OR The function, Toggle(), is used to toggle the status of an output line. If the specified line is ON, it will be turned OFF. If it is OFF, it will be turned ON.
  • Page 26 The function, Is_PPIO(), tests whether or not the PPIO is connected to the parallel port and functioning properly. This function should only be used if it is safe to toggle the state of the digital outputs. int Is_PPIO (void) unsigned int old_value; int status = 0x00;...
  • Page 27 Input_Byte = inp( Control_Address ) & 0x0F; if( (Input_Byte & Output_Byte) == Output_Byte ) status |= 0x01; /* Restore the state of the digital outputs */ Output_Byte = old_value; outp( Base_Address, Output_Byte ); return (status); This function writes A0h to the upper four digital outputs, then verifies that the digital output lines are in that state.
  • Page 28: Interfacing To The Ppio

    NTERFACING TO THE Each output of the PPIO is capable of handling currents as high a 500 mA when the output is low. This means that you can connect a relay or a light or other load between the output and a positive power supply voltage.
  • Page 29 Figure 4 PPIO2899 Manual B&B Electronics Mfg Co Inc – 707 Dayton Rd - PO Box 1040 - Ottawa IL 61350 - Ph 815-433-5100 - Fax 815-433-5104...
  • Page 30: Example Use Of The Ppio

    XAMPLE SE OF THE Figure 5 shows a simple use of the PPIO to create an automatic Heating and Air Conditioning system. The top relay controls the Air Conditioning system. The other relay controls the heating system. The top thermostat controls the Air and the bottom one controls the Heat.
  • Page 31 Heat and the Air. See line 230. If IB is equal to two then the 72 degree thermostat is on and the 78 degree one is off. At this time we want both the Heat and the Air off. See line 260. If IB is equal to 3 then both thermostats are on and the temperature must be above 78 degrees.
  • Page 32 90 REM IB IS THE INPUT BYTE AND OB IS THE OUTPUT BYTE 100 OUT &H37A,&H4: 110 OUT &H378,&H0: OFF. 160 A1=INP(&H37A) AND &HF 170 A2=INP(&H379) AND &HF0 180 IB=A1 OR A2 190 IB=IB AND &H3 : 210 IF IB=0 THEN OB=OB OR &H8:OUT &H378,OB:GOTO 160 230 IF IB=1 THEN OB=OB AND NOT &HC:OUT &H378,OB:GOTO 160 260 IF IB=2 THEN OB=OB AND NOT &HC:OUT &H378,OB:GOTO 160 280 IF IB=3 THEN OB=OB OR &H4:OUT &H378,OB:GOTO 160...
  • Page 33: Appendix

    PPENDIX Hexadecimal Numbers Hexadecimal numbers are base-16 numbers. Instead of only using the digits "0" through "9" to represent a number, the letters "A" through "F" are also used. Table 3 shows the value of the individual digits in the hexadecimal numbering system. When we write a hexadecimal number we add an upper or lower case "H"...
  • Page 34: Binary Numbers

    Decimal to Hexadecimal Conversion First 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 Digit: 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207...

This manual is also suitable for:

Ppio

Table of Contents