51单片机定时器实验
实践内容:
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单片机定时器实验相关推荐
- 51单片机定时器实验(汇编)
基于AT89C51的定时器实验,汇编语言,分享出来是希望各位能共同学习.附上注释希望能认真研究,若有错误请指出,谢谢. 一.实验目的 掌握单片机定时器的使用方法. 掌握中断的使用方法. 二.实验内容 ...
- 51单片机汇编语言实验(三)-----定时/计数器实验(附参考代码及注释)
本系列共6篇文章,本文作为本系列的第三篇文章,介绍实验三 :定时/计数器实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: --------------------------- ...
- 51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)
本系列共6篇文章,本文作为本系列的第五篇文章,介绍实验五 :A/D 0809模数转换和DA0832数模转换实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: ---------- ...
- c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)
51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...
- 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间
基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...
- 51单片机定时器(T0/T1)的使用与配置流程
第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...
- 51单片机定时器的查询和进入中断处理
51单片机定时器可用两种方式处理:查询和进入中断处理. 1.查询方式 void Init_T0 (void) 定时器初始化 { TMOD = 0x01;//计时器模式 TH0 = (65535-650 ...
- 51单片机定时器秒计数时钟+Proteus仿真
51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...
- 51单片机定时器初值计算以及初值计算软件
51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...
最新文章
- 【Qt】Qt再学习(四):Editable Tree Model Example
- Spark组件和术语定义
- 一文看懂芯片测试产业
- ASP.NET常被忽视的一些细节
- C语言-动态创建二维数组
- PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数
- django14:CBV加入装饰器
- 论文浅尝 | 引入“引用”的语言模型
- 【BAT面试现场】如何判断一个数是否在40亿个整数中?
- android日志统计管理,时间日志app下载-时间日志(时间统计管理)下载v1.1.1 安卓版-西西软件下载...
- Python教学视频(七)分支结构
- faststone capture 屏幕录像没有声音
- 基于selenium的python浏览器脚本制作教程
- 2010最新***工具包
- 【Paper】DeepConvLSTM:Deep Convolutional and LSTM RNN for Multimodal Wearable Activity Recognition
- 计算机里的游戏怎么输入,如何输入对号(对号怎么打?电脑上和手机分别怎么打?)...
- mybaties学习笔记
- 零基础如何速成插画?插画入门教程分享!
- 【手绘集】我的手绘集
- android图片做平移动画,Android中用Matrix实现ImageView里的图片平移和缩放动画
热门文章
- 《SPRING技术内幕:深入解析SPRING架构与设计原理(第2版)》
- designer打开报错 qt_无法启动 Maya 集成的 qt designer 的解决方法和原因 以及 中英文切换...
- 《C/C++ 面试 100 例》(十五)临界区
- Linux----临界区解释
- 毕业设计 单片机超市收银机控制系统
- DELL XPS13-9360 安装ubuntu16.04+win10双系统
- Apache Kafka - 理解Kafka内部原理
- 作为一个领导,最看重下属什么?
- linux访问oracle配置,Linux下配置Oracle监听器
- Java(Swing)代码实现选择截屏