c51单片机定时器30秒倒计时程序,一个按键控制开始,另一个按键控制暂停和继续

作者&投稿:卜雷 (若有异议请与网页底部的电邮联系)
1602液晶显示30秒倒计时,并用按键1控制开始,按键2控制暂停继续~

是实物开发板?还是仿真?
要先画仿真图,再写程序。或给开发板的原理图才能写程序。是写c程序吗?

做一个全局flag;
1、T0做一个1秒定时中断,中断里面,flag为真,则时间自增,否则不做事情;
2、按键1做一个外部中断,中断里面对flag的取反(实现暂停与继续);
3、另一个按键做一个外部中断,中断里面做flag归零,且时间清零。

#include<reg51.h>
unsigned char code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9
unsigned char sec=30,scanled;
unsigned char disdat[2];
sbit keys=P1^0;
sbit keyc=P1^1;
sbit fmq=P3^0;

void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(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)
{
case 0:
P2=0xfe;
P0=ledtab[disdat[1]];
break;
case 1:
P2=0xfd;
P0=ledtab[disdat[0]];
break;
default:break;
}
scanled++;
scanled%=2;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
TR1=1;
TR0=0;
ET0=1;
ET1=1;
EA=1;
fmq=0;
scanled=0;
while(1)
{
 if(keys==0)
  {
while(keys==0);
TR0=1;
}
 if(keyc==0)
  {
while(keyc==0);
TR0=~TR0;
}
}
}



51单片机的定时器和计数器分别定时和计数的周期是多长时间,这个脉冲...
定时器\/计数器做为定时器来用的时候,是数的单片机时钟的脉冲个数,也就是说,单片机的时钟做为定时器\/计数器的时钟源,因为单片机的时钟一般比较固定,因此,我们就知道一个脉冲占多长时间,因为根据脉冲的个数,就能推算出时间,就能做定时器用.比如:12MHz的传统51单片机,一个脉冲周期是1us,如果定时器数了...

51单片机实验(关于定时器计数器)
51单片机实验(关于定时器计数器) 用P1.7驱动发光二极管亮一秒灭一秒地闪烁。时钟频率为6MHz。提示:长时间定时采用定时器和计数器结合。计数器设定用硬件方式,提议T0定时,T1计数T0的定时跳变信号P1.0的跳变次数,计... 用P1.7驱动发光二极管亮一秒灭一秒地闪烁。时钟频率为6MHz。提示:长时间定时采用定时器和计数...

51单片机定时器中断函数,定时器,还有while()这三个之间是怎么跳转,工 ...
①TR0=1;\/\/启动定时器0 这就是 定时器开始 工作了。②程序配置了 定时器的 中断时间为 50ms(12MHz晶振),也就是每隔 50ms 就进入一次中断函数。进入中断后,程序又重新给定时器 定时 50ms,同时 对 中断次数 进行 记录(tt++)。主程序只要查询 记录值(tt),就能知道 定时器 中断了多少...

51单片机关于3个定时器同时工作的问题
^_^,没有这个道理 你最好把你的程序全部贴出来吧 ^_^ 我的程序经常3个同时用

关于51单片机定时器的问题。
看来,你对定时器真是不理解呀。1.关于定时器最长的定时时间,假如晶振频率是12MHz,机器周期是1us,最长定时的时间是65.536ms。所以,你想定时1秒是不可能的。通常是定时50ms,以中断方式,这样,每中断一次50ms,则中断20次就是1秒。2.你这个程序就是定时50ms的,变成50000us。晶振频率是12M,...

MCS-51单片机AT89C51有几个几位的定时计数器,可以被设定的工作方式有几...
51单片机有两个定时器,每个定时器可以设置4中工作方式。\\x0d\\x0a方式0:13位定时器\\x0d\\x0a方式1:16位定时器\\x0d\\x0a方式2:8位重装载模式\\x0d\\x0a方式3:两个独立8位定时器模式

51单片机的定时器问题
1、关闭定时器是TR0=0;执行TR0=0;之后,定时器就停止计数,也就是TH0和TL0会保持当前值不会变,ET0=0是关闭定时器的中断,执行ET0=0后,即使定时器还在计数,计数发生溢出的时候不会进入中断。2、在我们使用定时器模式1进行定时,TH0和TL0有三种情况会发生变化:a、直接对TH0和TL0进行写入数值...

