1. 外部中断

1.1统计 INT0 的脉冲触发的个数,满10个,则停止统计将P1.0清0

ORG 0000H
LJMP START
ORG 0003H
LJMP EXINT0
ORG 0100H
START: SETB IT0; set TCONSETB EA; set IESETB EX0;MOV R0,#10SETB P1.0
HERE:SJMP HEREEXINT0:DJNZ R0,QUITCLR P1.0CLR EX0    ;关闭INT0中断
QUIT:RETI
END
ORG 0000H
LJMP START
ORG 0003H
LJMP EXINT0
ORG 0100H
START: MOV A,#0SETB IT0; set TCONSETB EA; set IESETB EX0;SETB P1.0
SJMP $EXINT0:INC ACJNE A,#10,QUITCLR P1.0CLR EX0    ;关闭INT0中断
QUIT:RETI
END

1.2 某大楼内设置了4个监测点,2个监测点安装了2个烟雾检测器,另2个监测点安装了2个煤气检测器,监控室由4个指示灯分别显示每个检测点的状态。当有意外发生时,相应的指示灯亮,发出报警。设计一个以89C51单片机为核心的检测系统实现上述检测功能。

ORG 0000H
LJMP START
ORG 0003H
LJMP EXINT0
ORG 0013H
LJMP EXINT1
ORG 0100H
START: SETB EASETB ET0SETB ET1SETB EX0SETB EX1MOV P1,#0FFH
SJMP $EXINT0:JB P1.0,NEXT1CLR P1.4NEXT1:JB P1.1,QUITCLR P1.5LJMP QUIT
EXINT1:JB P1.2,NEXT2CLR P1.6NEXT2:JB P1.3,QUITCLR P1.7LJMP QUIT
QUIT:RETIEND

2.定时/计数功能

对机器周期进行计数,每个机器周期计数器+1,直到计数器溢出

写入控制字的次序:

  • 把工作方式控制字写入TMOD寄存器;TMOD 不能位选
  • 把定时/计数初值装入TL0、TH0(或TL1、TH1);
  • 置位ET0(或ET1),允许定时器/计数器中断;
  • 置位EA开放总中断;
  • 置位TR0(或TR1)以启动计数

2.0 工作方式0

2.1 工作方式1

2.1.0 设单片机的晶振频率为11.0592MHz,使用T1方式1产生频率为131Hz的方波型音频信号(低音的Do),并由P1.0输出给与其相连的喇叭。

ORG 0000H
LJMP START
ORG 001BH
LJMP INTT1
ORG 0100H
START: MOV TMOD,#00010000BSETB EASETB ET1MOV TH1,#0F2HMOV TL1,#42HSETB TR1
SJMP $INTT1:CPL P1.0MOV TH1,#0F2HMOV TL1,#42HRETI END

2.2 工作方式2 p160

2.2.1 设系统时钟频率为12MHz,用定时器/计数器T0编程实现从P1.0输出周期为500μs的方波

解:由于时钟频率为12MHZ,机器周期为1µs。 P1.0输出周期为500μs的方波,只需P1.0每250μs取反1次即可。定时/计数器T0选择工作方式2。首先求出定时器T0初值。

因为:t =(2^8-T0初值)× 机器周期

所以,当t = 250μs时,

则:(2^8-T0初值)× 1 × 10^(-6) = 2.5 × 10^(-4)

解得:T0初值 = 6,TH0 = TL0 = 6。

ORG 0000H
LJMP START
ORG 000BH
LJMP INTT0
ORG 0100H
START: MOV TMOD,#00000010BMOV TH0,#06HMOV TL0,#06HSETB ET0SETB EASETB TR0
SJMP $INTT0:CPL P1.0MOV TH0,#06HMOV TL0,#06HRETI END

2.2.2 有一自动罐装药粒系统,每瓶罐装药粒50,每片药粒灌装时产生一个负脉冲送T0计数;每满一瓶,累加器A1,若满100,则由与P1.0口相连的LED给出一个装箱信号,然后停止计数。要求用T0以工作方式2计数。

解:(1)计算计数初值

                设待求的计数初值为X,则:

X 2^8-50

                得:  X=206

                则:  TH0=206TL0206

2TMOD寄存器初始化

ORG 0000H
LJMP START
ORG 000BH
LJMP INTT0
ORG 0100H
START: MOV TMOD,#00000110BSETB EASETB ET0MOV TH0,#206MOV TL0,#206MOV R0,#100SETB TR0
SJMP $INTT0:DJNZ R0,QUITCLR P1.0CLR TR0
QUIT:RETI END
ORG   0000H                ;主程序
LJMP  START
ORG   000BH
LJMP  T0INT
ORG  0100H                 ;初始化
START:MOV    TMOD,#6HMOV    TH0,#206HMOV    TL0,#206HSETB   P1.0SETB   EASETB   ET0MOV    A,#0SETB   TR0
;循环判断
LOOP: CJNE  A, #100, NEXTCLR    P1.0   ;亮灯CLR    TR0   ; 停止计数NEXT:SJMP LOOP
;中断程序
T0INT: INC A              ;计数+1RETI
END

