149.屏幕检测程序

举报
C语言与CPP编程 发表于 2022/05/10 23:35:00 2022/05/10
【摘要】 #include <stdio.h> #include <dos.h> #include <graphics.h> #include <conio.h> #include <stdlib.h> #define INTR 0x1c void interrupt ( *oldha...
#include <stdio.h>
#include <dos.h>
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
#define INTR 0x1c

void interrupt ( *oldhandler) ();
int fre[]={523,659,587,659,587,494,587,523,440,440,440,330,392,440,494,494,330,415,494,523,523,523};

void interrupt handler(){
	unsigned i;
	static int flag;
	static int k=0;
	union{
		long divisor;
		unsigned char c[2];
	}music;
	unsigned char port;
	flag++;
	if (flag>=4){
		flag=0;
		music.divisor=1190000/fre[k];
		outportb(67,182);
		outportb(66,music.c[0]);
		outportb(66,music.c[1]);
		port=inportb(97);
		outport(97,port|3);
		k++;
		if(k>=22) k=1;
	}
	oldhandler();
}

int main(void)
{
	int gdriver=9,gmode=2,errorcode;
	int midx,midy,i;
	oldhandler=getvect(INTR);
	setvect(INTR,handler);
	/*registerbgidriver( EGAVGA_driver );*/
	initgraph(&gdriver,&gmode,"c:\\tc");
	errorcode=graphresult();
	if(errorcode!=grOk)
	{
		printf("graphic error:%s\n",grapherrormsg(errorcode));
		printf("press any key to halt");
		getch();
		exit(1);
	}
	midx=getmaxx()/2;
	midy=getmaxy()/2;
	for(i=SOLID_FILL;i<USER_FILL;i++)
	{
		setfillstyle(i,getmaxcolor());
		bar(midx-50,midy-50,midx+50,midy+50);
		delay(2000);
		getch();
	}
	getch();
	closegraph();
	setvect(INTR,oldhandler);
	nosound();
	return(0);
}

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124666036

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。