51单片机,定时器,呼吸灯问题:

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar t0,flag,flag1,temp,dc;
void init();
void main()
{
init();
while(1)
{
;
}
}
void init()
{
t0=0;
dc=0;
flag=0;
TMOD=0X01;
TH0=(65536-10)/256;
TL0=(65536-10)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-10)/256;
TL0=(65536-10)%256;
t0++;

if(t0<=dc)
{
P1=0;
}
else
{
P1=0xff;
}

if(t0==200)
{
t0=0;
if(flag==0)
{
dc++;
if(dc==200)
flag==1;
}
if(flag==1)
{
dc--;
if(dc==0) flag==0;
}

}
}
只呼,不吸, 新手求指点啊

第1个回答  推荐于2017-11-27
中断子函数有问题
这样改
void timer0() interrupt 1
{
TH0=(65536-100)/256; //原定时太短了吧
TL0=(65536-100)%256; //原定时太短了吧
t0++;
if(t0<=dc)
{
P1=0;
}
else
{
P1=0xff;
}
if(t0==200)
{
t0=0;
if(flag==0)
{
dc++;
if(dc==200)flag=1; //这是赋值语言,一个等号
}
else if(flag==1) //这应该是else if
{
dc--;
if(dc==0) flag=0;//这是赋值语言,一个等号
}
}
}本回答被提问者采纳
第2个回答  2015-04-16
给你说了你也不懂

51单片机两个定时器中断写了个呼吸灯程序,怎么调试出来是小灯闪烁程序...
程序太乱,只用一个定时器就可以 如定时100us 中断一次 20次是2 ms 即周期是2 ms 中断一次计数变量a加一,并且与另一变量b(1到20)比较,如果a>b,则输出高电平,反之则输出低电平 a=20时清0 主程序中可不断改变b的值,先由大到 小 再由小到大,就是呼吸灯了 如延时200ms改变一次b...

求单片机大神帮忙设计一个电路,51单片机制作led呼吸灯的
proteus仿真按理来说是不可能达得到效果的,因为这种仿真得有非常快的处理速度。我刚动手试了下和自己的想法相同,LED只会间断的闪烁。我是用AVR单片机,用51也是一样的。我这个程序也在实物试过效果很好。演示定时器1的快速PWM输出@利用快速PWM输出控制LED的亮度变化,达到呼吸灯的效果*\/ include<iom8...

51单片机用汇编语言如何设计8个轮流呼吸的呼吸灯?
START:MOV P0,#01H;()只有第一个灯亮 ACALL DELAY;延迟,不加延迟的话 你根本看不起清到底那个灯亮的 MOV P0,#02H;()只有第二个灯亮 ACALL DELAY MOV P0,#04H;()只有第三个灯亮 ACALL DELAY MOV P0,#08H;()只有第四个灯亮 ACALL DELAY MOV P0,#10H;()只有第五个灯亮 ACALL ...

51单片机设计呼吸灯
include "reg51.h" \/\/包含头文件 define uchar unsigned char define uint unsigned int \/\/ \/\/延时函数 \/\/ delay(uint time) \/\/int型数据为16位,所以最大值为65535 { uint i,j; \/\/定义变量i,j,用于循环语句 for(i=0;i<time;i++) \/\/for循环,循环50*time次 for(j=0...

单片机式的呼吸灯控制方法
方法1:1000个左右的灯,需要10根地址线选通,51的IO管脚应该是没有问题。剩下的就是要用大量的译码器,把二进制信息转换为管脚信息。估计你仅仅是控制亮和灭,如果是这样选通也就可以进行明暗的控制,否则输出的信息也要加进去,就是说需要加驱动电路。方法2:用移位电路,比如HC595,在51中地址做...

我在设置里面看呼吸灯是开着的,但是为什么不亮。
你的呼吸灯坏了,亦或其线路开路了,这对你电脑或手机的关系不大,主要起装饰作用和提醒功能。你在设置里面看是开着的,是单片机定时器产生的PWM程序。表示有输出而已。

单片机做LED呼吸灯,用多少HZ最合适
人呼吸的频率,周期3秒到6秒,每分钟10到20次

谁帮忙把这个51单片机模仿PWM呼吸灯的主函数程序注释下,很乱
void main (void){ unsigned int t = 1;unsigned int i, TEMP;unsigned int TYPE = 0;bit LOOP = 0;while (1){ if (KEY == 0){ l1:Delay(10000);TYPE = (1 - TYPE);if (TYPE == 0){ t = 1;LOOP = 0;};} if (TYPE == 0){ if (LOOP == 0){ Display(t);t++;...

基于AVR 单片机设计一款 LED 呼吸灯
要设计一款基于AVR单片机的LED呼吸灯,并通过压力传感器实现压力感应控制,以下是关键步骤的概述:首先,确保材料准备充足,包括:AVR单片机,如ATmega328PLED灯电阻式柔性薄膜压力传感器用于显示压力值的LCD显示屏电阻、电容等电子元件开发板或面包板等搭建工具接着,进行硬件连接,如:连接单片机与其他元件,确保...

求一个89c52单片机的呼吸灯程序 要边呼吸边移动的 就是相当于呼吸灯流水...
delay(10); \/\/ 这里的延时 根据灯的情况自己调整 } } } \/\/ 由亮变暗的子函数 \/\/ 参数 ledn 为点第几位的灯 void on_off(unsigned char ledn){ unsigned int i,j;for(i=100;i>1;i--){ for(j=0;j<100;j++){ if(i<=j){ \/\/ 模拟pwm的低电平输出 P0 = 0...

相似回答