实践内容:
1.修改电路,P2.1接LED,P3.4接按键
2.要求在Proteus中设计硬件电路,单片机晶振设置为11.0596MHz
3.编写程序实现如下功能:
当P3.4引脚的电平连续发生5次负跳变,单片机P2.1引脚所接的LED灯亮3s灭1s,循环5次后停止,数码管显示灯亮时间。
要求用定时中断和计数中断实现。在Proteus中加载程序代码并运行仿真。

#include<reg52.h>
sbit P34 = P3^4;
sbit led = P2^1;
unsigned char i,count;
unsigned char jinzhi;
unsigned char code discode[12]={0x76,0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned char code discodey[12]={0x89,0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void main(){led = 0;TMOD= 0x06;TL0 = 0xfb;TH0 = 0xfb;count = 0;jinzhi=0;ET0 = 1;EA = 1;TR0 = 1;while(1);
}void time0_int(void) interrupt 1{TMOD = 0x01;TL0 = 0x00;TH0 = 0xDC; ET0 = 1;EA = 1;TR0 = 1;if(count<5){i++;if(i==1&&jinzhi==0){led = 1;P1 = discodey[1];} else if(i==100&&jinzhi==0){i=0;P1 = discodey[2];jinzhi = 1;}else if(i==100&&jinzhi==1){P1 = discodey[3];}else if(i==200){led=0;count++;jinzhi = 0;P1=discodey[4];}}
}

问题讨论

定时器4种模式的区别是什么?模式2有何特殊性?

模式0是一个13位的定时器/计数器。在模式0状态下,16位寄存器(TH0和TL0)只用了其中的13位,包括TL0的低5位和TH0的8位,TL0的高3位未用。
模式1是一个16位的定时器/计数器。上图所示为模式1的逻辑电路结构图。
在该模式下,TH0和TL0对应的16位全部参与计数运算。当TH0和TL0计数满溢出时由硬件自动将TF0置位并申请中断,同时16位加1计数器继续从0开始计数。
在定时工作方式,定时时间t对应的初值为初值X = 216 – t × fosc/12
在计数工作方式,计数长度最大为216 = 65536(个外部脉冲)
工作模式3对T0和T1来说大不相同。T0设置为模式3时,TL0和TH0被分成两个相互独立的8位计数器,其中TL0可工作于定时器方式或计数器方式,而TH0只能工作于定时器方式。

特殊:在模式2中,只有TL0用作8位计数器参与脉冲计数工作,TH0不参与计数,只用来保存初值。
该模式可省去软件中重装常数的语句,能够产生相当精确的定时时间,所以适合作为串行口的波特率发生器。

51单片机定时器实验相关推荐

  1. 51单片机定时器实验(汇编)

    基于AT89C51的定时器实验,汇编语言,分享出来是希望各位能共同学习.附上注释希望能认真研究,若有错误请指出,谢谢. 一.实验目的 掌握单片机定时器的使用方法. 掌握中断的使用方法. 二.实验内容 ...

  2. 51单片机汇编语言实验(三)-----定时/计数器实验(附参考代码及注释)

       本系列共6篇文章,本文作为本系列的第三篇文章,介绍实验三 :定时/计数器实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: --------------------------- ...

  3. 51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)

       本系列共6篇文章,本文作为本系列的第五篇文章,介绍实验五 :A/D 0809模数转换和DA0832数模转换实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: ---------- ...

  4. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  5. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

  6. 51单片机定时器(T0/T1)的使用与配置流程

    第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...

  7. 51单片机定时器的查询和进入中断处理

    51单片机定时器可用两种方式处理:查询和进入中断处理. 1.查询方式 void Init_T0 (void) 定时器初始化 { TMOD = 0x01;//计时器模式 TH0 = (65535-650 ...

  8. 51单片机定时器秒计数时钟+Proteus仿真

    51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...

  9. 51单片机定时器初值计算以及初值计算软件

    51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...

最新文章

  1. 【Qt】Qt再学习(四):Editable Tree Model Example
  2. Spark组件和术语定义
  3. 一文看懂芯片测试产业
  4. ASP.NET常被忽视的一些细节
  5. C语言-动态创建二维数组
  6. PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数
  7. django14:CBV加入装饰器
  8. 论文浅尝 | 引入“引用”的语言模型
  9. 【BAT面试现场】如何判断一个数是否在40亿个整数中?
  10. android日志统计管理,时间日志app下载-时间日志(时间统计管理)下载v1.1.1 安卓版-西西软件下载...
  11. Python教学视频(七)分支结构
  12. faststone capture 屏幕录像没有声音
  13. 基于selenium的python浏览器脚本制作教程
  14. 2010最新***工具包
  15. 【Paper】DeepConvLSTM:Deep Convolutional and LSTM RNN for Multimodal Wearable Activity Recognition
  16. 计算机里的游戏怎么输入,如何输入对号(对号怎么打?电脑上和手机分别怎么打?)...
  17. mybaties学习笔记
  18. 零基础如何速成插画?插画入门教程分享!
  19. 【手绘集】我的手绘集
  20. android图片做平移动画,Android中用Matrix实现ImageView里的图片平移和缩放动画

热门文章

  1. 《SPRING技术内幕:深入解析SPRING架构与设计原理(第2版)》
  2. designer打开报错 qt_无法启动 Maya 集成的 qt designer 的解决方法和原因 以及 中英文切换...
  3. 《C/C++ 面试 100 例》(十五)临界区
  4. Linux----临界区解释
  5. 毕业设计 单片机超市收银机控制系统
  6. DELL XPS13-9360 安装ubuntu16.04+win10双系统
  7. Apache Kafka - 理解Kafka内部原理
  8. 作为一个领导,最看重下属什么?
  9. linux访问oracle配置,Linux下配置Oracle监听器
  10. Java(Swing)代码实现选择截屏