单片机学习札记5---定时器和中断配置

发布者:古古斋最新更新时间:2021-07-20 来源: eefocus关键字:单片机  定时器  中断配置 手机看文章 扫描二维码
随时随地手机看文章

这一节,解释一下上一节的那个程序,用到什么,我们就学什么。


①新建一个程序,首先要包含头文件,比如很多人用STC89C52,因为是标准的51内核,要写 #include "reg51.h"就可以了,但是STC15W系列不是标准的51内核,他加了很多的功能进来,加了很多的特殊功能寄存器(SFR),所以要添加一个自己新建的头文件,stc15w.h ,这个是官方提供的,在下载客户端栏目里头,找头文件,直接复制添加进来就是了,如下图:

所谓的特殊功能寄存器,简单点就是8个开关,8个开关的不同组合开关状态会实现不同的功能,有些外设在使用前必须要设置,有的寄存器必须8个位一起操作,这叫不可位寻址,有的可以单独操作,比如EA = 1;这个是打开总中断使能位,如果全部操作8位可以写IE = 0X80;EA是IE寄存器的第7位。而那些不可位寻址的寄存器想单独操作,就必须用到与或非(& | !)来处理,这个待会讲。


② typedef 的作用是重新定义变量名字,这个是参与到程序编译中的,比如你原来定义unsigned char ,如果你写错了,写成unsiged char 编译器是不会编译通过的,#define 是用来进行简单的替换,不参与程序编译,也就是说,如果写错了,也不会提示。


③  51单片机在定义引脚的时候,要用sbit来定义,照着写就好


④ STC15W系列单片机的IO配置

从上图可以看出,IO可以被配置为4种模式,分别是准双向口,推挽输出,高阻输入,和开漏模式。比如P0口,用P0M0 和P0M1这2个寄存器就可以设置成不同的模式,当然,你要是问内部原理,就需要了解数字电路锁存器触发器和场效应管等知识,上电复位后,大部分IO是准双向模式,有些特殊的被配置为其他模式,使用之前要进行初始化才能用。


⑤关于SWITCH语句


学单片机,买书籍是少不了的,C程序设计,谭浩强这本不错,SWITCH是一条多选一语句,包含多个分支case,这个case 可以是字符,可以是数字,每条语句用break结尾,默认是default: break;如果条件不匹配,直接退出。


⑥  好了,接下来的全是重点内容,定时器和中断,这个慢慢讲,牵扯的东西实在是太多了

定时器和中断不是一个东西,但是在实际编程中一起使用,以上就是定时器0的配置步骤,其他定时器都差不多,寄存器可能不一样,有的可位寻址,有的不能。


来讲一下 & | !的用法,这个用法在stm32上广泛使用,很多人搞不懂为什么这么用,TMOD这个寄存器是一个不可位寻址的寄存器,如图所示:

我之前写过一篇帖子专门讨论过 & |这个问题,我把他复制过来,相信很多人都能看明白

接下来,讲一下定时器初值和计算,很多的教程在这方面讲得乱七八糟

以上这种表示写法表示定时器0 在12MHZ的晶振下,1ms溢出一次,这个玩意是怎么算出来的呢?我们知道,单片机的晶振是12MHZ情况下,单片机的时钟周期和频率互为倒数,也就是(1 / 12 000 000)s,又因为标准51单片机定义12个时钟周期是一个机器周期,也就是(12/ 12000 000)s,也就是每个机器周期是1us,那么1000us自然就是1ms,依然没听明白是吧?呵呵,接着看下面:


这里可以把定时器当计数器来处理,每个机器周期,累加1,如果我想定时1ms,该怎么处理呢?x*1us = 1000us,也就是说需要计数1000个就够了,而我们这个定时器是一个16位的,最大计数65535,那只要我们从(65536 - 1000)  = 64536开始计数就可以了,计数1000个然后溢出就能到1ms的定时, 64536换成16进制是0XFC18,看下公示的设置:

至于上面这种写法,是等价的,8位的寄存器最大计数就是到255,共计256个数,还可以这么写,都一样。

可能很多人注意到了,定时器0的重载模式,我们在中断里面重新赋值了,这叫自动重载吗?这不是,如果使能了重载,就可以不写这两句,但是因为习惯的原因,加上也无所谓。


关于中断,中断是一种处理问题的机制,属于见缝插针,我称之为“偷时间的贼”,每次偷不多,一点点,一点点就把事情办好了,效率极高。每一个中断都有一个中断入口标号,使用的时候,像下面这样声明下就可以使用了。

好了,就到这里吧,下一节,继续测试硬件电路。。。晚安

关键字:单片机  定时器  中断配置 引用地址:单片机学习札记5---定时器和中断配置

上一篇:单片机学习札记6---PCF8563显示时间
下一篇:单片机学习札记4---调试蜂鸣器驱动

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

