配置定时器0的定时模式,控制点亮LED灯闪烁,实现现象为开发板上的红蓝绿LED灯交替闪烁
以下代码经过实际验证 STC15W4K64的一块系统开发板
话不多说,直接上代码(模块化)
- 主函数代码如下
- #include "timer.h"
- void main()
- {
- unsigned char time = 0; //定义计数次数的数据类型
- P0M0 = 0; P0M1 =1; //配置P0为准双向模式
- Timer0_Init(); //调用初始化函数,初始化定时器0
- while(1)
- {
- if(TF0 == 1) //T0溢出标志位,溢出后硬件置 1 (检测定时器是否溢出)
- {
- TF0 = 0; //软件查询,软件清 0
- time++; //记录溢出的次数
- if(time == 30) //0.3s
- { LED1 = 1;
- LED2 = 1;
- LED0 = 0;
- }
- if(time == 60) //0.6s
- { LED0 = 1;
- LED2 = 0;
- }
- if(time == 90) //0.9s
- { LED2 = 1;
- LED1 = 0;
- time = 0;
- }
- }
- }
- }
- 有关定时器的点C代码如下
- #include "timer.h"
- void Timer0_Init(void) //溢出定时的时间为10ms
- {
- TMOD = 0X00; //工作模式寄存器,设置为启动禁止仅由TR0控制,设置为定时模式,工作模式设置为模式0
- TH0 = 0XDC; //给加法计数器附初值 0XDC(65536-9213)/256
- TL0 = 0X00; // (65536-9213)%256
- TR0 = 1; //TR0 T0的运行控制位,等于1开始计数
- }
- ```
- 定时器点H代码如下
- #ifndef __TIMER_H__
- #define __TIMER_H__
- #include <STC15W.h> //15单片机头文件
- sbit LED0 = P0^5; //LED灯的位定义(蓝)
- sbit LED1 = P0^6; // 绿
- sbit LED2 = P0^7; // 红
- void Timer0_Init(void);
- #endif
复制代码 完整代码:
用定时器实现小灯闪烁(寄存器).rar
(21.1 KB, 售价: 2 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|