⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diodesc.txt

📁 功能强大
💻 TXT
字号:
*   ----------------------------------------------------------------------
*   File        :   DIODESC.TXT
*   Creator     :   Blake Miller
*   Version     :   01.01.00    February 1991
*   Purpose     :   Describe functions in DIOLIB?.LIB
*   Revision    :   February 28, 1991
*   -----------------------------------------------------------------------

	Collection of routines for digital I/O using a
	Computer Boards Inc. CIOAD-16 or a Metrabyte PIO12 compatible
	digital I/O board containing at least 1 Intel 8255 Programmable
	Peripheral Interface integrated circuit.
	The functions can assume a small, medium, or large memory model.
	Link your program with the correct DIOLIB?.LIB library memory model:
		DIOLIBL.LIB -> Large  Memory Model
		DIOLIBM.LIB -> Medium Memory Model
		DIOLIBS.LIB -> Small  Memory Model

	Note that some of the functions use inline assembly language as is
	compatible with Microsoft Quick C Version 2.0 and later.  This inline
	assembly is also compatible with Microsoft C Version 6.0, or so I have
	been told.  The INPort and OUTPort type instructions will have to be
	modified or changed to a different function call for use with the
	Borland Turbo C C compiler or probably with any other type of compiler.

	I would like to make an aesthetic comment.
	These routines were written for C programmers.  Therefore, all offset
	for bits, array elements, data array elements, etc. assume a ZERO (0)
	offset!  Many of the commercial libraries available use a base of 1.
	That seems fine for appeasing Pascal and BASIC programmers, but when I
	was modifying my libraries I noticed a lot of code compensating for an
	offset of 1.  I was adding one to the port or subtracting 1 here and
	there.  It soon seemed rather pointless.  Therefore, I screamed
	"NO MORE!" and decided to use offsets of zero!

	Look at the source code for each function for an exact description of
	what each one does.  I wrote the program DIOTST01.C to demonstrate the
	use of the functions.  Last tiem I chekced, it worked great on a
	Metrabyte PIO-12 Digital I/O Board.  The functions also correctly
	controlled the 8255 digital I/O port on a Computer Boards, Inc. CIO-AD16
	data acquisition board.


FUNCTION SYSNOPSES:
-------------------

/*- DIO : Initialize Data Space --------------**    DIOFNC01.C
 *  Initialize the data to safe values.
 *  DOES NOT do any hardware data modification.  That is,
 *  no input or output to the boards occurs.
 *  Passed:
 *      pointer :   DIODAT
 *      short   :   base address
 *  Returns:
 *      nothing
 */
void dio_init (DIODAT *data, short address)


/*- DIO : Configure --------------------------**    DIOFNC02.C
 *  Configure the 8255 for all ports in Mode 0.
 *  Pass an integer representing the IN or OUT state for each port.
 *  TRUE (!0) will mean input, and FALSE (0) will mean output.
 *  Passed:
 *      pointer :   DIODAT
 *      short   :   direction Port A
 *      short   :   direction Port B
 *      integer :   direction Port C Low
 *      integer :   direction Port C High
 *  Returns:
 *      nothing
 */
void dio_config (DIODAT *data, int pa_dir, int pb_dir,
							   int cl_dir, int ch_dir)


/*- DIO : Bit Put ----------------------------**    DIOFNC03.C
 *  Set/Clear one of the bits in the 8255.
 *  A state of 1 sets the bit and a state of 0 clears the bit.
 *  The bit number should be from 0 - 23 as follows:
 *   0 = Port A Bit 0;   7 = Port A Bit 7
 *   8 = Port B Bit 0;  15 = Port B Bit 7
 *  16 = Port C Bit 0;  23 = Port C Bit 7
 *  Passed:
 *      pointer :   DIODAT
 *      integer :   bit number
 *      integer :   state : TRUE (!0) = SET, FALSE (0) = CLEAR
 *  Returns:
 *      nothing
 *      Loads stat with appropriate error code
 */
void dio_bitput (DIODAT *data, int bit, int state)


/*- DIO : Bit Get ----------------------------**    DIOFNC04.C
 *  Read one of the bits in the 8255.
 *  A state of 1 indicates a set bit and a state of 0
 *  indicates a clear bit.
 *  The bit number should be from 0 - 23 as follows:
 *   0 = Port A Bit 0;   7 = Port A Bit 7
 *   8 = Port B Bit 0;  15 = Port B Bit 7
 *  16 = Port C Bit 0;  23 = Port C Bit 7
 *  Passed:
 *      pointer :   DIODAT
 *      integer :   bit number
 *      pointer :   integer :   state : 1 = SET, 0 = CLEAR
 *  Returns:
 *      nothing
 *      Loads stat with approrpiate error code.
 *      Loads state with 0 or 1.
 */
void dio_bitget (DIODAT *data, int bit, int *state)


/*- DIO : Byte Put ---------------------------**    DIOFNC05.C
 *  Write one of the bytes in the 8255.
 *  The port number should be 0 - 2 as follows:
 *  Use the defines (DIOLIB.H):
 *  DIO_PORTA = 0 = Port A
 *  DIO_PORTB = 1 = Port B
 *  DIO_PORTC = 2 = Port C
 *  Passed:
 *      pointer         :   DIODAT
 *      integer         :   port number
 *      unsigned char   :   port data
 *  Returns:
 *      nothing
 *      Loads stat with any error ID.
 */
void dio_put_byte (DIODAT *data, int p_num, unsigned char p_dat)


/*- DIO : Byte Get ---------------------------**    DIOFNC06.C
 *  Read one of the bytes in the 8255.
 *  The port number should be 0 - 2 as follows:
 *  Use the defines (DIOLIB.H):
 *  DIO_PORTA = 0 = Port A
 *  DIO_PORTB = 1 = Port B
 *  DIO_PORTC = 2 = Port C
 *  Reads the 8255 and returns data in variable as well as
 *  loading port data area.
 *  Passed:
 *      pointer :   DIODAT
 *      integer :   port number
 *      pointer :   unsigned char : returned port data
 *  Returns:
 *      nothing
 *      Loads stat with appropriate error code.
 *      Loads p_dat with returned data.
 */
void dio_get_byte (DIODAT *data, int p_num, unsigned char *p_dat)


/*- DIO : Dump Bytes -------------------------**    DIOFNC07.C
 *  Write all of the bytes from the data area to the 8255.
 *  Passed:
 *      pointer :   DIODAT
 *  Returns:
 *      nothing
 */
void dio_dump_bytes (DIODAT *data)


/*- DIO : Load Bytes -------------------------**    DIOFNC08.C
 *  Read all of the bytes of the 8255 into the data area.
 *  Passed:
 *      pointer :   DIODAT
 *  Returns:
 *      nothing
 */
void dio_load_bytes (DIODAT *data)


/*- DIO : Byte Put ---------------------------**    DIOFNC09.C
 *  Write a byte to one of the 80X86 ports.
 *  Duplicates the library function outp()
 */
void dio_bput (int d_port, unsigned char d_byte)


/*- DIO : Byte Get ---------------------------**    DIOFNC10.C
 *  Read a byte from one of the 80X86 ports.
 *  Duplicates the library function inp()
 */
void dio_bget (int d_port, unsigned char *d_byte)

*   ----------------------------------------------------------------------
*   END DIODESC.TXT Text Description File
*   ----------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -