蜂鸣发声器
目前制作的操作系统还不能发声呢,由于调用声卡的过程比较复杂,这里我们就先实现蜂鸣器发声好了。蜂鸣器发出的声音,是那种哔哔哔哔的,听起来有些奇怪。这里设置声音的频率随着时间以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一下——


本文介绍如何在自制操作系统中增加命令行窗口,实现蜂鸣器发声,显示多种颜色,并允许同时运行多个应用程序。通过修改相关变量,使得命令行窗口可以灵活管理和关闭,同时展示了实现这些功能的代码片段。


被折叠的 条评论
为什么被折叠?