中断系统与定时/计数计时器相关推荐

  1. 【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍

    80C51中断系统 结构 80C51有5个中断源(89C52有6个),2个优先级,可实现二级中断嵌套 TCON中断标志 IT0(TCON.0),外部中断0触发方式控制位 IE0(TCON.1),外部中 ...

  2. 51单片机—详细(存储器RAM/ROM、引脚、中断系统、定时/计数器、串行口通信)

    目录 一.数据存储器RAM 1.拓展RAM 2.片内256字节 1.高128位(80H~FFH) 2.低128位(00H~7FH) 二.程序存储器ROM 三.引脚 1.4组8位并行I/O口 2.其他引 ...

  3. 80C51的中断系统 - 定时/计数器

    中断系统--80C51单片机学习笔记 中断的概念 中断系统的结构 中断请求标志 1.TCON的中断标志 2.SCON的中断标志位 80C51中断的控制 中断允许控制--IE 中断优先级控制--IP 中 ...

  4. QueryPerformanceFrequency用法--Windows高精度定时计数

    在多核心或多处理器的计算机上,特别是在支持CPU频率动态调整的计算机上,windows系统下的QueryPerformanceFrequency()获取HPET(如果存在)的频率,而QueryPerf ...

  5. 51单片机学习笔记(郭天祥版)(3)——引脚讲解、数码管静态显示、中断系统(外部中断,定时器中断)...

    学习引脚的功能 9引脚 复位管脚,当给2个机器周期(24个时钟振荡周期)的高电平时会复位,单片机正常工作时会给0.5v的低电平 VPD备用电源的输入端,当主电源VCC发生故障降低到某一规定的低电平时, ...

  6. QueryPerformanceFrequency使用方法--Windows高精度定时计数

    在多核心或多处理器的计算机上.特别是在支持CPU频率动态调整的计算机上,windows系统下的QueryPerformanceFrequency()获取HPET(假设存在)的频率,而QueryPerf ...

  7. MCS-51的中断系统

    [说明]本文学习自<单片机原理及应用(张毅刚)> 目录 1 中断的概念 2 MCS-51中断系统的结构 3 中断请求源 4 中断控制 4.1  中断允许寄存器IE 4.2  中断优先级寄存 ...

  8. STC89C52单片机定时器及中断系统的介绍以及代码示例

    目录 一,定时器介绍 二,STC89C52定时器资源 三,定时器框图 四,定时器工作模式 五,中断系统及其流程 六,STC89C52中断资源 七,定时器与中断系统 八,相关寄存器的认识与配置 首先是定 ...

  9. 蓝桥杯单片机比赛学习:6、中断系统之定时器中断的基本原理

    上节我们讲了中断的外部中断,基本的了解了一下中断,这一节我们继续来学习中断系统的定时器中断基本原理,本节很重要无论是在比赛中还是在单片机.嵌入式等的学习上都有着很重要的地位.如对本作者有兴趣可以去我主 ...

最新文章

  1. Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
  2. 操作系统原理:连续的内存分配
  3. 计算机有关的文献检索题目,文献检索第二次计算机检索实习题目(2016.4.10).doc
  4. windeployqt.exe的使用与避坑(windows平台)
  5. 什么是商业智能(BI),以及其与数据分析的区别?
  6. 【经验分享】在研究中,你是否踩过这些工程的“坑”?
  7. MATLAB 检验矩阵中是否有某些元素 对元素统计
  8. getFields和getDeclaredFields
  9. python绘制缓和曲线_CAD绘制缓和曲线说明
  10. ad怎么批量改元器件封装_ad中如何批量修改封装
  11. 朗迪碳酸钙D3颗粒告诉你,为什么补钙要从娃娃抓起
  12. win8改win7 bios设置方法
  13. cpan mysql dbd_安装PERL cpan DBD::mysql错误笔记
  14. C#读取RFID卡号源码
  15. 使用jol如何判断一个对象当前处于哪种锁
  16. JavaScript 精选:哪些能提高开发效率的es6 新语法糖
  17. vue高德地图搜索功能
  18. jsf的初步使用(包括jsf框架的引入、用户登录、自定义表单验证、valueChangeEvent值变更事件处理做的级联下拉框)
  19. 【天光学术】研究生“憋论文”实况:别问,问就是在写论文
  20. 下载安装及编写第一个C语言程序Visual Studio 2019

热门文章

  1. 基于java web的在线电影网_视频点播系统-计算机毕业设计
  2. DxO PhotoLab 4 for Mac(RAW图片处理工具)
  3. pyqt win32发送QQ消息
  4. word操作:如何修改字体(正确、规范、快捷)
  5. Android 蒲公英APP更新
  6. Linux TCP之sack(一)
  7. TCP选项之SACK选项概述
  8. 1.DLL注入相关概念
  9. HC-SR04超声波模块的使用(stm32f103c8t6/HAL)(超详细)
  10. 关于“源代码未编译“问题的回复