#include <dos.h>
#define INIT_T2 0xb6
#define PORT_T2 0x42
#define CTRL_T 0x43
#define PORT_PB 0x61
void sing(int frq,int ms)
{
unsigned char value;
union
{
unsigned int divisor;
unsigned char d[2];
}tone;
if(frq!=0) tone.divisor=1193180/frq;
outportb(CTRL_T, INIT_T2);
outportb(PORT_T2, tone.d[0]);
outportb(PORT_T2, tone.d[1]);
value=inportb(PORT_PB);
outportb(PORT_PB, (value|0x03));
delay(ms);
outportb(PORT_PB, (value&0xfc));
}
要求用到上面的代码
main方法调用一下看看
#include <dos.h>
#define INIT_T2 0xb6
#define PORT_T2 0x42
#define CTRL_T 0x43
#define PORT_PB 0x61
void sing(int frq,int ms)
{
unsigned char value;
union
{
unsigned int divisor;
unsigned char d[2];
}tone;
if(frq!=0) tone.divisor=1193180/frq;
outportb(CTRL_T, INIT_T2);
outportb(PORT_T2, tone.d[0]);
outportb(PORT_T2, tone.d[1]);
value=inportb(PORT_PB);
outportb(PORT_PB, (value|0x03));
delay(ms);
outportb(PORT_PB, (value&0xfc));
}
int main() {
clrscr();
sing(262, 1000);
sing(294, 1000);
sing(330, 1000);
sing(349, 1000);
sing(392, 1000);
sing(440, 1000);
sing(494, 1000);
sing(523, 1000);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!跳过循环执行过程
由于问题描述不够明确,无法准确回答该问题。需要更具体的需求和情境以及提供更多的信息和代码才能给出具体的解决方案。