51单片机定时器设置:
TMOD = (TMOD & 0XF0) | 0X01; \/\/定时器0工作在模式1,16Bit定时器模式 上述表达式中0XF0的作用是什么?1 (TMOD & 0XF0) 其中&为逻辑与指令,按位与操作,定时器的模式寄存器TMOD与上0XF0的作用是高4位不变,低4位被清零。(1与上任何数 不变 0与上任何数 被清零)(TMOD & ...

51单片机如何设置将三个定时器设为工作方式1
51单片机只有两个定时器,设置为工作方式1指令为:MOV TMOD,#11H ;定时器方式 或 MOV TMOD,#55H ;计数器方式

比较MCS-51单片机内部定时器4种工作方式的异同?最好详细点
方式2:8位自动重装计数方式,最大计数值为2^8=256,定时256个机器周期.此方式工作时定时或计数到了不用重装初值,精度较高.另外在串口通讯时常用此方式.是最常用方式之一。方式2:特殊工作方式。将定时器0分成两个8位功能不全的定时计数器,要占用T1部分功能。也不常用。方式3:8位自动重装计数方式,最...

高淳县15349286747: c51单片机: 利用定时器+蜂鸣器实现定时报警功能,30秒内,每一秒响一下,30秒时间到了,蜂鸣器长鸣 求程序 -
俟追速卡: 参考程序: #include <reg52.h>sbit Beep = P3^0; unsigned char t1s,t50ms; unsigned char flag30s = 0,flag1s = 0;void delayms(unsigned int xms) {unsigned int i,j;for(i=0; i<xms; i++)for(j=0; j<110; j++); }void Alarm(void) {Beep = 0;delayms(...

高淳县15349286747: 利用单片机设计一个30秒计时器程序 -
俟追速卡: P1 段码 P2 位选 p2.0(个位) p2.1(十位) P3.0 按键 启动 0时表示按下 P3.1 按键 停止 P3.2 按键 重置 12M 晶振 FLAG EQU 30H ; =0 停止 =1开始 =2重置 TIME EQU 31H ; 每过一秒 置1 ,通过主程序对其清0 计时 CON EQU 32H ; 记录当前...

高淳县15349286747: 题目:30秒倒计时,用单片机来做.要求:按下按键开始30秒倒计时. -
俟追速卡: 将按键连接到一个I/O口,将I/O口设置为输入输出模式 读取I/O口状态 如P0.1 if(P0.1==0) { 启动定时 } 倒计时可以用定时器,也可以用软件定时.具体要看你单片机的型号和频率. 你用的是什么型号的单片机?

高淳县15349286747: 如何用单片机制作倒数计时器 -
俟追速卡: 也就是百倒计时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 ,#...

高淳县15349286747: 利用C51单片机设计定时器 -
俟追速卡: /*===99倒数秒表,带按键,主要功能,按键1按一次能使个位数加一,当按键二按 第一次,按键一能对十位进行调整,不用一个个建按到99,按键二按第二次会闪烁提示 倒数准备开始,然后按键二再按一次就能开启倒数*/#include<reg52.h>#...

高淳县15349286747: 单片机控制倒计时定时器 怎么编啊急 -
俟追速卡: 1. 设置两个按键K1为开始按钮, K2为停止按钮. 2 预置7种的倒计时时间.分别为5/15/20/30/35/45/50分钟倒计时 3. P1.0口外接一发光二极管为状态LED,定时未开始时LED常亮,定时过程中 LED闪烁. 4. 设置两位LED显示器,显示即时时间. 5. 画出硬件接口电路,并说明相关的工作过程. 6. 编写相关的控制程序.

高淳县15349286747: 51单片机定时器实现延时30秒中断 -
俟追速卡: 51单片机定时器实现延时30秒中断,这不可能,如果晶振是12M,最大定时时间是65.536ms.但是,要计时30秒是可以的,对中断计数,算好定时的时间,如定时50ms,则中断600次为30秒.

高淳县15349286747: 30分钟倒计时51单片机汇编程序怎么写 -
俟追速卡: 分用一个寄存器,秒用一个寄存器,然后50ms用一个寄存器,定时50ms一个一个的减不够减向上一位借1

高淳县15349286747: 单片机30秒倒计时程序加电路图, 可用Proteus仿真~ -
俟追速卡: ;可设定时间的倒计时定时器,可选择5/15/20/30/35/45/50分钟倒计时 ;倒计时时间由四位拨码开关的1/2/3位来控制, ;第2位表示5分钟,...

高淳县15349286747: 单片机用T0定时30秒怎样编程 -
俟追速卡: 初值给50000(相当于50MS,12M的晶振)然后再利用一个变量自加600(注意变量的范围)次...到600次就已定时30S,然后记得变量清零...就差不多了吧...

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