• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

【活动】用IAP15F2K61S2单片机定时器T0实现D9每35秒取反一次

SingleYork 2016-08-21 浏览量:1671
本帖最后由 SingleYork 于 2016-8-28 09:46 编辑

[postbg]bg7.png[/postbg][table=98%]
如题:


怎么实现用IAP15F2K61S2单片机定时器T0实现D9每35秒取反一次?


温馨提示:

请从以下链接中的帖子学习相关内容并进行回答,其他地方得到的答案不能作为标准答案,仅能做为补充说明,七天之内答案不可见,答题的童鞋有七天时间修改答案,每周结贴一次,选择最佳答案。获得最佳答案的童鞋将会获得相应的专家积分,专家积分排行榜有丰厚的奖励哦!每周只有5个悬赏问答,机会有限,请认真回答!




答案出处:


I51开发板活动原帖及例程详解汇总
//www.icxbk.com/community/forum.php?mod=viewthread&tid=65414
(出处: ICKEY BBS)
[/table]
1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 参考:
    I51开发板 第六讲:定时器之配置篇_单片机讨论_技术论坛_云汉电子社区
    //www.icxbk.com/community/forum.php?mod=viewthread&tid=65517

    为了最大化利用现成的代码,就采样第六讲中的配置,使用T0定时器实现1ms的定时,然后中断1000次为1秒
    首先,配置定时器T0,配置定时器的工作方式及初值等。
    T0工作于1T定时方式,在16位自动重装初值方式下,计算出1ms的定时器初值为:X = 65536UL - (MAIN_Fosc / 1000UL),即:HT=0xD1,TL=0x20;每当1ms定时时间到产生中断,中断1000次即为1秒。

    然后,配置我们需要用来指示灯IO口,D9对于的IO为P3.0;

    最后,在定时器T0中断函数里实现我们所需要的功能,在原来基础上稍微改了一下


    PS:看到程序有点小问题哈
    • 发布于 2016-08-21
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5

  • void Timer0Init(void) //1毫秒@22.1184MHz
    {
    AUXR |= 0x80; //定时器时钟1T模式
    TMOD &= 0xF0; //设置定时器模式
    TL0 = 0x9A; //设置定时初值
    TH0 = 0xA9; //设置定时初值
    TF0 = 0; //清除TF0标志
    TR0 = 1; //定时器0开始计时
    }
    1毫秒中断计数1000次,再计数1秒35次就给一个标志取反
    • 发布于2016-08-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 1、确定工作方式,给方式控制寄存器TMOD写入控制字;
    2、确定是采用1T还是采用12T方式,计算定时器/计数器的初值,并将初值写入寄存器TH和TL;
    3、根据需要设置中断控制寄存器IE和IE2的初值,决定是否开放定时器中断;
    4、根据需要设置寄存器INT_CLKO中的T2_CLKO、T1_CLKO和T0_CLKO位,确定是否采用可编程时钟输出;
    5、置1运行控制寄存器TCON和AUXR中的TR0、TR1和TR2位,启动定时器/计数器;
    • 发布于2016-08-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 本帖最后由 MOP 于 2016-8-23 15:17 编辑

    沒版子所以這裡寫大概流程是:
    1. 設置Timer0為1T模式
    2. 設置Timer0為模式0(16位自動重裝載)
    3. 初始化Timer0計時值
    4. Enable Timer0,開始計時
    5. Enable Timer0ˊ中斷
    6. Timer0 ISR,每35秒將P30腳位取反
    7. 無窮迴圈
    • 发布于2016-08-23
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

【活动】用IAP15F2K61S2单片机定时器T0实现D9每35秒取反一次