蜂鸣发声器
目前制作的操作系统还不能发声呢,由于调用声卡的过程比较复杂,这里我们就先实现蜂鸣器发声好了。蜂鸣器发出的声音,是那种哔哔哔哔的,听起来有些奇怪。这里设置声音的频率随着时间以100Hz的速度降低,当声音频率降到20Hz以下或键盘按下任意键时结束。
beepdown.c
void HariMain(void)
{
int i, timer;
timer = api_alloctimer();
api_inittimer(timer, 128);
for (i = 20000000; i >= 20000; i -= 100000) {
/* 20KHz~20Hz : 人类可以听到的声音范围 */
api_beep(i);
api_settimer(timer, 1);
if (api_getkey(1) != 128) {
break;
}
}
api_beep(0);
api_end();
}
这里没有调用声卡,所以虚拟机里不用设置声卡也可以听到声音。
make run 一下——
将 i 改为递增的,以 i %的速度递增则会听到声音频率升高的声音,发出的声音要比之前感觉起来好多了。
beepup.c
void api_end(void);
int api_getkey(int mode);
int api_alloctimer(void);
void api_inittimer(int timer, int data);
void api_settimer(int timer, int time);
void api_beep(int tone);
void HariMain(void)
{
int i, timer;
timer = api_alloctimer();
api_inittimer(timer, 128);
for (i = 20000; i <= 20000000; i += i / 100) {
api_beep(i);
api_settimer(timer, 1);
if (api_getkey(1) != 128) {
break;
}
}
api_beep(0);
api_end();
}
make run一下——
显示多种颜色
现在来实现可以显示多种颜色的应用程序,将光的三原色RGB(红、绿、蓝)中每个颜色