单片机定时器中断问题! 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;
}
如题:程序是我跟着视频上学的,问题是视频上小灯能闪烁,为什么我的不能,板子电路是一样的!
展开
 我来答
siduestc
2013-07-26 · TA获得超过527个赞
知道小有建树答主
回答量:655
采纳率:100%
帮助的人:139万
展开全部

因为当闪烁频率大于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秒变换一下,


还有就是你的时钟频率是否和样例相同??

追问

嗯,你的回答我懂了,但是现在LED还是不亮,这是电路图你帮我看看程序本身有没有什么问题,谢谢了!

追答
//刚才由于设置不合理造成第一次闪烁需要等待很长的时间,给没有耐心的人造成误解
#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 广告
对光传输设备进行调试和维护,需要掌握以下关键点:1. **熟悉设备性能**:深入了解OTN/DWDM等光传输产品的性能特点,确保能够熟练使用设备。2. **按规范操作**:依据产品说明书和维护手册进行调试和维护,确保操作步骤正确无误。3. ... 点击进入详情页
本回答由光派通信提供
yulunna
2013-07-27 · TA获得超过408个赞
知道小有建树答主
回答量:176
采纳率:50%
帮助的人:110万
展开全部
1、如何程序头文件没有做任何关于P10这种形式的定义的话,则默认的是P1^0这种形式。
2、定时器的定时时间是否能满足你观察到闪烁效果的程度。
3、没有特别要求的话, using 1可以省略。
4、按你上面中断所看,每中断一次(时间自己算),LED闪烁一次。51单片机最长才60MS左右,闪烁效果不是太明显。
5、请确认你这程序的初始值设定是否有问题,单次中断定时多久。
追问
不是闪烁效果不明显,是压根不亮
追答
再次仔细核对下上面说的内容,确定核对完了,修改还是出错,那你加一下Q:418668305
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友569ce4c
2013-07-26 · TA获得超过175个赞
知道小有建树答主
回答量:565
采纳率:75%
帮助的人:202万
展开全部
60几毫秒,1秒钟能闪烁10多次吧,人眼可能反应不过来。至于你说视频上可以,我觉得是因为视频用了摄像机,摄像机和人眼有区别的。
追问
对的,可是我的LED都不亮
追答
有没有示波器测量一下P10的波形,看是不是方波。如果是说明程序是对的,而板子的灯有问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bjdonglw
2013-07-26 · TA获得超过3813个赞
知道大有可为答主
回答量:1万
采纳率:58%
帮助的人:2046万
展开全部
需要增加延时!
更多追问追答
追问
我不是弄了定时器那个中断吗?那个时间大概是60几毫秒,再怎么说灯也应该亮啊,可我的不亮
追答
时间太短了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式