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

📄 i8255f06.c

📁 8255可编程通用并行接口电路的8086开发包,c语言编写
💻 C
字号:
/*-
 *  ----------------------------------------------------------------------
 *  File        :   I8255F06.C
 *  Creator     :   Blake Miller
 *  Version     :   0.00            June 1990
 *  Language    :   Microsoft C     Version 5.1
 *  Purpose     :   Intel 8255 Compatible Digital IO Functions
 *              :   8255 Get Byte Function
 *  ----------------------------------------------------------------------
 */

#define  I8255F06_C_DEFINED  1
#include "I8255FN.H"
#undef   I8255F06_C_DEFINED

void I8255_get_byte (I8255DAT *data, int p_num, unsigned char *p_dat);

/*- I8255 : Byte Get -------------------------**
 *  Read one of the bytes in the 8255.
 *  The port number should be 1 - 3 as follows:
 *  1 = Port A,  2 = Port B,  3 = Port C
 *  Reads the 8255 and returns data in variable as well as
 *  loading port data area.
 *  Passed:
 *      pointer :   I8255DAT
 *      integer :   port number
 *      pointer :   unsigned char : returned port data
 *  Returns:
 *      nothing
 *      Loads stat with appropriate error code.
 *      Loads p_dat with returned data.
 */
void I8255_get_byte (I8255DAT *data, int p_num, unsigned char *p_dat)
	{
	int             padd;   /* port address */
	unsigned char   ival;   /* input value  */

	/*  Make sure the port requested is valid.
	 *  Three ports.
	 */
	if ( (p_num < 1) || (p_num > 3) ){
		data->stat = I8255_ST_BP;
		return;
		}

	/*  Decrement the port so we have zero offset.
	 *  port number = ( 0 - 2 )
	 */
	p_num--;

	/*  Prepare to input data:
	 *  Obtain port address.
	 */
	switch ( p_num ){
		case 0:         /* port A   */
			padd = I8255_PORTA(data->base);
			break;
		case 1:         /* port B   */
			padd = I8255_PORTB(data->base);
			break;
		case 2:         /* port C   */
			padd = I8255_PORTC(data->base);
			break;
		}

	chp_portrd ( padd, &ival );     /* input data   */

	/*  Save the input data.
	 */
	switch ( p_num ){
		case 0:         /* port A   */
			data->adat = ival;
			break;
		case 1:         /* port B   */
			data->bdat = ival;
			break;
		case 2:         /* port C   */
			data->cdat = ival;
			break;
		}

	*p_dat = ival;
	data->stat = I8255_ST_OK;
	}

/*-
 *  ----------------------------------------------------------------------
 *  END I8255F06.C Source File
 *  ----------------------------------------------------------------------
 */

⌨️ 快捷键说明

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