您的位置:首页 > 编程语言 > C语言/C++

dos环境下能够使用的C语言库函数—bios.h

2009-08-13 16:13 531 查看
bios.h

@函数名称: bioscom
函数原型: int bioscom(int cmd,char byte,int port)
函数功能: RS232串口通信口操作
函数返回: 16位的串口状态信息,各位的含义分别如下:
当cmd=2时,低8位用于保存接收的数据
高8位低8位(cmd=0,1,3时)

B15-超时错误
B7-检测到线路信号 B14-发送移位寄存器空
B6-振铃指示 B13-发送保持寄存器空
B5-数据装置就绪 B12-中止检测错误
B4-数据发送结束 B11-帧错误
B3-线路信号变化 B10-奇偶错误
B2-脉冲后沿振铃检测 B9-溢出错误
B1-数据装置就绪变化 B8-数据准备就绪
B0-数据发送结束变化
参数说明: cmd-控制字:0-初始化串口,1-发送一个字符,2-接受一个字符,3-返回串口状态
byte-波特率和发送位数设置:
B7,B6,B5-波特率设置:
9600波特-111,4800波特-110,2400波特-101 ,1200波特-100,600波特-011,300波特-010
B4,B3-奇偶校验设置:
00或10-无奇偶,01-奇校验,11-偶校验
B2-停止位个数:1-2个停止位,0-1个停止位
B1,B0 10-7个数据位,11-8个数据位

port 串口号:0,1,2,3等
所属文件: bios.h

#include bios.h
#include conio.h
#define COM1 0
#define DATA_READY 0x100
#define TRUE 1
#define FALSE 0
#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)
int main()
{
int in,out,status,DONE=FALSE;
bioscom(0,SETTINGS,COM1);
cprintf("... BIOSCOM [ESC] to exit ...");
while (!DONE)
{
status=bioscom(3,0,COM1);
if (status&DATA_READY)
if ((out=bioscom(2,0,COM1)&0x7F)!=0)
putch(out);
if (kbhit())
{
if ((in=getch())==' ')
DONE=TRUE;
bioscom(1,in,COM1);
}
}
return 0;
}

@函数名称: biosdisk
函数原型: int biosdisk(int cmd,int driver,int head,int track,int sector,int nsets,void *buf)
函数功能: RS232串口通信口操作
函数返回: AH
参数说明: 使用INT13完成BIOS级的磁盘操作
所属文件: bios.h

#include bios.h

#include stdio.h

int main()
{
int result;
char buffer[512];
printf("Testing to see if drive a: is ready");
result=biosdisk(4,0,0,0,0,1,buffer);
result&=0x02;
(result) ? (printf("Drive A: Ready")) : (printf("Drive A: Not Ready"));
return 0;
}

@函数名称: biosequip
函数原型: int biosequip(void)
函数功能: 返回一个表示计算机设备配置的编码
函数返回: 一个字节:
FEDC BA98 7654 3210
---- ---- ---- ---1 磁盘已安装
---- ---- ---- --1- 浮点协处理器已安装
---- ---- ---- XX-- RAM:00=16k,01=32k,10=48k,11=64k
---- ---- --XX ---- 初始显示模式:01=40彩,10=80彩,11=单色
---- ---- XX-- ---- 磁盘数
---- ---1 ---- ---- 无DMA
---- XXX- ---- ---- 已安装的串口数
---1 ---- ---- ---- 游戏卡已安装
--1- ---- ---- ---- modem
XX-- ---- ---- ---- 并行打印机数
参数说明:
所属文件: bios.h;

#include bios.h

#include stdio.h
int main()
{
int equip_check;
equip_check=biosequip();
if(equip_check & 0X0002)
printf("There is a math coprocessor installed./n");
else
printf("No math coprocessor installed./n");
return 0;
}

@函数名称: bioskey
函数原型: int bioskey(int cmd)
函数功能: 读取键盘值
函数返回: 当cmd=0时,按键的ascii值放在低位,扫描码放在高位
参数说明: cmd=0:返回一个键盘值,如无键盘按下,一直等
cmd=1:查询键盘是否按下:
0-无键按下,非0-有键按下
cmd=2:返回控制键状态,返回值保存在低8位中
0-右边的shift键按下 5-已打开Scroll_Lock
1-左边的shift键按下 6-已打开Num_Lock
3-Ctrl键按下 7-已打开Caps_Lock
4-Alt键按下 8-已打开Insert
所属文件: bios.h

#include stdio.h

#include bios.h
#include ctype.h

int main()
{
int key, shift;
int lastshift;
while (1)
{
shift=bioskey(2);
if(shift!=lastshift)
printf("Shift=0x% 02x/n",shift);
if(bioskey(1))
{
key=bioskey(0);
if((key&0xFF)=='q')
break;
printf("Key=0x% 04x",key);
}
lastshift=shift;
}
return 0;
}

@函数名称: biosmemory
函数原型: int biosmemory(void)
函数功能: 返回系统配置的内存大小(单位:KB)
函数返回: 内存大小值(KB)
参数说明:
所属文件: bios.h

#include stdio.h

#include bios.h
int main()
{
int memory_size;
memory_size=biosmemory();
printf("RAM size=%dK",memory_size);
return 0;
}

@函数名称: biostime
函数原型: long biostime(int cmd , long newtime)
函数功能: 设置和读取BIOS时钟
函数返回: cmd=0时,返回时钟值.该时钟为一个每秒18.2次的计数累计值,并在每日24时清零
参数说明: cmd=0:读取时钟,cmd=1:设置时钟
newtime-当cmd=1时,为新的设置数值
所属文件: bios.h

#include stdio.h
#include bios.h
#include time.h
#include conio.h
int main()
{
long bios_time;
clrscr();
cprintf("The number of clock ticks since midnight is:");
cprintf("The number of seconds since midnight is:");
cprintf("The number of minutes since midnight is:");
cprintf("The number of hours since midnight is:");
cprintf("ress any key to quit:");
while(!kbhit())
{
bios_time=biostime(0,0L);
gotoxy(50,1);
cprintf("%lu",bios_time);
gotoxy(50,2);
cprintf("%.4f",bios_time/CLK_TCK);
gotoxy(50,3);
cprintf("%.4f",bios_time/CLK_TCK/60);
gotoxy(50,4);
cprintf("%.4f",bios_time/CLK_TCK/3600);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: