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

📄 askad.cpp

📁 大学微型计算机接口技术实验源代码,直接就可以运行,包含了C++和asm代码,比较前面.
💻 CPP
字号:
#include<dos.h>            
#include<stdio.h>
#include<conio.h>
int choose_channel();                        /*选择通道函数*/
void main(void)
{
	int ch,pa,i,pc4;
	clrscr();
	printf("Please input the a/d channel NO(0--7):");
	ch=choose_channel();
	printf("During the process, press any key to exit!\n");
	outportb(0x303,0x88);                   /*初始化8255状态字,A口输出*/
	outportb(0x300,0);                      /*A口清0*/
	outportb(0x300,ch);                     /*送通道号至A口*/
	outportb(0x303,0x03);              /*pc1置1进行地址锁存*/
	delay(50);
	
	outportb(0x303,0x98);              /*重写8255方式字,A口输入,C口低四位输出,C口高四位输入*/
	do
	{ 
			outportb(0x303,0x01);				/*使PC0置高发启动信号*/
			outportb(0x303,0x02);
			//delay(50);
			outportb(0x303,0x00);				/*使PC0置低*/
		 do
			 {
				 pc4=inportb(0x302)&0x10;
				 }while(pc4==0);  /*查询PC4的状态,直至为高电位,即,转换完成*/
		 outportb(0x303,0x05);              /*pc2=1,允许读转换结果*/
		 pa=inportb(0x300);  /*读转换结果*/
     if(pa>0x91|| pa<0x30)
      {break;}
		 printf("0x%x ",pa);                /* 显示转换结果*/
		 delay(50);
		 }while(!kbhit());                  /*有任意键按下即退出转换*/
}

int choose_channel()
{
	int c;
	do{
		c=getchar();                       /*输入通道号*/
		c=c-48;                            /*将读入的ASCII码转换成对应的数字*/
		if(c<0||c>7)  printf("\nThe ad channel NO is wrong! \nBe sure it is between 0 and 7!\nPlease input the NO again!:");    /*通道号有误时,显示出错信息,并要求
再次输入正确的通道号*/
		else break;                        /*通道号正确时,跳出循环*/
		}while(1);        
	return(c); /*返回正确的通道号*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -