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

📄 例7-2.c

📁 王为青 刘变红 编著《C语言高级编程及实例剖析》源代码
💻 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 + -