51单片机定时器实现LED闪烁
要启用一个定时器,先要开启定时器,然后产生中断
系统中断:

初始化程序应完成如下工作:
对TMOD赋值,以确定T0和T1的工作方式。
计算初值,并将其写入TH0、TL0或TH1、TL1。
中断方式时,则对EA赋值,开放定时器中断。
使TR0或TR1置位,启动定时/计数器定时或计数。
#include <reg52.h>
/************ 定时器+中断控制led翻转 ***********/ sbit LED = P0^; typedef unsigned int u16;
typedef unsigned char u8; void timer_init(){
TMOD |= 0x01; //定时器工作方式1,启用T0定时器, GATE位为0,用TCON的TR0控制T0定时器的启动 //设置定时器的初始计数值
//计算方法
//假设定时器为1ms,一个机器周期为 1/单片机的晶振频率 即: 1/12M = 1us
//而1个机器周期 = 12个时钟周期 所以: n x 机器周期 = 1ms ===> n x 1us = 1ms
//所以n = 1000,也就是经过1000个机器周期,定时器要溢出(从0开始计数)
//所以定时器的初始值为65535 - 1000 + 1 = 64536 ===> 0xFC18
TH0 = 0xFC;
TL0 = 0x18; EA = ; //总中断开关
ET0 = ; //T0中断 TR0 = ;//启动T0定时器
} void trigger_timer0() interrupt {
static u16 i = ;
TH0 = 0xFC;
TL0 = 0x18;
i++;
if( i == ) { //1秒
i = ;
LED = ~LED;
}
} void main(){
timer_init();
while( );
}
51单片机定时器实现LED闪烁的更多相关文章
- 2017.11.18 手把手教你学51单片机-点亮LED
In Doing We Learning 在操作中学习.如果只是光看教程,没有实际的操作,对编程语言的理解很空泛,所以决定从单片机中学习C语言. #include<reg52.h> ...
- SAM4E单片机之旅——3、LED闪烁之定时器中断
让一个LED灯闪烁不过瘾,我们应该让这块开发板完成一点更高难度的任务:比如让两个LED灯闪烁. …… 当然了,以我们的现在使用的空循环技术,还是可以实现这点的.但是这样显得略为低端.所以我们使用一个高 ...
- 51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯
关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储 ...
- 51单片机和Arduino—闪烁灯实现
技术:51单片机学习.Keil4环境安装.Arduino环境安装.闪烁灯教程 概述 本文提供51单片机.Arduino单片机入门软件安装和一些需要使用的软件介绍,为后续单片机.嵌入式开发做 ...
- 用定时器T0查询方式P0口8位控制LED闪烁
#include<reg52.h> #define uchar unsigned char #define uint unsigned int void main (void) { uch ...
- 51单片机---点亮一个LED灯
1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; ...
- 从多谐振荡器详细解析到555定时器基本电路(控制LED闪烁)
在学期末,笔者参加了学校的电工实习,前六天做都很快,但是今天要做一个关于555多谐振荡器的LED闪烁电路,由于笔者没有提前准备,导致今天就算把电路搭建出来也不懂具体原理,耗费了不少时间,所以我打算专门 ...
- 使用内存地址点亮LED—跟51单片机一样写代码教学(初步入门)
51单片机点亮一个小灯 #include <rge52.h> sbit LED = P0^ void main(void) { P0 = 0XFE; // 总线操作 sfr P0 0X80 ...
- 51单片机-独立按键控制led矩阵的左移和右移
51单片机学习 独立按键 控制led灯光矩阵的左移和右移 开发板采用的是普中的A2学习开发板,具体的代码如下: typedef unsigned int u16; void delay(u16 tim ...
随机推荐
- 包建强的培训课程(3):App竞品技术分析
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Java学习笔记一:数据类型I
GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/IntPractice1.java https://github.com ...
- PHP7 ?:和??的区别
?:和??是PHP添加的新特性,我们可以通过下面的代码来理解 $z = $x ?? $y; //等价于下面 $z = isset($x) ? $x : $y; $z = $x ?: $y; //等价于 ...
- IntelliJ IDEA 的使用方法总结
创建普通 Java 项目 1.首次新建一个项目 如果是首次使用,在这个界面可以点击 Create New Project ,创建一个新项目. 选择Java,然后选好 JDK 的位置,接着点击下一步 N ...
- 软件测试人员需要掌握的linux命令(二)
2 设备管理 2.1 mount 名称 : mount 使用权限 : 系统管理者或/etc/fstab中允许的使用者 使用方式 : mount [-hV] mount [-fnrsvw] [-t vf ...
- C#zip压缩类
改造了网上的代码,可以压缩文件夹.指定文件列表(文件和文件夹的混合列表,需要指定子文件夹下需要压缩的文件),注释很详细不做解释 public class ZipHelper { /// <sum ...
- 一篇文章读懂HTTPS及其背后的加密原理
HTTPS(全称: Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.本文,就来深入介绍下其原理. 1 ...
- python之使用位运算符实现加法运算
一哥们去笔试,回来后跟我说了一通面试题,其中有一道题让我很感兴趣: 不使用+号实现加法运算 刚听到后,一脸懵逼,不使用+号怎么算? 问了朋友他也没做这题,不过仔细想了下,不使用+号,是否可以使用其他运 ...
- springMVC(2)---获取前段数据
springMVC(1)---获取前段数据 首先说明,如果你学过Struts2,那么在学springMVC就会简单很多,我也不最基础的开始写了,我前篇文章搭建了个ssm框架,算是springmvc入门 ...
- Nginx内置模块简介
经常编译Nginx的时候看到./configure后面跟着很多--with命令,虽然知道是添加模块,但一直也没有仔细去研究这些模块究竟是什么作用.本文会对常用的内置模块做个简单介绍,方便后续检索查看. ...