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

📄 port.c

📁 dos系统并口用作io功能的小程序
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define BaseAddress 0x378

int x,y;
unsigned char Data,State,Ctrol;
char SelectString[]="\n"
		    "Please select a way:\n"
		    "    0. I/O digital input;\n"
		    "    1. I/O digital output;\n"
		    "\n"
		    "    9. exit.\n"
		    "Select:";
void main(void)
         {
           while(1)
           {
            printf(SelectString);
	    scanf("%d", &Select);
            switch(Select)
		{
		case 9:
			{
			clrscr();
			exit(0);
			}
                case 0:
                        {
                          
                         printf("\n\n\n\n");
			x = wherex(); y = wherey() - 3;
			ConfigureIOPorts(0);
			while(kbhit() == 0)
				{
				/*Data =  inportb(0x378);*/
                                Data = ReadDigitalIO(0);
				State = ReadDigitalIO(1);
				gotoxy(x, y);
				printf("DATA IN %2x, \nSTATE IN %2x", Data, State);
				delay(100);
				}
			getch();
			break;
                        }
                case 1:
                        {
                         ConfigureIOPorts(1);
			printf("Enter output value(0 output 0,1 output 1):");
			scanf("%d", &i);
			if(i == 1)
				Data = Ctrol =  0xff;
			else
				Data = Ctrol =  0x00;
                        /*outportb(0x378,Data);*/
			WriteDigitalIO(0,Data);
			WriteDigitalIO(2,Ctrol);

			printf("DATA OUT %2x, \nCTROL OUT %2x", Data, Ctrol);
			getch();
			break;
                        }
                }     
           }
 void ConfigureIOPorts(unsigned char Port)
	{
	unsigned char ControlByte;

	ControlByte = Port;
        if(ControlByte==0)
          mnl0;
         else
          mnl1; 
	
	}
unsigned char ReadDigitalIO(unsigned char InputPort)
	{
        unsigned char Valiable;
         
        if(InputPort==0)
	return(inportb(BaseAddress + InputPort));
        else
            if(InputPort==1)
              {   
               Valiable=inportb(BaseAddress + InputPort);
               return((Valiable^0x80)&0xf8);
              }  
	}
void WriteDigitalIO(unsigned char OutputPort,unsigned char Value)
	{
        if(OutputPort==0)  
	 outportb((BaseAddress + OutputPort),Value);
        else
          if(OutputPort==2)
            {
             unsigned char Valiable;
             Valiable=(Value^0x0b)&0x1f;
               
            }
	} 
 
         }

⌨️ 快捷键说明

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