51单片机内存扩展:从片内ROM跳转到片外ROM
源于一年前想自己动手给51写个OS,编译选Large模式,调试时整个流程都跑的好好的,可是烧写到片上后得不到预期的效果,后来查书才知道51单片机片上只有4KRom,如果没有扩展片外Rom,当访问4K以外的程序空间,程序指针又会回到最开始执行。参考手册扩展片外Rom后,能访问达64K的程序空间。网上能搜索到的扩展方式都是将EA引脚接地,让MCU上电后从外部ROM开始执行。但查看芯片手册,明明说EA为高时,程序从片内ROM执行,当执行到0x1000以上地址时(标准51单片机),会跳转到片外ROM执行。按网上的做法,为了扩展个片外ROM,片内的基本ROM都不用了,有点浪费了,于是开始找资料如何从片内跳转到片外执行。 射人先射马,发帖
[单片机]
51<font color='red'>单片机</font>内存扩展:从片内ROM跳转到片外ROM
基于单片机的AT2402的读写驱动程序
//此部分为AT2402的驱动程序使用I2C总线连接 #include Function.h //AT2402的功能函数 // 向有子地址器件发送多字节数据函数 //函数原型: bit ISendStr(UCHAR sla,UCHAR suba,ucahr /s,UCHAR no); //功能: 从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件 // 地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。 // 如果返回1表示操作成功,否则操作有误。 //注意: 使用前必须已结束总线。
[单片机]
单片机 RS485 通信接口、控制线、原理图及程序实例
RS232 标准是诞生于 RS485 之前的,但是 RS232 有几处不足的地方: 接口的信号电平值较高,达到十几 V,使用不当容易损坏接口芯片,电平标准也与 TTL 电平不兼容。 传输速率有局限,不可以过高,一般到一两百千比特每秒(Kb/s)就到极限了。 接口使用信号线和 GND 与其它设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。 传输距离有限,最多只能通信几十米。 通信的时候只能两点之间进行通信,不能够实现多机联网通信。 针对 RS232 接口的不足,就不断出现了一些新的接口标准,RS485 就是其中之一,它具备以下的特点: 采用差分信号。我们在讲 A/D 的时候,
[单片机]
51单片机-----------四向交通灯
一 实验目的: 实验4:运用AT89C51芯片实现四向交通灯: (1) 掌握C语言编程单片机控制程序的方法。 (2) 掌握使用Keil4软件编写、编译、调试程序的方法。 (3) 掌握使用Proteus软件绘制电路原理图、硬件仿真和程序调试。 (4) 理解和掌握共阴极数码管的显示原理和编码(记忆)。 (5) 熟悉使用51单片机I/O端口实现对外部用电器和电路的控制。 二、实验硬件和软件: 计算机1台、并安装Proteus8.6软件和Keil4软件。 Proteus8.6中会运用的部件:7SEG-MPX2-CC、AT89C51、BUTTON、LED-GREENREDYELLOW、RESPACK-8d 三、试验任务: 1.
[单片机]
51<font color='red'>单片机</font>-----------四向交通灯
意法半导体提供集成数字滤波器的新STM32L4微控制器
意法半导体 开始量产STM32L45x超低功耗微控制器(MCU)。新微控制器配备基于简单易用、价格亲民的STM32Cube平台的开发生态系统。下面就随单片机小编一起来了解一下相关内容吧。 STM32L451、STM32L452和STM32L462产品线集成Sigma-Delta调制器(DFSDM)用数字滤波器,可以在一款价格低廉的微控制器上实现高级音频功能,例如,噪声抑制或声音定位。高达512 KB片上闪存和160 KB SRAM为代码和数据提供充足的存储空间。 新系列微控制器还集成真随机数发生器,让联网智能设备等注重安全应用的开发变得更容易。STM32L462还进一步加强了安全设备开发支持,集成一个硬件AES-256加密算法加
[单片机]
基于AT89C51SND1C单片机的MP3播放器设计
引言 MP3作为高质量音乐压缩标准,正在进入越来越多人的生活,给数字音频工业带来了强劲的冲击。MP3使用此技术可以获得较大的音乐压缩比,还可以得到较高的音乐回放质量,比如将CD格式的音乐数据压缩成MP3格式,音效相差无几,文件大小至少可以压缩12倍。 正是由于MP3音乐的较小数据量和近似完美的播放效果,使得以MP3为后缀的音乐文件在网络上的传输得以实现。当前MP3播放器正朝着功能强大、外观丰富、价格便宜的方向发展,这里提出一种基于AT89C51SND1C单片机的MP3播放器设计方案。 1 MP3编码简介 MP3是MPEG Layer III(第3层音频编码标准)的缩写,图1为MP3编码器内部原理框图。它是一种超级声音文件的压缩
[单片机]
基于AT89C51SND1C<font color='red'>单片机</font>的MP3播放器设计
MSP432 MCU 提供多个实时操作系统 (RTOS) 解决方案
当你需要提升产品性能时,你也许会考虑将你现有MSP430 MCU设计移植到TI全新高性能MSP432 MCU平台上。或者,当你需要降低产品功耗时,你也许会考虑将现有的ARM设计移植到我们全新的低功耗MSP432 MCU平台上。用32位ARM系统进行开发时通常需要立即应对多个操作—在这种情况下,实时操作系统 (RTOS) 会派得上用场。 MSP432 MCU提供与数个TI RTOS解决方案(其中包括TI-RTOS和ENergia MT)和第三方RTOS解决方案(其中包括FreeRTOS,ARM CMSIS-RIX和Micrium-OS)的兼容性。 由于无需从头开始创建基本系统软件函数,RTOS的使用可以加快开发进度,并且可以
[单片机]
MSP432 <font color='red'>MCU</font> 提供多个实时操作系统 (RTOS) 解决方案
什么是GD32 MCU读保护?
如今电子产品市场风云变幻,暗流汹涌,有没有小伙伴遇到自己费了大力气写出来的代码,很容易就被别人“借鉴”了,真的是让闻者伤心,听着落泪啊。 那有没有什么方法可以防止别人将你的代码从MCU读出来呢?答案当然是肯定的,GD32 MCU全系列都有“读保护”功能,我们以GD32F30x系列为例,来看下用户手册中的选项字节的介绍: 我们可以看到,地址0x1fff f800存储的是安全保护值,也就是我们所说的读保护。当该值为0xA5的时候,MCU处于无保护状态,此时可以通过Jlink、GDlink配合一些上位机比如Jflash、GDlink Programmer就可以读出,当然,通过串口ISP也可以读出代码;当读保护值为非0xA5时,
[单片机]
什么是GD32 <font color='red'>MCU</font>读保护?
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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