📄 ad中断采样.c
字号:
#define TRUE 1
#define FALSE 0
#define END_OF_INT 0x20
#define N 80
#include<process.h>
#include<stdio.h>
#include<ctype.h>
#include<dos.h>
int start,ch,flag;
void interrupt int9();
void enairq9();
void disirq9();
void on_intr9();
int ad[641];
int i;
char *ab;
main()
{
char c;
clrscr();
printf(" Please input A/D channel number(0-47)");
ch=choice_channel();
on_intr9();
i=0;
do{
clrscr();
flag=0;
enairq9();
to:
if(flag==0)goto to;
i++;
ad[i]=*ab;
if(i==640){
for(i=1;i<=640;i++)
printf("%d",ad[i]);
i=0;
printf("press q key to quit");
c=getch();
if(c=='q')break;
continue;}
}while(1);
disirq9();
printf("\n\r");
exit(0);
}
int choice_channel()
{
int c;
static char tem[4]={0,0,0,0};
i=0;
do
{
tem[i]=getch();
if(isdigit(tem[i]&&(i<2)))
{i++;
gotoxy(48+i);
printf("%c",tem[i]);
continue;
}
else
if(tem[i]=0x0d)
{c=atoi(tem);
if(c>=0&&(c<=47))
break;
}
i=0;
}while(1);
return c;
}
void on_intr9()
{
disable();
setvect(0x0a,int9);
enable();
}
void interrupt int9(bp,di,si,ds,cx,dx,bx,ax,ip,cs,flags)
{
int j,a,b;
disable();
if(start)
{
start=FALSE;
for(j=0;j<N;j++);
b=intportb(0x305);
ab=0X5F;/*(b&0x0f)*256+a;*/
outportb(0x20,END_OF_INT);
enable();
flag=1;
}
}
void enairq9()
{
int a;
enable();
start=TRUE;
outportb(0x300,ch);
for(a=0;a<N;a++);
outportb(0x301,1);
}
void disirq9()
{
start=FALSE;
/*outportb(0x303,0);*/
int9();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -