EGL--延时函数实现文件 DELAY.INC
来源:互联网 发布:广电网络集团 编辑:程序博客网 时间:2024/05/01 13:57
/*
DELAY.INC
*/
void InitTimer() /* 初始化整个延时系统,结束必须要调用EndTimer */
{
int i;
if( IsInit ) return;
disable();
old_int8=getvect(0x8);
setvect(0x8,new_int8); /* 安装时钟中断,以保证精确的延时 */
enable();
for( i=0;i<MAXTIMERS;TICKS[i].id=-1,TICKS[i].timeout=0,TICKS[i].ticks=0,i++ );
IsInit=1;
}
int CreateTimer(UINT dida,UINT id) /* 创建一个要求延时请求的例子 */
{ /* did滴达数;id这个例子的ID,ID 必须为一个整数,用来识别不同的例子 */
int i;
for( i=0;i<MAXTIMERS;i++ )
if( TICKS[i].id==-1 && IsInit ){
TICKS[i].id=id; TICKS[i].delayticks=dida; TICKS[i].timeout=0; return(OK);}
return(ERROR); /* 未创建成功,原因为例子已满 */
}
int CheckTimeOut(UINT id) /* 在主程序中调用,用来判断id的例子延时到来否 */
{
int i;
for( i=0;i<MAXTIMERS;i++)
if( TICKS[i].id==id )
if( TICKS[i].timeout ){ TICKS[i].timeout=0; return(OK); }
return(ERROR);
}
void Delay(UINT dida) /* 一段用来代替delay函数的代码,延时以dida为单位 */
{
TICKS[MAXTIMERS-1].id=1;
TICKS[MAXTIMERS-1].delayticks=dida;
TICKS[MAXTIMERS-1].ticks=0;
TICKS[MAXTIMERS-1].timeout=0;
while( !TICKS[MAXTIMERS-1].timeout );
TICKS[MAXTIMERS-1].id=-1;
TICKS[MAXTIMERS-1].timeout=0;
}
void ReleaseTimer(UINT id) /* 当要求的例子不用时,应释放,以节省资源 */
{
int i;
for( i=0;i<MAXTIMERS;i++ )
if( TICKS[i].id==id ){ TICKS[i].id=-1; break; }
}
void EndTimer() /* 当完成延时后应调用,否则在程序退出后,系统死机 */
{
if( !IsInit ) return;
disable();
setvect(0x8,old_int8);
enable();
IsInit=0;
}
void interrupt new_int8() /* 时钟中断,中断级别0 */
{ int i;
(*old_int8)();
for(i=0;i<MAXTIMERS;i++){
if( TICKS[i].id>=0 ) TICKS[i].ticks++;
if( TICKS[i].ticks>=TICKS[i].delayticks ){
TICKS[i].timeout=1;
TICKS[i].ticks=0;
}
}
}
- EGL--延时函数实现文件 DELAY.INC
- EGL--延时函数头文件 DELAY.H
- EGL--键盘类函数实现文件 KEY.INC
- EGL--鼠标类函数实现文件 MOUSE.INC
- EGL--XMS类函数实现文件 XMS.INC
- EGL--标准基础类实现文件 STDEG.INC
- Delay 延时函数
- 利用KERNEL32 API函数实现的通用延时函数DELAY
- asp脚本延时 自定义的delay函数
- 延时函数sleep和delay的区别
- C51延时函数delay的编写
- 延时函数delay与sleep有什么区别呢?
- 项目总结(一)——延时函数Delay
- vb.net 不会无响应的延时函数delay
- void Delay(__IO u32 nCount)最简单的延时函数
- linux调用延时delay头文件编译不过
- 第二节:delay()延时实现LED灯的闪烁。
- 用中断的方式实现delay延时的一点注释
- EXCHANGE管理一点通
- EGL--鼠标相关类函数补充 EVENT.OBJ
- The Perl Tutorial: What's Perl? (1)
- J2ee学习流程
- EGL--延时函数头文件 DELAY.H
- EGL--延时函数实现文件 DELAY.INC
- 今天辞职了,明天失业了
- 创建ASP.NET WEB自定义控件——例程3
- DOS下的屏幕保护
- 在DOS屏幕上直接查找字符串,找到的被颜色标记出
- 走进SEO - SEO的概念
- 感觉是有点开始怀旧了
- 编程经验点滴(三)——《C、C++中指针加 1 的问题》
- 使用 Rational XDE Data Modeler 建模和设计数据库(转自IBM)