📄 askad.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 + -