#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<DOS.h>
#include<math.h>
#include<conio.h>
#include<stdarg.h>
#include <graphics.h>
#define ESC 0x1b /*define the escape key*/
void interrupt NewHandler1(...);
void interrupt(* oldHandler)(...);
int IrqVect(int _nIrq);
void CommIrqEnable(int _nIrq);
int key2=0;
main()
{
int i1=0;
char tem1=0;
getch();
disable();
outportb(0x22b,0x80);
outportb(0x228,0x06);
outportb(0x229,0x00);
outportb(0x22b,0x03);
outportb(0x22a,0xcb);
outportb(0x229,0x01);
outportb(0x22c,0x08);
oldHandler=getvect(IrqVect(12));
setvect(IrqVect(12),NewHandler1);
CommIrqEnable(12);
outportb(0x22a,0xcb);
enable() ;
printf("lsr:%x",inportb(0x22d));
printf("lcr:%x",inportb(0x22b));
printf("isr:%x",inportb(0x22a));
printf("ier:%x",inportb(0x229));
printf("mcr:%x",inportb(0x22c));
for (int i2=0;i2<14;i2++)
{
printf("%x",inportb(0x228));
}
getch();
while(!kbhit())
{
printf("ISR:%x",inportb(0x22a));
printf("LSR:%x",inportb(0x22d));
if (key2==1)
{
printf("i do\n");
for(i1=0;i1<14;i1++)
{
printf("1 ");
tem1=inportb(0x228);
printf("2 ");
printf("%d %x",i1,tem1);
printf(" 3\n");
}
outportb(0x22a,0xcb);
printf("ok?");
key2=0;
}
}
getch();
printf("LSR:%x",inportb(0x22d));
setvect(IrqVect(12),oldHandler);
getch();
return 0;
}
int IrqVect(int _nIrq)
{
int vect;
if(_nIrq<8) vect=_nIrq+0x08;
else vect=_nIrq+0x70-8;
return vect;
}
void CommIrqEnable(int _nIrq)// surpose all interrupt enable
{
int nSetInt;
int nPort;
nPort=0xA1;
if(_nIrq<8)nPort=0x21;
if( _nIrq<8 )
{
nSetInt=1<<_nIrq;
}
else
{
nSetInt=1<<(_nIrq-8);outportb(0x21,inportb(0x21)&0xfb);
}
nSetInt=~nSetInt;
if(_nIrq<8)
outportb(nPort,inportb(nPort)&nSetInt);
else
{
outportb(nPort,inportb(nPort)&nSetInt);
}
}
void interrupt NewHandler1(...)
{
key2=1;
outportb(0x20,0x20);
outportb(0xa0,0x20);
}
testcmd1.rar_16c25_16c2550_pc104_site:www.pudn.com
版权申诉
119 浏览量
2022-09-20
13:53:16
上传
评论
收藏 1KB RAR 举报
小波思基
- 粉丝: 74
- 资源: 1万+