📄 例7-2.c
字号:
/* Note:Your choice is C IDE */
#define TRUE 1
#define FALSE 0
#define END_OF_INT 0x20
#define N 80
#include <process.h>
#include <stdlib.h>
#include <ctype.h>
#include <dos.h>
int start,ch,flag;
void interrupt int9();
void on_intr9();
void enairq9();
void disirq9();
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();
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() /* 选择A/D输入通道器 */
{
int c;
static char tem[4]={0,0,0,0};
i=0;
do
{
tem[i]=getch();
if(isdigit(tem[i]&&(i<2))) /* 若是数字且少于2位 */
{
i++;
gotoxy(48+i,1);
printf("%c",tem[i-1]); /* 打印出来 */
continue;
}
else
if(tem[i]=0x0d) /* 若是回车 */
{
c=atoi(tem); /* 转换成整数 */
if(c>=0&&(c<=47)) /* 若不是0—47通道号 */
break; /* 重新输入 */
}
i=0;
sound(1000);
delay(200);
nosound();
}while(1);
return c;
}
void on_intr9()
{
disable();
setvect(0x0a,int9);
enable();
}
void interrupt int9(bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flags)
{
int j,a,b;
disable();
if(start)
{
start=FALSE;
for(j=0;i<N;j++); /* 时间延迟 */
a=inportb(0x304); /* 取低8位数 */
for(j=0;j<N;j++);
a=inportb(0x305); /* 取高4位数 */
ab=(b&0x0f)*256+a; /* 得到12位A/D转换后的数 */
outportb(0x20,END_OF_INT); /* 发硬中断结束命令 */
enable();
flag=1; /* 中断标志置1 */
}
}
void enairq9()
{
int a;
enable();
start=TRUE;
outportb(0x303,0); /* 清A/D中断寄存器 */
for(a=0;a<N;a++);
outportb(0x300,ch); /* 送A/D通道号 */
for(a=0;a<N;a++);
outportb(0x301,1); /* 启动A/D转换 */
}
void disirq9()
{
start=FALSE;
outportb(0x303,0x00); /* A/D中断寄存器 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -