单片机 外部中断实验 实验三

news/2024/11/16 0:08:48/

实验三    外部中断实验

  • 实验目的

1、掌握MCS-51单片机外部中断的原理。

2、掌握MCS-51单片机外部中断程序的设计方法及其过程。

3、掌握MCS-51单片机外部中断的电路应用。

  • 实验任务

利用外部中断方式,实现通过按键切换流水灯的流向。流水灯形式自定,按键按一次,流水灯的流向改变一次。

  • 实验原理

当CPU正在处理某件事情(如正在执行主程序)时,单片机外部或内部发生的某一事件(如外部设备产生的一个电平变化或脉冲跳沿的变化,或者是片内事件的发生,如计数器的计数溢出等)请求CPU迅速去处理,于是CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。中断服务处理完该事件后,再回到原来被终止的地方,继续原来的工作(如继续执行被中断的主程序),这称为中断。

80C51的中断系统有5个中断源,如图3-1所示。

图3-1  中断系统结构框图

51单片机有/INT0和/INT1两条外部中断请求输入线,引脚P3.2和P3.3。

两种触发方式:

电平触发及跳变(边沿)触发。由特殊功能寄存器TCON来管理。

IT0(IT1):外部中断0(或1)触发方式控制位。IT0(或IT1)被设置为0,电平触

发方式;IT0(或IT1)被设置为1,边沿触发方式。

IE0(IE1):外部中断0(或1)的中断请求标志位。

中断允许控制:

EA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。

EX0:外部中断 INT0的中断允许位。

EX1:外部中断 INT1的中断允许位。

电路原理图如图3-2所示。

图3-2 外部中断实验电路

注释:上面的原理是课程设计给的模板,不是我写的,仅供参考,如有相同就是参考的,参考书:单片机原理与接口技术实验指导书、单片机原理与接口技术

  • 程序流程图

图一 程序流程图

  • 实验结果及分析总结

图二 第一种流水灯形态

如图二所示,第一按键,按下时led灯依次闪烁的流向是从左到右。

图三 第二种流水灯形态

如图三所示,第二次按键按下,左边四个led灯亮起,右边四个led灯灭。

图四 第三种流水灯形态

如图四所示,第三次按键按下,led灯流向,由D1流向D4之后从D8流向D4,以D4为中心向中靠拢。

图五 第四种流水灯形态

如图五所示,第四次按下按键,两个led亮,并依次从左往右闪烁。

图六 程序编写内容

如图六所示,使用keil uvison5编写的程序。本次实验实现的是四种形态的流水灯。

  • 程序附录

    void delay(uint num)
    {uint i, j;for (i = num; i > 0; i--)for (j = num; j > 0; j--);
    }void main()
    {IT0 = 1;EA = 1;EX0 = 1;while (1){if (AddNum == 0){P1 = 0xfe; //1111 1110delay(100);P1 = 0xfd; //1111 1101delay(100);P1 = 0xfb; //1111 1011 delay(100);P1 = 0xf7; //1111 0111delay(50);P1 = 0xef; //1110 1111delay(100);P1 = 0xdf; //1101 1111 delay(100);P1 = 0xbf; //1011 1111delay(100);P1 = 0x7f; //0111 1111 delay(100);}if (AddNum == 1){P1 = 0x0f; //1111 0000delay(500);P1 = 0xff; //1111 1111delay(500);}if (AddNum == 2){P1 = 0x7f; //0111 1111 delay(100);P1 = 0xbf; //1011 1111delay(100);P1 = 0xdf; //1101 1111 delay(100);P1 = 0xef; //1110 1111delay(100);P1 = 0xfe; //1111 1110delay(100);P1 = 0xfd; //1111 1101delay(100);P1 = 0xfb; //1111 1011 delay(100);P1 = 0xf7; //1111 0111delay(50);       }if (AddNum == 3){P1 = 0x3f; //0011 1111 delay(100);P1 = 0xcf; //1100 1111delay(100);P1 = 0xf3; //1111 0011delay(100);P1 = 0xfc; //1111 1100delay(100);}}
    }void INT_0(void) interrupt 0
    {AddNum++;if (AddNum > 3){AddNum = 0;}
    }

    学习过程中,参考资料网上的,如有侵权删。如有需要自行下载源文件,里面code文件是程序代码,还有一个仿真文件。


http://www.ppmy.cn/news/1547304.html

相关文章

Rust实战项目与未来发展——跨平台应用开发项目实践

第十章:实战项目与未来发展 第一节:跨平台应用开发项目实践 随着移动设备、桌面设备和Web平台之间界限的模糊,跨平台应用开发已成为开发者日常工作中不可或缺的一部分。随着技术栈的不断演进,开发者有更多选择来构建高效、易维护…

[AI] 从游戏到现实:强化学习的应用与挑战

随着AI技术的快速发展,强化学习(Reinforcement Learning, RL)逐渐成为人工智能领域的一个重要分支。尤其是在游戏领域,RL展示了极大的潜力:它可以在没有预先标记的数据情况下,通过智能体的互动和反馈自主学习。然而,强化学习的影响力远远超越了游戏本身,它的理念和方法…

风险数据集市整体架构及技术实现

引言 在当今大数据时代,风险数据集市作为金融机构的核心基础设施之一,扮演着至关重要的角色。它不仅为银行、保险等金融机构提供了全面、准确的风险数据支持,还帮助这些机构实现了风险管理的精细化和智能化。本文将深入探讨一种基于大数据La…

Leetcode 791 Custom Sort String

题意:给定两个字符串,第一个字符串order,给定字符出现的先后顺序。 第二个字符串需要按照第一个字符串的顺序重新排列。没有在order字符串中出现的数组随意排列 https://leetcode.com/problems/custom-sort-string/ 解答:先根据…

IP数据云 识别和分析tor、proxy等各类型代理

在网络上使用代理(tor、proxy、relay等)进行访问的目的是为了规避网络的限制、隐藏真实身份或进行其他的不正当行为。 对代理进行识别和分析可以防止恶意攻击、监控和防御僵尸网络和提高防火墙效率等,同时也可以对用户行为进行分析&#xff…

【系统设计】理解带宽延迟积(BDP)、吞吐量、延时(RTT)与TCP发送窗口的关系:优化网络性能的关键

在设计和优化网络性能时,理解 带宽延迟积(BDP)、吞吐量、延时(RTT) 和 TCP发送窗口 之间的关系至关重要。这些概念相互影响,决定了网络连接的性能上限,尤其是在高带宽、高延迟的环境中&#xff…

javascript实现sha512和sha384算法(支持微信小程序),可分多次计算

概述: 本人前端需要实现sha512和sha384计算的功能,最好是能做到分多次计算。 本文所写的代码在现有sha512和sha384的C代码,反复测试对比计算过程参数,成功改造成sha512和sha384的javascript代码,并成功验证好分多次计算…

如何查看本地的个人SSH密钥

1.确保你的电脑上安装了 Git。 你可以通过终端或命令提示符输入以下命令来检查: git --version 如果没有安装,请前往 Git 官网 下载并安装适合你操作系统的版本。 2.查找SSH密钥 默认情况下,SSH密钥存储在你的用户目录下的.ssh文件夹中。…