51单片机学习笔记6 -- 定时器中断

发布者:柳絮轻风最新更新时间:2022-07-08 来源: csdn关键字:51单片机  引脚复用  定时器中断 手机看文章 扫描二维码
随时随地手机看文章

1.引脚复用

通过原理图可以发现定时器0(T0)和定时器1(T1)是P3.4引脚和P3.5引脚的复用功能,当将这两个引脚配置为定时器功能时,引脚外接的传感器(模块)将不能正常使用,即引脚同一时间只能作为一个功能使用(普通I/O或复用功能)

T0、T1是两个16位定时器/计数器,每经过1个机器周期内部的16位计数寄存器的值加1,当计数器装满时会溢出,在定时模式时单次最大的定时时间是 65535*1.085us 的时间(单位us)


2.定时器配置

定时器0配置需要用到的寄存器(TCON、TMOD、TL0、TH0)

1.定时器/计数器控制寄存器TCON

TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出中断源和外部请求中断源等,TCON格式如下

TCON高4位是定时器/计数器T0、T1的溢出标志位和运行控制位,低4位是外部中断0、外部中断1触发方式控制位和外部中断使能位


2.定时器/计数器工作模式寄存器TMOD

3.中断号和中断类型

51单片机有3种中断类型,包括定时器中断、外部中断和串口中断,每个中断都有自己对应的中断号,如下

image.png

其中定时器0对应的中断号是 interrupt 1


4.定时器中断编程

定时器0初始话参考代码如下


void Timer0Init()

{

TMOD |= 0x01; //配置定时器0为16位定时器,TH0、TL0全用

TH0 = (65536 - 1000)/256; //1000us定时,即1毫秒溢出产生中断

TL0 = (65536 - 1000)%256; //1000us定时,即1毫秒溢出产生中断

ET0 = 1; //开启定时器0中断

EA  = 1; //开启全局中断

TR0 = 1; //定时器0开始计数

}


大致说说 TMOD |= 0x01 配置的几个位

TMOD |= 0x01

0x01 = 0000 0001

定时器1不做配置 TMOD 高4位配置为0

低4位配置定时器0 = 0001

GATE = 0 打开定时器/计数器0

C/T = 0 (置0作为定时器,置1作为计数器)

M1 = 0、M0 = 1 配置16位定时器/计数器,TL0、TH0全用


定时器0初始化后编写定时器0中断服务函数,如下函数名可自定义,需在函数末尾加上中断号


unsigned int count = 0;


void Timer0() interrupt 1

{

//每次产生中断后初始化定时器初值 - 1毫秒产生1次中断

TH0 = (65536 - 1000)/256;

TL0 = (65536 - 1000)%256;


//200毫秒执行一次操作

count++;

if(count == 200)

{

P1 = ~P1;

count = 0;

}

}


完整代码


#inckude


void Timer0Init()

{

TMOD |= 0x01; //配置定时器0为16位定时器,TH0、TL0全用

TH0 = (65536 - 1000)/256; //1000us定时,即1毫秒溢出产生中断

TL0 = (65536 - 1000)%256; //1000us定时,即1毫秒溢出产生中断

ET0 = 1; //开启定时器0中断

EA  = 1; //开启全局中断

TR0 = 1; //定时器0开始计数

}


void main()

{

P1 = 0xff;

Timer0Init();

while(1);

}


unsigned int count = 0;


void Timer0() interrupt 1

{

//每次产生中断后初始化定时器初值 - 1毫秒产生1次中断

TH0 = (65536 - 1000)/256;

TL0 = (65536 - 1000)%256;


//200毫秒执行一次P1电平反转

count++;

if(count == 200)

{

P1 = ~P1;

count = 0;

}

}

关键字:51单片机  引脚复用  定时器中断 引用地址:51单片机学习笔记6 -- 定时器中断

上一篇:51单片机学习笔记4 -- 蜂鸣器控制
下一篇:51单片机学习笔记7 -- 超声波测距

推荐阅读最新更新时间:2024-11-09 10:16

