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

📄 ad中断采样.c

📁 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 + -