一.实验目的

1.掌握51单片机定时器工作原理。

2.掌握51单片机中断系统工作原理。

3.掌握定时器初始化编程。

4.掌握中断程序的编写和调试。

二.实验设备和器件

1.KEIL软件

2.PROTEUS仿真软件

3.伟福实验箱

三.实验内容

(1)编程实现:在单片机外中断0引脚接一个单脉冲源作为外部输入信号,通过发光二极管显示中断次数,发光二极管初始状态为全灭

  • 电路图:

  • 代码:

#include<reg52.h>

#include<intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar b=0;

void delay()//延时函数

{

uint a=30000;

while(a--)_nop_();

}

void main()//主函数

{

P0=0xff; //初始化灯

INT0==1;//打开外部中断0

EA=1;   //开总中断

EX0=1;   //允许中断0

IT0=1;  //设置外部中断0边沿触发

while(1);

}

void srv_INT0() interrupt 0    //中断服务程序

{

b=b+1;

P0=0xff-b;

delay();

}

  • 分析:

1、外部中断0为边沿触发,则初始化时需要将IT0置1;

2、在proteus仿真中,因为低电平灯才会亮,则P0不能直接等于计数的b,需要用0xff-b,才能是相应的灯亮灭

(2)模拟一个交通灯时序,要求绿灯6s,红灯4s,黄灯2s,循环实现

  • 电路图:

  • 代码:

#include <reg51.h>

#include <intrins.h>

void delay1s(unsigned char k);

void main()

{

TMOD =0x01; //定时器工作方式1

TH0=0x3C;

TL0=0xB0;//定时器初值15536,定时100ms

while(1)

{

P0=0xfe; //green ,D0作为绿灯

delay1s(6);//延时6s

P0=0xfd;   //red ,D1作为红灯

delay1s(4);//延时4s

P0=0xfb;   //yellow,D2作为黄灯

delay1s(2);//延时2s

}

}

void delay1s(unsigned char m)  //定时器0采用查询的方式

{

unsigned char k1,k2;

TH0=0x3C;TL0=0xB0;//2^16-100x10^3/2=65536-50000=15536-3cb0,定时100ms

TR0=1;//开启定时器0

for(k1=0;k1<m;k1++) // 定时每次是1s,根据m值的不一样,决定总定时时间

{

for(k2=0;k2<10;k2++)//定时器0定时100ms,循环10次,1s

{

while(!TF0);   //查询方式

TF0=0;   //清除

TH0=0x3C;TL0=0xB0;

}

}

}

  • 分析:

1、定时器处理方式有中断、查询

2、实验箱设置的系统时钟为12MHz--1us

Proteus仿真设置的系统时钟为6MHz--2us

3、定时器0定时100ms,循环10次之后定时1s,根据相应的m值,决定延时多长时间

(3)编程实现:在实验2基础上,加一个外中断请求信号来处理紧急情况,当外中断请求发生时,进入紧急状态,红灯闪烁5s,之后退出,继续原来的状态执行。

  • 电路图:

  • 代码:

#include <reg51.h>

#include <intrins.h>

void delay1s(unsigned char k);

void main()

{

TMOD =0x01;

TH0=0x3C;

TL0=0xB0;

IE=0x81;  //允许总中断,允许外部中断0

TCON=0x01; //允许外部中断0

while(1)

{

P0=0xfe; //green

delay1s(6);

P0=0xfd;   //red

delay1s(4);

P0=0xfb;   //yellow

delay1s(2);

}

}

void int_0(void) interrupt 0

{

while(1)

{

P0 =0xfd;

delay1s(5);

P0=0xff;

delay1s(5);

}

}

void delay1s(unsigned char m)  //定时器0采用查询的方式

{

unsigned char k1,k2;

TH0=0x3C;TL0=0xB0;//2^16-100x10^3/2=65536-50000=15536----3cb0,定时00ms

TR0=1;//开启定时器0

for(k1=0;k1<m;k1++) // 定时每次是1s,根据m值的不一样,决定总定时时间

{

for(k2=0;k2<10;k2++)//定时器0定时100ms,循环10次,1s

{

while(!TF0);   //查询方式

TF0=0;   //清除

TH0=0x3C;TL0=0xB0;

}

}

}

  • 分析:

1、其他同实验二

2、用到外部中断0,需要允许中断0,当执行中断0时,红灯持续闪烁

