帮我看看这段代码是什么意思?是否有问题。

legumer 2004-11-22 01:31:09
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <MATH.h>

static int baseaddress=0X220; //I/O 地址
static float PI=3.1415926;

int oneorthree; //0--单相;1--三相
int inorout; //0--键盘控制;1--开关控制
int set_v; //电压值
int set_i; //电流值
int iopoint;
char outbyte,inbyte;
int buffer1[120][6];
struct date startdate,currentdate;
struct time starttime,currenttime;
void interrupt (*oldvect)(...);
void interrupt dataio(...);
void i_enable(void);
void i_disable(void);
void data_process(void);
void show1(); //display


int main(void)
{
char kb1;
int temp;

clrscr();
getdate(&startdate);
gettime(&starttime);
oneorthree=0;
inorout=0;
set_v=57;
set_i=5;
iopoint=0;
show1();
data_process();
i_enable();
do
{
if (kbhit())
{
kb1=getch();
switch (kb1) {
case '1': break;
case '2': break;
case '3': break;
case '0': break;
default: break;
}
}
} while (kb1!='9');

i_disable();
return 0;
}

void show1(void)
{
gotoxy(3,3);
cputs("XXXXXXXX系统");
gotoxy(3,4);
cputs("============");
gotoxy(3,6);
if (inorout==0)
cputs("系统状态:开关控制");
else
cputs("系统状态:键盘控制");
gotoxy(3,8);
printf("启动时间: %4d-%02d-%02d %2d:%02d:%02d\n" ,startdate.da_year,startdate.da_mon, startdate.da_day,
starttime.ti_hour, starttime.ti_min, starttime.ti_sec);
gotoxy(3,9);
if (oneorthree==0)
cputs("相数:单相");
else
cputs("相数:三相");
gotoxy(3,10);
printf("电流值:%d (I)",set_i);
gotoxy(3,11);
printf("电压值:%d (V)",set_v);
return;
}

void data_process(void)
{
int i;


for (i=0 ;i<120;i++)
{
if (oneorthree==0)
{
buffer1[i][1]=sin(i*2*PI/120)*32767;
buffer1[i][2]=sin(i*2*PI/120)*32767*set_i/10;
}
else
{
buffer1[i][1]=sin(i*2*PI/120)*32767;
buffer1[i][2]=sin(i*2*PI/120)*32767*set_i/10;
buffer1[i][3]=sin(i*2*PI/120+2*PI/3)*32767;
buffer1[i][4]=sin(i*2*PI/120+2*PI/3)*32767*set_i/10;
buffer1[i][5]=sin(i*2*PI/120+4*PI/3)*32767;
buffer1[i][6]=sin(i*2*PI/120+4*PI/3)*32767*set_i/10;
}

}
return;
}


void i_enable(void)
{
int temp;

oldvect = getvect(0x72);
setvect(0x72,dataio);
temp=inportb(0x21)&0xFB;
outportb(0x21,temp);
temp=inportb(0xA1)&0xF7;
outportb(0xA1,temp);

return;
}


void i_disable(void)
{
int temp;

setvect(0x72,oldvect);
temp=inportb(0x21)|~0xFB;
outportb(0x21,temp);
temp=inportb(0xA1)|~0xF7;
outportb(0xA1,temp);

return;
}


void interrupt dataio(...)
{
outport(baseaddress,buffer1[iopoint][1]);
outport(baseaddress+2,buffer1[iopoint][2]);
outport(baseaddress+4,buffer1[iopoint][3]);
outport(baseaddress+6,buffer1[iopoint][4]);
outport(baseaddress+8,buffer1[iopoint][5]);
outport(baseaddress+10,buffer1[iopoint][6]);
outportb(baseaddress+12,outbyte);
inbyte=inportb(baseaddress+13);
iopoint++;
if (iopoint==120) iopoint=0;
outportb(0xA0,0x20);
outportb(0x20,0x20);
return;
}

...全文
103 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
realee 2004-11-22
  • 打赏
  • 举报
回复
没什么问题,

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