在本文中,我们用定时器0来产生方波信号,包含两个实验,实验1产生一个频率为10kHz的方波信号,实验2产生一个频率为100Hz的方波信号。

实验1

实验1 中定时器0的初始化代码如下所示。

void init_T0(void)
{TMOD|= 0x02;    //使用方式2,8位自动重装载定时器          TH0=256-50;         //给TH0和TL0赋初值,计数周期为50个机器周期TL0=256-50;       //采用12MHz的晶振,计时时长为50usEA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}

代码中将定时器0设置为方式2,8位自动重装载定时器,TL0用来计数,TL0的溢出,不仅置位TF0,而且将TH0的内容重新装入TL0,TH0内容由初始化时预置为256-50,即计数周期为50个机器周期,外部晶振为12MHz,机器周期为1us,则计数周期为50us,采用中断对定时器0的溢出事件进行处理,中断代码如下所示。

void T0_ISR(void) interrupt 1 using 1
{PULSE=~PULSE;        //输出的值取反
}

在中断函数中只改变了PULSE的状态,程序中PULSE是P10引脚的宏定义。

烧写之后可以看到实验现象,用示波器测量P10的输出信号,从示波器中可以看出P10输出周期为100us的方波,即频率为10KHz的方波。

实验2

实验2中定时器的初始化代码如下所示

void init_T0(void)
{TMOD = 0x00;    //使用方式0,13位定时器          TH0=(8192-5000)/32;    //给TH0和TL0赋初值,计数器由3192开始计数,到8191溢出TL0=(8192-5000)%32;EA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}

在这个实验中,采用定时器0的方式0进行定时。方式0为13位计数器,由TL0的低5位和TH0的8位构成。TL0的低5位溢出时向TH0进位。TH0计数溢出置位TCON中的溢出标志位TF0。程序中由3192开始计数,计数到8191溢出。计数周期为5000个机器周期,即为5ms。因此产生脉冲的周期为10ms,脉冲频率为100Hz。溢出中断代码如下所示。

void T0_ISR(void) interrupt 1 using 1
{TH0=(8192-5000)/32;         //给TH0和TL0重新赋值TL0=(8192-5000)%32;PULSE=~PULSE;        //PULSE的值取反
}

在中断中,重新赋值TH0和TL0,并改变PULSE的状态。

烧写之后可以看到实验现象,用示波器测量JP1上的P10的输出信号,从示波器中可以看出P10输出周期为10ms的方波,即频率为100Hz的方波。

51单片机(二十)—— 定时器产生方波信号相关推荐

  1. 51单片机中的定时器

    文章目录 1 51单片机中的定时器介绍 1.1 定时器的初步认识 1.2 定时器的寄存器 1.3 使用定时器的方法 1.4 定时时间的计算 2 定时器模式1 2.1 定时器模式1原理分析 2.2 使用 ...

  2. 《电子DIY》之《单片机实践项目》之(51单片机)proteus中带编码信号的电机的详细讲解及电路图绘制(motor encoder)

    此课程主要讲解如何使用51单片机进行实战应用,分为多次课,每次课都会分别围绕一个课程设计或毕业设计(实践项目)展开.手把手叫你学51单片机."Proteus仿真","电子 ...

  3. 51单片机 (十二)PWM

    什么是PWM ​ 脉冲宽度调制(PWM),是英文"Pulse Width Modulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技 ...

  4. 51单片机(十二)—— 单片机复位

    一.复位介绍 复位为单片机提供了一条从已知初始条件启动处理的途径.复位期间,大部分控制和状态寄存器被迫使用初始值,单片机的外围模块被禁止,单片机用于复位的复位源有加电复位.外部RESET管脚复位.看门 ...

  5. 51单片机学习-5定时器与中断

    5 定时器与中断 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github ...

  6. 51单片机中断与定时器计数器,基于普中科技HC6800-ESV2.0

    目录 寄存器 置位复位 中断系统 中断概念 中断系统 中断系统构造 外部中断 计时器.定时器中段 串口中断 中断允许控制(控制中断方式) 总中断 各个中断 中断请求标志(控制触发方式) 外部中断触发方 ...

  7. 51单片机中断与定时器计数器,基于普中科技教学视频学习记录

    目录 寄存器 置位复位 中断系统 中断概念 中断系统 中断系统构造 外部中断 计时器.定时器中段 串口中断 中断允许控制(控制中断方式) 总中断 各个中断 中断请求标志(控制触发方式) 外部中断触发方 ...

  8. arduino与51单片机的十大区别,哪个好学?

    在DF创客社区上很多初次学习arduino和单片机的同学都会问同一个问题,那就是arduino与51单片机有什么区别?arduino和51单片机哪个性能更强? 针对这个问题我们先来了解下arduino ...

  9. 51单片机c语言定时器程序,51单片机定时器设置入门与程序解析

    89C51单片机有两个计数器T0和T1,每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是216=65536,记住是从0-65535. 其次.提供给定时器 ...

最新文章

  1. Django项目配合sentry实现浅析
  2. linux命令nohup
  3. NTU 课程笔记:ERIC(3) 开展研究
  4. SAP Spartacus component-wrapper自定义指令的实现
  5. php取掉字符串第一位支付,php怎样去掉字符串中的第一个字符
  6. Vim文本编辑器 指令簿(二)
  7. js脚本点击按钮显示文字_JSBOX脚本聊天神器
  8. 减治法解决俄式乘法问题(JAVA)
  9. 计组之中央处理器:2、指令周期数据流(指令周期、机器周期、时钟周期、取指周期、间址周期、执行周期、中断周期、单指令周期、多指令周期、流水线方案)
  10. S2SH 第一次整合的经历
  11. debian10安装mysql_ECS Debian 系统安装mysql数据库的具体操作
  12. python的特殊方法介绍
  13. 基于相关向量机RVM的分类算法
  14. 6678与FPGA PCIE调试
  15. ajax+php 实现即时聊天
  16. PR中我的常用快捷键
  17. Batch update returned unexpected row count from update
  18. 最近项目上遇到的问题~
  19. 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
  20. ctfshow-菜狗杯-web(一)

热门文章

  1. 公钥、私钥、数字签名和数字证书简介
  2. 推荐-最新GBA游戏下载,不用注册直接下载!(1)
  3. ※C++随笔※=☆C++基础☆=※№如何简单解析协议Demo
  4. 问道手游安卓服务器维护公告,问道手游3月9日维护公告(所有公测服务器)
  5. 自定义View实现网易云音乐留声机效果(代码区)
  6. AZURE SQL 数据库/托管实例查询当前模式下用户权限汇总
  7. 如何防止你的 jar 被反编译?
  8. 使用spleeter对音乐分轨(人声伴奏 分离)
  9. linux查看根目录下所有文件夹大小的方法
  10. 23个Linux实际开发常用命令