单片机实验-定时中断相关推荐

  1. PLC单片机实验开发设备

    在单片机的应用中,PLC控制系统已经成为了其组成中的重要组成部分.单片机主要利用PLC必备的编程接口来进行通信,使用LCD作为用户的界面,界面中可以显示出PLC的工作状态.工艺参数,也可以使用相应的按 ...

  2. PLC单片机实验开发系统装置QY-DPJ12

    一.装置简介 QY-DPJ12PLC单片机实验开发系统综合装置可完成51/96/8088/8086等CPU的单片机.微机的全部软.硬件实验.在单片机仿真实验系统的基础上,增加8088十六位微机原理和接 ...

  3. Prouteus 定时中断 控制流水灯的实现

    Prouteus 定时中断 控制流水灯的实现 我们一般51单片机使用的流水灯–跑马灯绝大多多数都是通过–软件Delay延时实现,但是这样会非常占用MCU时间,MCU就没有太多时间来处理其他的事情了!! ...

  4. 单片机综合实验 - 02 | 中断与定时/计数器实验

    一.实验目的和任务 1.掌握80C51单片机外部中断的初始化及中断服务子程序设计方法. 2.掌握80C51单片机定时器/计数器的程序控制方法. 二.实验原理简介 中断是指在突发事件到来时先中止当前正在 ...

  5. 51单片机实验 LED半秒闪烁 定时器0方式2 中断实现

    51单片机实验 LED半秒闪烁 定时器0方式2 中断实现 实验目的: P1.0接一个发光管,实现亮半秒灭半秒, 要求使用定时器0工作方式2,中断实现. C语言代码: #include "at ...

  6. 单片机实验4 外部中断EX0 EX1

    单片机实验4 实验内容 利用AT89C51系列单片机为CPU,设计电路, 连接4位数码管,并连接两个按键,按第一个按键数码管显示值增加1,按另外一个按键数码管显示值减1.要求线路连接正确,包含晶振电路 ...

  7. 入门必做的51单片机实验2----》利用外部中断的方法来控制发光二极管和共阴极数码管显示十六进制的0到F

    嘿!各位中午好! 我是肖肖的猪会飞 欢迎收看肖小猪频道 刚刚做了个单片机实验->ヽ( ̄ω ̄( ̄ω ̄")ゝ 分享一下 文章目录 前言 一,实验题目 二,程序 三,仿真效果 前言 此实验为 ...

  8. 单片机:定时计数器的相关实验

    标题 单片机:定时计数器的相关实验 各位大神们,我想让LED亮,但是Proteus运行时一直是下面是蓝的上面是红的,导致LED不能发亮,想知道该怎么办??? 欢迎使用Markdown编辑器 你好! 这 ...

  9. c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...

    C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟 学 号: 班 级: 自动化10班 姓 名: 张 指导老师: 胡 2012.12 单片机核心板实验要求 流水灯实验 实验目的: 简单I/O引 ...

最新文章

  1. 如何写出一个confirm组件
  2. python比赛2020_2020蓝桥杯python组备战方法
  3. 二层交换机的六条安全秘诀
  4. Android的Style的使用
  5. 使用OpenCV检测图像中的矩形
  6. 以操作系统的角度述说线程与进程
  7. ajax中dom,在(jQuery)ajax请求中获取当前脚本DOM对象
  8. apt update无法连接上 127.0.0.1:10808
  9. c++ public 函数名相同_C++虚函数、重载、覆盖
  10. js中用script 嵌套script块
  11. halcon窗体的移动和缩放_halcon与C#联合编程之鼠标控制图片缩放,拖动,roi
  12. Kano模型在用户调研中的应用——CRM工具调研实例
  13. indesign自学教程,如何保存文档?
  14. 三星t5 android,三星T5首测:一款秒杀SATA SSD的移动SSD
  15. oracle client 客户端 安装 oracle客户端安装
  16. 递归实现指数型枚举(递归)
  17. Facebook三大愿景和五大核心价值
  18. Qt 弹出对话框选择图片并显示
  19. 电子凸轮追剪曲线生成算法 理解后可转成其他品牌PLC或任何一种编程语言
  20. 《智能路由器开发指南》核心笔记(全)——转载的

热门文章

  1. Hive SQL的编译过程
  2. 自然场景人脸检测技术实践
  3. mikechen详谈架构师成长之3大步骤
  4. 论文浅尝 - ICLR2020 | 知道什么、如何以及为什么:基于方面的情感分析的近乎完整的解决方案...
  5. 论文浅尝 | Iterative Cross-Lingual Entity Alignment Based on TransC
  6. transformer xl在文本生成上面的应用
  7. 商汤科技2020数据分析师0820笔试题目整理
  8. java教程-scala教程-带你从菜鸟入门
  9. 第一章 Linux是什么
  10. ansible编译httpd playbook示例