C语言定时器,例如过了60秒开始执行程序,注释

C语言定时器,例如过了60秒开始执行程序,注释,第1张

#include <stdioh>

#include <windowsh>

void main()

{

int _t=60;

while (_t>0)

{

Sleep(1000);

_t--;

}

/

      60秒后要执行的语句

/

}

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

sbit RS=P2^5;

sbit RW=P2^6;

sbit EN=P2^7;

uchar code temp[]="00";

uint aa,ee,date1;

void delay(uint aa)

{

uint bb,cc;

for(bb=0;bb<aa;bb++)

for(cc=0;cc<100;cc++);

}

void write_zhiling(uint com)

{

RS=0;

P0=com;

delay(5);

EN=1;

delay(10);

EN=0;

}

void write_shuju(uint shuju)

{

RS=1;

P0=shuju;

delay(5);

EN=1;

delay(10);

EN=0;

}

void inite() //中断、1602初始化

{

TMOD=0x01;

TH0=(65536-46080)/256;

TH0=(65536-46080)%256;

EA=1;

ET0=1;

TR0=1;

RW=0;

EN=0;

date1=60;

write_zhiling(0x38);

write_zhiling(0x0c);

write_zhiling(0x06);

write_zhiling(0x80);

write_zhiling(0x01);

write_zhiling(0x80+7);

for(aa=0;aa<2;aa++)

{

write_shuju(temp[aa]);

delay(5);

}

}

void display(uint date)

{

uint ge,shi;

ge=date%10;

shi=date/10;

write_shuju(0x30+shi);//0x30--0x39对应的是1602显示0--9的ASCLL码值

write_shuju(0x30+ge);

}

void timer0() interrupt 1

{

TH0=(65536-46080)/256;//110592MHZ晶振50Ms

TH0=(65536-46080)%256;

ee++;

if(ee==14)//加上前面延时子函数的延时, 在我的板子上ee=14的时候大概就是一秒钟

{

ee=0;

date1--;

if(date1==0)

{

date1=60;

}

write_zhiling(0x80+7);

display(date1);

}

}

void main()

{

inite();

while(1);

}

小弟不才,希望这个程序对你有帮助!

'先在窗体上添加一个timer控件,然后打开代码窗口,输入如下代码:

dim

nowtime

private

sub

form_load()

timer1interval

=

1000

timer1enabled

=

true

end

sub

private

sub

timer1_timer()

if

time

=

"12:00:01"

then

'你想要执行的代码放这里

end

if

end

sub

ORG 0000H

JMP BEGIN

ORG 000BH

LJMP T0INT

ORG 001BH

LJMP T1INT

LEDD EQU 30H

LEDC EQU 36H

SECC EQU 37H

TCNT EQU 3AH

ORG 0030H

;---------------------------------------

TABLE: ; 共阴极数码管显示代码表

DB 0FCH ;"0" 00H

DB 60H ;"1" 01H

DB 0DAH ;"2" 02H

DB 0F2H ;"3" 03H

DB 66H ;"4" 04H

DB 0B6H ;"5" 05H

DB 0BEH ;"6" 06H

DB 0E0H ;"7" 07H

DB 0FEH ;"8" 08H

DB 0F6H ;"9" 09H

DB 0EEH ;"A" 0AH

DB 3EH ;"B" 0BH

DB 9CH ;"C" 0CH

DB 7AH ;"D" 0DH

DB 9EH ;"E" 0EH

DB 8EH ;"F" 0FH

DB 00H ;" " 10H

; DB 3FH,06H,5BH,4FH,66H ;12345

; DB 6DH,7DH,07H,7FH, ;6789

;---------------------------------------

DELAY:

MOV R6,#25

DLY01:

MOV R7,#100

DJNZ R7,$

DJNZ R6,DLY01

RET

;---------------------------------------

BEGIN:

MOV SP,#5FH

MOV TMOD,#11H

MOV TH0,#3CH

MOV TL0,#0B0H

MOV TH1,#0F4H

MOV TL1,#48H

MOV LEDC,#6

MOV R0,#LEDD

CLR A

INIT:

MOV @R0,A

INC R0

DJNZ LEDC,INIT

SETB ET1

SETB TR1

MOV P2,#0

MOV TCNT,#0

MOV SECC,#0

SETB ET0

SETB EA

MOV SECC,#60

LCALL DISSEC

SETB TR0

SETB TR1

LOOP:

SJMP $

;---------------------------------------

T1INT:

PUSH ACC

CLR TR1

MOV TH1,#0F4H

MOV TL1,#48H

SETB TR1

MOV DPTR,#TABLE

MOV R0,#LEDD

MOV A,LEDC

T1INT0:

JNZ T1INT1

MOV P2,#01H

MOV A,@R0

MOVC A,@A+DPTR

CPL A

MOV P0,A

SJMP T1INTD

T1INT1:

MOV P2,#02H

INC R0

MOV A,@R0

MOVC A,@A+DPTR

CPL A

MOV P0,A

T1INTD:

INC LEDC

MOV A,LEDC

CJNE A,#2,T1INT6

T1INT6:

JC T1INTE

MOV LEDC,#0

T1INTE:

POP ACC

RETI

;---------------------------------------

HBCD:

MOV B,#10

DIV AB

SWAP A

ORL A,B

RET

;---------------------------------------

T0INT:

PUSH ACC

CLR TR0

MOV TH0,#3CH

MOV TL0,#0B0H

SETB TR0

INC TCNT

MOV A,TCNT

CJNE A,#20,T0INT1

T0INT1:

JC T0INTE

MOV TCNT,#0

MOV A,SECC

DEC A

MOV SECC,A

JNZ T0INT2

MOV SECC,#60

T0INT2:

LCALL DISSEC

T0INTE:

POP ACC

RETI

;---------------------------------------

DISSEC:

MOV A,SECC

LCALL HBCD

PUSH ACC

ANL A,#0FH

MOV 30H,A

POP ACC

SWAP A

ANL A,#0FH

MOV 31H,A

RET

;---------------------------------------

END

从60秒到30秒再到90秒并循环倒计时显示。

----

有点不好理解。

从60秒到30秒,看来,是倒计时。

到了30之后,怎么办?是立即改为90吗?

到了90之后,再怎么办?是立即改为60吗?

使用KeilC

unsigned

int

iTimer=0;

//将timer0或者timer1设计成100ms中断程序

{

if(iTimer)iTimer--;

}

//在主程序里加入如下

{

iTimer

=

600;

//600x100ms

=

60s

while(iTimer);

//等待60秒倒计时结束

}

delay(int t)这个是延时子程序,如果采用20M晶振的话,调用一次延时t毫秒。

display()是数码管动态扫描显示子程序,位控位为P30、P31,段码控制为P1。扫描间隔时间为5毫秒左右。

以上就是关于C语言定时器,例如过了60秒开始执行程序,注释全部的内容,包括:C语言定时器,例如过了60秒开始执行程序,注释、请帮忙写一个程序:单片机控制液晶显示器60秒倒计时(C语言)、VB做一个60秒内循环倒计时的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10176209.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存