基于51单片机的电子存包柜的设计
Small RTOS 对RAM 需求小,非常适合单片机这类资源比较少的系统上。RTOS 具有多任务处理,较强的实时性,可裁减的内核,使得实时应用程序的设计、扩展和维护变得更容易。RTOS 思想的引入,一改传统单片机软件设计方法,使其不再是单一线程结构方式,通过应用程序分割为若干独立的任务,RTOS 使得应用程序的设计过程大为简化。本文结合基于单片机的电子存包柜的软件设计,简要分析了Small RTOS 的设计思想及消息队列通信机制的应用。 1. Small RTOS51 的基本原理 Small RTOS51是一个很小的内核,完全集成在KEIL C51编译器中,仅占用较少的程序存储空间,可以在没有外挂数据存储器的51单片机系统中
[单片机]
基于<font color='red'>51单片机</font>的电子存包柜的设计
51单片机控制步进电机-让电机转起来
摘要: 本节介绍用简单的方式,让步进电机转起来。其目的之一是对电机转动有直观的感受,二是熟悉整个开发流程 本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分,相关基础教程网上很多,可以自行学习 一、软件清单 需要用到的软件有keil5编译软件、STC程序烧录软件 二、控制原理 根据TB6600驱动器原理,向PUL口发送脉冲,每发送一个脉冲,电机就转一步。通过单片机延时的方式,切换PUL口电平产生脉冲,从而控制电机转动。 三、程序代码 //毫秒延时函数 void delay(unsigned int z) { unsigned int x,y; for(x=z;x 0;x--) for(y
[单片机]
51单片机STC89C52点亮多个LED(IO口的字节操作)
程序源码 /*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------主函数区域-----------------------------*/ void main() { P2=0x0F; //P2端口高四位输出低电平,低四位输出高电平,即D5~D8亮,D1~D4灭 while(1); //死循环,主程序停留在此不再往下执行 } 运行结果
[单片机]
<font color='red'>51单片机</font>STC89C52点亮多个LED(IO口的字节操作)
STC89C51单片机对LCD显示的串口调试关照强度程序设计
最近在调试传感器的那块程序,这里总结一下自己的心得。 调试程序的方法 方法1:led显示法,在程序中调用这一句函数led = 0;可以知道程序运行到哪里,为什么会出错,到什么地方陷入了死循环。 方法二:串口打印法,串口打印法可以知道函数输出的东西是什么,程序中只需要使用串口中断就可以了,关于串口怎么样使用,我觉得等一下我需要总结一下最近编程的问题。 现在这里要好好总结一下串口调试法,天祥哥在他的书上总结了串口调试的方法,开始的时候虽然开了一下,了解了他是什么情况,会用串口之外,其他的什么都不懂,到现在才真正明白串口中断的真正含义是什么,串口中断可以打断单片机的执行,让单片机在执行主函数的时候去执行别的函数。 // BH
[单片机]
51单片机时钟精度误差的解决
前几天用STC89C52单片机制作了一个电子时钟,经过一段时间的实验,发现时间精度存在误差,一分钟慢4秒左右。 这可了不得,十分钟就要慢40秒,一天下来不得慢半96分钟!!! 这个单片机晶振频率为11.0592mhz,和大部分时钟的晶振频率相同,应该没有问题。 后天考虑到源代码: 在定时器中断函数里: void t0(void) interrupt 1 using 0 { tcount++; if(tcount==4000) {tcount=0; second++; if(second==60) {second=0; minute++; if(minut
[单片机]
51单片机入门基础知识
单片机简介 1.什么是单片机 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 单片机结构框图如下: 2.单片机能做什么 小到玩具车、电子手表,大到航天器、机器人,无论是数据采集、工业控制还是智能化仪器仪表及通信设备,到处都有单片机的身影。其主要的应用领域如下:(1)在机电一体化中的应用。单片机与传统的机械产品结合使传统的机械产品结构简化、控制走向智能化,让传统的产品向新一代的
[单片机]
51单片机学习笔记5 -- 外部中断
1.外部中断概念 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。 2.引脚功能复用 51单片机芯片内部有很多外设,这些外设的引脚都是与IO口复用的。也就是说,一个IO口如果可以复用为内置外设的功能引脚,那么当这个IO口作为内部外设使用的时候,就叫做复用(一般来说,当某个引脚作为复用功能使用时,它将不能作为其他复用功能和普通IO来使用,即单个引脚只能作为普通IO或单个复用功能来使用)。 51单片机也有引脚具备复用功能,如下图P3端口的引脚可复用成串口收发或外部中断 3.中
[单片机]
<font color='red'>51单片机</font>学习笔记5 -- 外部<font color='red'>中断</font>
51单片机学习二 led流水灯与按键控制
单片机芯片型号 STC89C516 需求 需要的知识 1.关于延时函数 void Delay100ms() //晶振频率12mhz的100s延时函数 { unsigned char i, j; i = 195; j = 138; do { while (--j); } while (--i); } 可以延时上个语句对应时间,使用辅助程序可以生成 2.关于c51语言位运算中的移位 符号 为 “ ”, “ ” a m,a和m必须是整型表达式,要求m =0,将整型数a按二进制位向左移动m位,高位移出后,将低位补0。 a m,a和m必须是整型表达式,要求m =0。,将
[单片机]
<font color='red'>51单片机</font>学习二 led流水灯与按键控制
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved