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

📄 8255bk.txt

📁 并口的一个简单程序
💻 TXT
字号:
#include <stdio.h>
#include <dos.h>
#include<conio.h>
#include<stdlib.h>
#include "lpt.c"
#define PA 0x00
#define PB 0x01
#define PC 0x02
#define Ctrl 0x03
main()
{
int seg7[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x96};
int buf[4]={0xff,0xff,0xff,0xff};
int scan[4]={0x0e,0x0d,0x0b,0x07};
int scanpc[4]={0x7f,0xbf,0xdf,0xef};
int i,j,k,m;
int value,tmp;
int sum;
int count=5;
WR_Port(Ctrl,0x81);
WR_Port(PB,0x0f);
printf("push keypad\n");
start:
do
{
count--;
if(count==0)
{
k=0;
for(m=0;m<4;m++)
{
WR_Port(PC,scanpc[m]);
tmp=RD_Port(PC);
value=(tmp|0xf0);
if(m==0)
{
if(value==0xfe) { sum=1; }
if(value==0xfd) { sum=2; }
if(value==0xfb) { sum=3; }
if(value==0xf7) { sum=10; }
}
if(m==1)
{
if(value==0xfe) { sum=4; }
if(value==0xfd) { sum=5; }
if(value==0xfb) { sum=6; }
if(value==0xf7) { sum=11; }
}
if(m==2)
{
if(value==0xfe) { sum=7; }
if(value==0xfd) { sum=8; }
if(value==0xfb) { sum=9; }
if(value==0xf7) { sum=12; }
}
if(m==3)
{
if(value==0xfe) { sum=14; }
if(value==0xfd) { sum=0; }
if(value==0xfb) { sum=15; }
if(value==0xf7) { sum=13; }
}
}
}
while(k==0)
{
k=-1;
count=5;
for(i=0;i<3;i++)
{
buf[i]=buf[i+1];
}
buf[3]=seg7[sum];
break;
}
goto end;
}while(1);
end:
for(j=3;j>=0;j--)
{
WR_Port(PA,buf[j]);
WR_Port(PB,scan[j]);
delay(4);
WR_Port(PB,0x0f);
}
goto start;
}
副程式如下:

#define LPT_Data 0x378
#define LPT_Ctrl 0x37a

WR_Port(int Port,int Data)
{
Port=(~Port) & (0x03);
outportb(LPT_Ctrl,0x04+Port);
outportb(LPT_Data,Data);
outportb(LPT_Ctrl,0x0c+Port);
delay(1);
outportb(LPT_Ctrl,0x04+Port);
}

RD_Port(int Port)
{
int Data;
Port=(~Port) & (0x03);
outportb(LPT_Data,0xff);
outportb(LPT_Ctrl,0x24+Port);
outportb(LPT_Ctrl,0x20+Port);
outportb(LPT_Data,0xff);
delay(1);
Data=inportb(LPT_Data);
outportb(LPT_Ctrl,0x24+Port);
return(Data);
}

⌨️ 快捷键说明

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