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

来源:互联网 发布:网络电视看不了了 编辑:程序博客网 时间:2024/05/24 03:50
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.hint 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- ---- ---- ---- modemXX-- ---- ---- ---- 并行打印机数参数说明:所属文件: bios.h;#include bios.h#include stdio.hint 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.hint 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.hint 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.hint 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;}
原创粉丝点击