找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14673|回复: 0
收起左侧

单片机外部中断实验报告

[复制链接]
ID:264974 发表于 2017-12-21 19:14 | 显示全部楼层 |阅读模式
本帖最后由 时光无痕 于 2017-12-22 20:05 编辑

硬件实验十一 外部中断实验(51/96)
姓名:*     学号:1517623
一、实验要求
用单次脉冲申请中断,在中断处理程序中对输出信号进行反转。

二、实验目的
1、学习外部中断技术的基本使用方法。
2、学习中断处理程序的编程方法。

三、实验电路及连线
0.png
  连线
  连接孔 1
  连接孔 2
  1
  P1.0
  L0
  2
  单脉冲输出
  INT0 (51 系列)
  2
  单脉冲输出
  EINT (96 系列)

四、实验说实明
中断服务程序的关键是:
1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2.必须在中断程序中设定是否允许中断重入,即设置 EXO 位。
3.对于 80C196,要选择相应的中断源,并设置中断屏蔽寄存器的相应位。
本例中使用了 INTO 中断(80C196 为EXTINT 中断),一般中断程序进入时应保护 PSW,
ACC 以及中断程序使用但非其专用的寄存器。本例的中断程序保护了 PSW,ACC 等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。
INTO(P32)端(80C196 为 EINT 端)接单次脉冲发生器。P1.0 接 LED 灯,以查看信号反转.

五 实验框图

0.png +

单片机源程序如下:

  1. COUNT_INT    EQU 30H
  2. LEDVALUE    EQU 31H
  3.     ORG 0000H
  4.     LJMP START
  5.     ORG 001BH
  6.     LJMP Timer1Interrupt

  7. START:
  8.     MOV SP,#60H
  9.     MOV COUNT_INT,#0
  10.     MOV LEDVALUE,#01H
  11.     LCALL InitTimer1

  12. LOOP:
  13.      MOV A,LEDVALUE
  14.      MOV P2,A
  15.     LJMP LOOP

  16. InitTimer1:
  17.     MOV TMOD,#10H;定时器T1为工作方式1,产生50ms定时
  18.     MOV TH1,#3CH
  19.     MOV TL1,#0B0H
  20.     SETB EA
  21.     SETB ET1
  22.     SETB TR1
  23.     RET

  24. Timer1Interrupt:
  25.     PUSH DPH
  26.     PUSH DPL
  27.     PUSH ACC
  28.     MOV TH1,#3CH
  29.     MOV TL1,#0B0H
  30.     ;========================
  31.      INC COUNT_INT
  32.      MOV A,COUNT_INT;每50ms加1,
  33.      CJNE A,#2,Timer1Interrupt_EXIT;100ms
  34.      MOV COUNT_INT,#0
  35.      MOV A,LEDVALUE
  36.      RL A
  37.      MOV LEDVALUE,A
  38. ……………………

  39. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
外部中断.docx (24.59 KB, 下载次数: 18)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表