单片机定时器中断问题! 20
#include<12c5a.h>sbitLED=P10;voidInit_Timer0(){TMOD|=0X01;TH0=0x00;TL0=0x00;EA=1;ET0=...
#include <12c5a.h>
sbit LED=P10;
void Init_Timer0()
{
TMOD|=0X01;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
Init_Timer0();
while(1);
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00;
TL0=0x00;
LED=~LED;
}
如题:程序是我跟着视频上学的,问题是视频上小灯能闪烁,为什么我的不能,板子电路是一样的! 展开
sbit LED=P10;
void Init_Timer0()
{
TMOD|=0X01;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
Init_Timer0();
while(1);
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00;
TL0=0x00;
LED=~LED;
}
如题:程序是我跟着视频上学的,问题是视频上小灯能闪烁,为什么我的不能,板子电路是一样的! 展开
4个回答
展开全部
因为当闪烁频率大于10Hz,人眼基本就不能分辨了
添加一个分频器即可,程序如下:
#include <12c5a.h>
sbit LED=P10;
unsigned char Times;
void Init_Timer0()
{
TMOD=0X01;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
Times=0;
Init_Timer0();
while(1);
}
void Timer0_isr(void) interrupt 1 using 1
{
//TH0=0x00;
//TL0=0x00;
if(--Times==0)
{
Times=20; //分频数,可根据需要自行设置
LED=~LED;
}
}
如果时钟为12M则20分频后大约是1.3秒变换一下,
还有就是你的时钟频率是否和样例相同??
追答
//刚才由于设置不合理造成第一次闪烁需要等待很长的时间,给没有耐心的人造成误解
#include <12c5a.h>
sbit LED=P1^0;
unsigned char Times;
void Init_Timer0()
{
TMOD=0X01;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
Times=10; //刚才这个初始值设计得不合理,使得第一次闪烁需等待约16秒
Init_Timer0();
while(1);
}
void Timer0_isr(void) interrupt 1 using 1
{
//TH0=0x00;
//TL0=0x00;
if(--Times==0)
{
Times=10; //分频数,可根据需要自行设置
LED=~LED;
}
}
更正后的程序经过仿真测试,没有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光派通信
2024-09-03 广告
2024-09-03 广告
对光传输设备进行调试和维护,需要掌握以下关键点:1. **熟悉设备性能**:深入了解OTN/DWDM等光传输产品的性能特点,确保能够熟练使用设备。2. **按规范操作**:依据产品说明书和维护手册进行调试和维护,确保操作步骤正确无误。3. ...
点击进入详情页
本回答由光派通信提供
展开全部
1、如何程序头文件没有做任何关于P10这种形式的定义的话,则默认的是P1^0这种形式。
2、定时器的定时时间是否能满足你观察到闪烁效果的程度。
3、没有特别要求的话, using 1可以省略。
4、按你上面中断所看,每中断一次(时间自己算),LED闪烁一次。51单片机最长才60MS左右,闪烁效果不是太明显。
5、请确认你这程序的初始值设定是否有问题,单次中断定时多久。
2、定时器的定时时间是否能满足你观察到闪烁效果的程度。
3、没有特别要求的话, using 1可以省略。
4、按你上面中断所看,每中断一次(时间自己算),LED闪烁一次。51单片机最长才60MS左右,闪烁效果不是太明显。
5、请确认你这程序的初始值设定是否有问题,单次中断定时多久。
追问
不是闪烁效果不明显,是压根不亮
追答
再次仔细核对下上面说的内容,确定核对完了,修改还是出错,那你加一下Q:418668305
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
60几毫秒,1秒钟能闪烁10多次吧,人眼可能反应不过来。至于你说视频上可以,我觉得是因为视频用了摄像机,摄像机和人眼有区别的。
追问
对的,可是我的LED都不亮
追答
有没有示波器测量一下P10的波形,看是不是方波。如果是说明程序是对的,而板子的灯有问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要增加延时!
更多追问追答
追问
我不是弄了定时器那个中断吗?那个时间大概是60几毫秒,再怎么说灯也应该亮啊,可我的不亮
追答
时间太短了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询