| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:急!程序出错
只看楼主 加入收藏
darice1234
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2007-7-30
收藏
 问题点数:0 回复次数:3 
急!程序出错
每8mS中断一次,每中断一次从A/D 0通道采集一个数据,转换成补码形式后放入整形数组。256次之后恢复系统原有功能,并显示数组中的内容,还可以显示对应的电压值。

始终说遇到无效指令,顺便看看有没有逻辑错误,谢谢了!
#include <dos.h>
#include <stdio.h>

FILE *p;
int a=256;

void    interrupt  myint8(void);

void    main(void)
{
    int i;
    void interrupt(*oldint)();

    p=fopen("rice1.dat","w");

    oldint=getvect(0x08);/* 保存旧的中断向量 */

    disable();

    outportb(0x43,0x36);/* 计数器初始化 */
    outportb(0x40,0x4a);/* 设置中断间隔 */
    outportb(0x40,0x25);
    setvect(0x08,myint8);
    enable();
    while(a>0);
    setvect(0x08,oldint);

    fclose(p);
}

void    interrupt myint8(void)
{
    int    dbyte ;
    float  ua;

    a--;

    outportb(0x280,0x00);
    do
        ;
    while(!(inportb(0x285)&0x80));/* 采集数据 */
    dbyte=inportb(0x281)|((inportb(0x282)&0x0f)<<8);

    outportb(0x283,(dbyte&0x00ff));
    outportb(0x284,((dbyte>>8)&0x0f));

    outportb(0x20,0x20);

    ua=(dbyte-2047.0)/2048*5;
    printf("%d  %.3f\n",dbyte,ua);

    fprintf(p,"dbyte=%d  ua=%.3f\r\n",dbyte,ua);
}
搜索更多相关主题的帖子: include 通道 
2008-04-10 19:12
darice1234
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2007-7-30
收藏
得分:0 
那位大虾帮忙看看阿

2008-04-10 20:59
darice1234
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2007-7-30
收藏
得分:0 
咋没人回啊真的很急啊

2008-04-10 21:06
darice1234
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2007-7-30
收藏
得分:0 
问题已解决,myint8函数中中断结束指令应该放在最后
但又有新问题
是关于字符输入函数的
#include <dos.h>
#include <stdio.h>

FILE *p;
int a=256;

void interrupt  myint81(void);
void interrupt  myint82(void);
void interrupt  myint83(void);

void    main(void)
{
    int i;
    char ch;
    void interrupt(*oldint)();

Ag: printf("Choose your programm\n");
    ch=getchar();



    oldint=getvect(0x08);/* 保存旧的中断向量 */

    disable();

    outportb(0x43,0x36);/* 计数器初始化 */
    outportb(0x40,0xef);/* 设置中断间隔 */
    outportb(0x40,0x37);
    switch(ch)
    {
       case '1':p=fopen("rice1.dat","w");
                    setvect(0x08,myint81);
                    break;
       case '2':  p=fopen("rice2.dat","w");
                setvect(0x08,myint82);
                break;
       case '3':  p=fopen("rice3.dat","w");
                setvect(0x08,myint83);
                break;
       default: exit(0);
    }
    enable();
    while(a>0);
    setvect(0x08,oldint);
    fclose(p);

    printf("Continue?\n");
    /* scanf("%c\n",&ch); */
    ch=getch();/这个地方不管是用getchar,getche还是scanf都没法实现跳转功能,有的还不提醒输入,直接过去了/
    if(ch=='y'||ch=='Y')
    {
        goto Ag;
     }
     getch();
}

void    interrupt myint81(void)
{
    int    dbyte ;
    float  ua;

    a--;

    outportb(0x280,0x00);
    do
        ;
    while(!(inportb(0x285)&0x80));/* 采集数据 */
    dbyte=inportb(0x281)|((inportb(0x282)&0x0f)<<8);

    outportb(0x283,((dbyte)&0x00ff));
    outportb(0x284,(((dbyte)>>8)&0x0f));



    ua=(dbyte-2047.0)/2048*5;
    printf("%d  %.3f\n",dbyte,ua);

    fprintf(p,"dbyte=%d  ua=%.3f\r\n",dbyte,ua);
    outportb(0x20,0x20);
}

void    interrupt myint82(void)
{
    int    dbyte ;
    float  ua;

    a--;

    outportb(0x280,0x00);
    do
        ;
    while(!(inportb(0x285)&0x80));/* 采集数据 */
    dbyte=inportb(0x281)|((inportb(0x282)&0x0f)<<8);

    if(dbyte<2047)
    dbyte=4095-dbyte;

    outportb(0x283,(dbyte&0x00ff));
    outportb(0x284,((dbyte>>8)&0x0f));



    ua=(dbyte-2047.0)/2048*5;
    printf("%d  %.3f\n",dbyte,ua);

    fprintf(p,"dbyte=%d  ua=%.3f\r\n",dbyte,ua);
    outportb(0x20,0x20);
}

void    interrupt myint83(void)
{
    int    dbyte ;
    float  ua;

    a--;

    outportb(0x280,0x00);
    do
        ;
    while(!(inportb(0x285)&0x80));/* 采集数据 */
    dbyte=inportb(0x281)|((inportb(0x282)&0x0f)<<8);

    if(dbyte>2047)
    dbyte=4095-dbyte;

    outportb(0x283,(dbyte&0x00ff));
    outportb(0x284,((dbyte>>8)&0x0f));



    ua=(dbyte-2047.0)/2048*5;
    printf("%d  %.3f\n",dbyte,ua);

    fprintf(p,"dbyte=%d  ua=%.3f\r\n",dbyte,ua);
    outportb(0x20,0x20);
}

2008-04-11 12:21
快速回复:急!程序出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012236 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved