单片机/MCU论坛
登录
直播中
杨海清
8年用户
1804经验值
私信
关注
[问答]
单片机控制LED灯第一次闪烁后常亮30分钟后熄灭,第二次按按键后一直亮是为什么?
开启该帖子的消息推送
单片机
led灯
用定时器做的,但是LED灯只是第一次闪烁后常亮30分钟后熄灭,第二次按按键后就是一直亮了,不知道为什么,请一些高手解答下。
测试代码如下 最重要的就是第一次定时可以 第二次就不行了 STC15W100的芯片
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
typedef unsigned int u1;
typedef unsigned char u2; //
unsigned char d;
unsigned char n=0;
uchar min=1; sec=59; //
uchar flag;//
sbit led2=P3^0; //
sbit led1=P3^1; //
sbit cd=P3^2; //
sbit uv=P3^3; //
sbit k1=P3^4;
bit flash;//
bit key;
sfr IE2=0xAF;
sfr AUXR=0x8E;
sfr T2H=0xD6;
sfr T2L=0xD7;
void shijian(); //
/@@*************************************
*************************************/
void delay_1s()
{
int ab;
for(a=1000;a>0;a--)
for(b=150;b>0;b--);
}
/@@*************************************
*************************************/
void keypros()
{
if(k1==0)
{
delay_1s();
if(k1==0)
{
flash=~flash;
key=1;
}
}
while(!k1);
}
/@@*************************************
*************************************/
void ledflash()
{
if(flash==1 key==1)
{
for(d=0;d<10;d++)
{
led1=0;
delay_1s();
led1=1;
delay_1s();
}
key=0;
led1=0;
uv=1;
}
if(flash==0)
{
led1=1;
uv=0;
}
}
/@@*************************************
*************************************/
void Int1Init() //
{
IT0=1;
EX0=1;
EA=1;
}
/@@*************************************
*************************************/
void
ti
mer2Init() //
{
IE2|=0x04;
T2H=(65536-50000)/256;
T2L=(65536-50000)%256;
EA=1; //
AUXR|=0x10; //
}
/@@*************************************
*************************************/
void main()
{
led1=1;
uv=0;
led2=1;
flash=0;
Timer2Init();
while(1)
{
keypros();
ledflash();
Int1Init();
}
}
/@@*************************************
*************************************/
void Int0() interrupt 0 //
{
if(cd==0)
{
uv=0; //
led2=~led2; //
}
else
{
led2=1;
}
}
/@@*************************************
*************************************/
void Timer2() interrupt 12
{
T2H=(65536-50000)/256;
T2L=(65536-50000)%256;
flag++;
if(min==0 sec==0)
{
uv=0;
}
if(flag>=20)
{
flag=0;
sec--;
if(sec<=0)
{
sec=59;
min--;
if(min<=0)
{
min=0;
sec=0;
AUXR|=0x00;
}
}
}
}
回帖
(1)
马杰
2023-10-7 15:12:13
这是51的单片机, 在使用时,定时器在每次计时完了后,要重新配置计数值,
51单片机没有重装载功能
这是51的单片机, 在使用时,定时器在每次计时完了后,要重新配置计数值,
51单片机没有重装载功能
举报
更多回帖
rotate(-90deg);
回复
相关问答
单片机
led灯
使用上位
机
发送命令打断
单片机
当前正在执行的命令要怎么做?
2023-09-27
424
请教
一
个开关电路
2018-10-30
1979
初学
单片机
LED
的切换状态很乱
2020-03-09
1401
怎么用51
单片机
实现用
一
个键盘
控制
3个
LED
灯
2014-03-15
21582
按
一
下
LED
闪烁
,再按
LED
停止
闪烁
2015-01-10
10956
串行脉冲输出电路 要求
第一次
按键
时输出两个脉冲,
第二次
以后
按键
,每次输出
一
个脉冲
2017-06-10
4292
各位好,我想请教
一
下为什么同样的程序在不同的
单片机
xi...
2014-10-29
3843
如何使
单片机
两
次
采集的电压结果进行对比?
2020-03-11
4033
LED
第一次
亮
,
第二次
不亮了,然后就没有然后了。。。
2017-01-26
11723
利用外部中断0,通过回调函数的编写让
一
个
按键控制
三盏
灯
的
亮
灭,运行时出现bug!
2023-04-13
598
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分