📄 port.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 + -