60s倒计时程序和计数器1~60怎么写啊,求程序 89c52单片机

作者&投稿:肥金 (若有异议请与网页底部的电邮联系)
求用单片机c语言编写的倒计时60s程序,为什么在百度上找的程序验证了现象不对~

嘎嘎嘎,刚好写过

60秒倒计时程序
#include
#define uchar unsigned char
#define uint unsigned int
uchar temp,bai,shi,ge,num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint);
void main()
{
temp=60;
num=0;
P2=0x00;

TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;

while(1)
{
shi=temp/10;
ge=temp%10;

P0=table[shi];
P2=0x02;
delay(5);



P0=table[ge];
P2=0x01;
delay(5);

}
}

void T0_time()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==40)
{
num=0;
temp--;
if(temp==0)
{
temp=60;
}
}
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);

}

使用KeilC
unsigned int iTimer=0;
//将timer0或者timer1设计成100ms中断程序
{
.
if(iTimer)iTimer--;
.
}
//在主程序里加入如下
{
.
iTimer = 600; //600x100ms = 60s
while(iTimer); //等待60秒倒计时结束
.
}

     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 



实实在在的东西。





单片机,倒计时120和正计时150程序怎么写?
for (i = 0; i < 120; i++) { for (j = 0; j < 1000; j++) { \/\/ 适当的延时操作 } } } void main() { unsigned int count = 120;while (count > 0) { \/\/ 在显示器或LED上显示当前计数值 count delay();count--;} \/\/ 倒计时完成后的操作 } ```正计时150程序示例:...

编程实现倒计时的秒表,2位LED数码管显示,延时采用硬件延时的方法_百 ...
unsigned char second;\/\/秒倒计时变量 unsigned char t0n;\/\/T0中断次数计数 sbit k1=P3^2;\/\/定义按键 void delay(){ unsigned int j;for(j=400;j>0;j--);} void display()\/\/显示子程序 { P2=0x01;P0=tab[second\/10];\/\/显示十位 delay();P2=0x02;P0=tab[second%10];\/\/显示个位...

请教vb倒计时程序
但你要注意一点:进行时间相减就得出时间差来了,不过当现在的时间超过下午4点的时候 时间差就会一秒一秒的增加,在4点以前是一秒一秒的倒计时的.下面我写的这个程序 你会更加明白一些.Private DatNow As Date, Y As Integer Private Sub Timer1_Timer()Me.Cls DatNow = #6\/6\/2012 7:30:50 PM# ...

vb编写倒计时程序 跪求。。。
End Sub Private Sub Timer1_Timer()If ss <> 0 Then ss = ss - 1 Label1.Caption = mm & ":" & ss ElseIf mm <> 0 Then mm = mm - 1 ss = 59 Label1.Caption = mm & ":" & ss Else Label1.ForeColor = &HFF0000 Label1.Caption = "倒时计完成"End If End Sub ...

c51单片机定时器30秒倒计时程序,一个按键控制开始,另一个按键控制暂停和...
j=0;j<120;j++);}void dischg(){disdat[0]=sec\/10;disdat[1]=sec%10;}void t0isr() interrupt 1\/\/秒计时{TH0=0x3c;TL0=0xb0;time++;if(time==20){time=0;if(sec>0 && flag==0)sec--;}dischg();}void t1isr() interrupt 3\/\/显示{TH1=0xec;TL1=0x78;switch(scanled)...

vb6,做一个10s倒计时
s = 60 在代码编辑窗口的通用段进行变量定义:Dim h As Integer, m As Integer, s As Integer '分别存储时分秒 Dim a As Integer 双击窗体,进入代码编辑器,在 Form_Load事件中写入代码:Timer1.Enabled = False '先关闭计时器 关闭代码窗口,按下F5运行程序,单击“设置倒计时”命令按钮,弹出...

高手帮忙51c单片机——想制作倒计时报警器,求个c程序
if (miao==0&&fen==0&&shi==0)\/\/当倒数计时为00-00-00时蜂鸣器响 { beep=0;TR0=0;} } } void delay(uint z){ uint i,j;for (i=z;i>0;i--)for (j=110;j>0;j--);} void display() \/\/我这里P2为位选,P0为段选,显示格式为 时-分-秒 { uchar s,g;s=shi\/10;g=...

30秒倒计时器课程设计
首先是bit变量“act”,当“act”为“1”时倒计时开始,为“0”时倒计时停止,“act”初值为“0”,可以由按钮操作将其置“1”或清“0”。第二个全局变量是char变量“time”,存放倒计时的时间,当倒计时时间为0时,发出声光报警。变量“time”的初值为30,定时中断服务程序在“act”为1时,每1s对其进行减1操作...

急求51单片机顺、倒计时60秒程序加注释下~好的话可再加财富!谢谢~!_百...
ET0=1; \/\/定时器T0中断允许 TR0=1; \/\/启动定时器T0开始运行 int_time=0; \/\/中断次数初始化 second=0; \/\/秒初始化 while(1){ DisplaySecond(second); \/\/调用秒的显示子程序 } } \/\/ \/\/函数功能:定时器T0的中断服务程序 \/\/ void interserve(void ) interrupt 1 using 1...

单片机, 请求大神按照我的要求帮我编一个99倒计时到0的汇编语言的程序...
ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN: MOV TMOD,#01H MOV TH0,#HIGH(65536-10000) MOV TL0,#LOW(65536-10000) SETB ET0 SETB EA MOV R0,#9 MOV R1,#9 MOV R2,#0 MOV R3,#9 CLR 00H CLR 01HLOOP: JB P1.0,LP01 JNB P1.0,$ SETB TR0 C...

顺昌县19518862394: 单片机六十秒倒计时程序 -
油解瑞琪: 原发布者:寂寞的猪猪60秒倒计时程序#include#defineucharunsignedchar#defineuintunsignedintuchartemp,bai,shi,ge,num;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelay(uint);...

顺昌县19518862394: 用单片机的定时/计数器实现60s倒计时,并用两位数码管静态显示倒计时秒值; -
油解瑞琪: 这个设计的关键有两个地方:1.配置好单片机定时器2.控制数码管显示.我这里有相关资料,加QQ1594863321

顺昌县19518862394: 如何用数字逻辑电路产生60s,45s和5s的倒计时信号 -
油解瑞琪: 一个时钟信号源(可以用有源晶振)、一片二进制计数器(可以用CD4521)、一片与非门(可以用CD4068),用计数器对时钟信号进行计数,根据时钟频率计算一下多少个脉冲分别相当于60秒、45秒、5秒,把计数器的相应输出锻送到与非门的输入,由与非门的输提供倒计时信号.CD4068是双-8输入与非门,可以分别提供两路精确的倒计时信号,5秒的倒计时信号用一片输入变量较少的与非门(例如CD4012)就可以了.

顺昌县19518862394: 设计一个计数器类,引用计数器类实现60秒倒计时 -
油解瑞琪: 在窗体上添加label1的基础上,再在窗体上添加1个timer1,即计时器控件.具体代码如下 Private Sub Label1_Click() Timer1.Enabled = True Timer1.Interval = 60 '秒表运行间隔,这里设置为0.1秒 Label1.Caption = "60" '倒计时的秒数 End Sub ...

顺昌县19518862394: 如何用单片机制作倒数计时器 -
油解瑞琪: 也就是百倒计时30秒吗? 用内部定时器就可以, 以51为例度 60ms*500=30s(每次定时60毫秒 循环500次) 60ms初值 TC=版2^16-60000=5536=15A0(H) ORG 0000HLJMP MAINORG 000BHLJMP TO_INT ;ORG 0100H MAIN: MOV IE ,#...

顺昌县19518862394: 怎样用单片机c语言实现60秒倒计时 -
油解瑞琪: 你的分不好拿啊= =!!!!#include<reg51.h> #define uchar unsigned char//宏定义 #define uint unsigned int sbit dula=p2^6; //段控制位 sbit wela=p2^7; //位控制位 uchar miao,fen,aa,n1,n2,n3,n4; uchar code table[]={ //显示编码 0x3f,0x06,0x5b,...

顺昌县19518862394: 求用单片机c语言编写的倒计时60s程序,为什么在百度上找的程序验证了现象不对 -
油解瑞琪: 嘎嘎,刚好写过60秒倒计时程序#include num=0; P2=0x00;0;TL0=(65536-45872)%256; EA=1; ET0=1,0x4f,0x66,shi,0x06,0x5b;x>0;x--) for(y=110;y&gt,0x6f,0x77; temp--; TR0=1; while(1) { shi=temp/,0x7c,0x39;256; delay(5); } } void T0_time()...

顺昌县19518862394: 带数码管显示的十进制计数器的程序 -
油解瑞琪: //倒计时 60s#include <reg51.h>#define SEG P2#define SCANP P1#define count_M1 50000#define TH_M1 (65536-count_M1)/256#define TL_M1 (65536-count_M1)%256 int count_T0=0;#define count_M2 250#define TH_M2 (256-count_M2)#...

顺昌县19518862394: 用单片机设计一个两位LED显示的秒表,按下计时键时,进行60s倒计时显示 -
油解瑞琪: #include sbit P3_5 =P3^5; unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00}; unsigned char second=60; unsigned char keycnt; unsigned int tcnt; void main(void) { ...

顺昌县19518862394: 求单片机数码管倒计时程序 -
油解瑞琪: #include<reg52.h> #include <intrins.h> //内部包含延时函数 _nop_(); #define uchar unsigned char #define uint unsigned int sbit d1=P2^0; sbit key1=P0^4; sbit SDATA_595=P0^0; //串行数据输入 ----接板卡上的SPI 数据信号输入端 sbit SCLK_...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网