shellray
驱动牛犊
驱动牛犊
  • 注册日期2004-09-02
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:850回复:2

这段程序有什么问题--请教

楼主#
更多 发布于:2004-09-04 21:07
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<bios.h>
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
void interrupt ( *oldirq)(__CPPARGS);
void interrupt newirq(__CPPARGS);
int flag=0;
int ad_result;/*定义A/D转换结果*/
void main()
{int a;
a=inportb(0x21);
a=a&0x7f;
outportb(0x21,a);/*开irq7中断*/
clrscr();/*清屏*/
 oldirq = getvect(0X0F);/*取得中断入口地址*/
 setvect(0X0F,newirq);
outportb(0x283,0x10);/*初始化A/D0809*/
outportb(0x280,0x64);/*计数器直为100*/
}
void interrupt newirq(__CPPARGS)/*中断程序*/
{ int i;int b;FILE *fp;
 disable();//关中断
 outportb(0x298,ad_result);//启动A/D
    while(i<=10)
    i=i++;
 ad_result=inportb(0x298);//读A/D转换结果
 printf("%d",ad_result);//打印结果
 while(bioskey(1)==0)//键盘有输入就跳出
 {
  if ((fp=fopen("c:\\leiming","wb"))==NULL)//这个不用讲了吧
   {printf("cant create file");
   exit(1);//不能创建就跳出
   }
   fwrite(&ad_result,1,1,fp);//把A/D结果写入文件
   outportb (0x290,b);//启动D/A
 oldirq();
 outportb(0x20,0x20);//置8259 ISR 相应位为1
 }
 }
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-09-06 13:35
你的main都run完了,到哪去找你的newirq?
shellray
驱动牛犊
驱动牛犊
  • 注册日期2004-09-02
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-13 11:24
那把newirq函数放在main()前面可以吗?
游客

返回顶部