怎样在turboc2.0下显示时间??? (flrQ急求)

wplian 2001-02-26 07:31:00
我想编个程序,运行时可不停(即动态且不消失)的显示当前的系统时间,
又不影响其他语句执行的流畅性,请问用什么方法实现呢?
...全文
294 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wplian 2001-03-03
  • 打赏
  • 举报
回复
很抱歉,这几天服务器不好,上不了csdn,一直没联系
感谢圣火的帖子,我这几天查到了资料,确实是因为驻留程序不能
调用DOS核心函数(例如printf),不过ASM我没有学过,以后会自学的,关于这个问题我调试后还会联系大家…………
谢谢,E-mail:wplian@citiz.net
没有好的服务器,只好用这个不要服务器的了,希望与我多联系
holyfire 2001-03-02
  • 打赏
  • 举报
回复
上面两个不知啥鸟的方法其实也可行,如果你想知道,我们可以讨论一下。
holyfire 2001-03-02
  • 打赏
  • 举报
回复
要使用,最好使用ASM。
holyfire 2001-03-02
  • 打赏
  • 举报
回复
现在我只取时间,判断一下,秒变化时才显示。这个程序不是很好,你参考一下就行了。
holyfire 2001-03-02
  • 打赏
  • 举报
回复
只要这段代码和你的代码在一个程序中运行,是不要驻留内存的。
死循环的原因可能是你的中断函数太占资源,比如使用了tc的某些函数(printf?)。
holyfire 2001-03-02
  • 打赏
  • 举报
回复
void main()
{
void interrupt ( * f )();
char c;
f = getvect( 0x1c );
setvect( 0x1c , showtime );
printf( "\n\nPress ESC to Level!" );
while( ( c = getch() ) != 0x1b )
{
((char *)VEIDO)[ 160 ] = c;
}
setvect( 0x1c , f );
}
holyfire 2001-03-02
  • 打赏
  • 举报
回复
if( sec != curtime.ti_sec )
{
time[0] = curtime.ti_hour/10 + '0';
time[2] = curtime.ti_hour%10 + '0';
time[6] = curtime.ti_min/10 + '0';
time[8] = curtime.ti_min%10 + '0';
time[12] = curtime.ti_sec/10 + '0';
time[14] = curtime.ti_sec%10 +'0';
memcpy( VEIDO , time , 16 );
sec = curtime.ti_sec;
}
enable();
}
holyfire 2001-03-02
  • 打赏
  • 举报
回复
void interrupt showtime()
{
int x , y;
struct time curtime;
static sec = 0;
disable();
gettime( &curtime );
holyfire 2001-03-02
  • 打赏
  • 举报
回复
#include <conio.h>
#include <dos.h>
#include <mem.h>

char * time = " \x15 \x15:\x15 \x15 \x15:\x15 \x15 \x15";
void far * VEIDO = MK_FP( 0xB800 , 0 );
holyfire 2001-03-02
  • 打赏
  • 举报
回复
下面的程序我已调试通过,但取得时间的方法还须改进,有谁知道还请赐教。
holyfire 2001-03-02
  • 打赏
  • 举报
回复
你说的很对,看来不光堆栈,中断也会有麻烦,应该直接对bios区取时间,直接写屏显示字符,我的资料不全,没法直接给你答复。
vehicle 2001-03-01
  • 打赏
  • 举报
回复
输出时一定不要使用printf,二要使用poke
wplian 2001-03-01
  • 打赏
  • 举报
回复
holyfire 谢谢你的回复
其实我也知道应该用int 08h 或int 1ch 编写新中断驻留函数
但是我编成的程序一运行就是死循环(只能不停的显示时间),
且无法进行我本来要做的事(在程序中),所以才向大家求救,
你的程序有一点错误,思想同我以前想的一样,只是没有驻留内存,
进行堆栈处理,你认为我说的对吗?(期待你的回复)
holyfire 2001-02-27
  • 打赏
  • 举报
回复
不好意思,我的贴子一大就贴不上去,只好分开。
我现在Win2k下,没调试过。你自己试试看吧。
holyfire 2001-02-27
  • 打赏
  • 举报
回复
#include <conio.h>
#include <dos.h>
#include <stdio.h>

void interrupt showtime()
{
int x , y;
struct time curtime;
disable();
gettime( &curtime );
x = wherex();
y = wherey();
gotoxy( 0 , 0 );
printf( "%2d:%2d:%2d", curtime.ti_hour , curtime.ti_sec , curtime.ti_min );
gotoxy( x , y );
enable();
}
holyfire 2001-02-27
  • 打赏
  • 举报
回复
void main()
{
void interrupt ( * f )();
f = getvect( 0x1c );
setvect( 0x1c , showtime );
getch();
setvect( 0x1c , f );
}
holyfire 2001-02-27
  • 打赏
  • 举报
回复
edyang的方法可行。
ls_heshang 2001-02-27
  • 打赏
  • 举报
回复
在turboc中有好多带的函数,比如time()之类,只要你的类型与系统一致,是可以取系统时间的!查查资料吧!
wplian 2001-02-27
  • 打赏
  • 举报
回复
请大家注意,我主要想得到一个类似于计时器的东西
例如:如果在程序需要用户输入时,而用户停住不输,按照上面两个不知啥鸟(开个玩笑)
的方法,此时还会不停的显示当时的系统时间吗?
zzbsw 2001-02-26
  • 打赏
  • 举报
回复
還有一种基本的方法,使用循環.其中顯示時間只是其中的一個子項.較容易理解,且不用使用底層函數(中斷).
加载更多回复(1)

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