基于Proteus仿真51单片机外部中断实验

2023-05-16

一、实验目的 
1.进一步熟悉利用 PROTEUS、Keil uVision5 等软件的使用方法。 
2.理解单片机的中断、中断优先级原理及中断过程,掌握中断服务子程序的编写方法。
 
3.熟悉数码管的显示原理。 
二、实验任务 1.基本任务 
已知单片机的 P0 口接了一位七段数码管,当无外部中断(外部中断 0)时,数码
管按 a~g 段依次点亮,不断循环显示;当有外部中断(按钮被按下,P3.2 有下降沿电
压)时,数码管显示状态改为“8”亮灭闪烁显示,亮灭闪烁显示 8 次后,返回主程序
继续按段顺序点亮。请在 Proteus 中画出电路原理图,并编写程序仿真实现上述功能。 
2.拓展任务(若未做,则实验报告也无需体现,以保证实验视频和实验 报告的一致性!)
 
在以上基本任务的基础上,加入一个声光报警器和外部中断 1,当有外部中断 1 时,
系统会产生声光报警。假设外部中断 1 的优先级高于外部中断 0。请在 Proteus 中画出
电路原理图,并编写程序仿真实现上述功能。 


 

#include "stc15.h"  //单片机头文件
#include "intrins.h"  //延时函数左右移函数头文件
unsigned char i;  //定义字符i
void Delay1000ms()		//@11.0592MHz 1000ms延时函数
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 43;
	j = 6;
	k = 203;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
void main()
{ 
	P0=0x00; //单片机自启动时为高电平,需先对P0端置0
	IE0=0;  //防止启动时自动进行一次中断
	IE1=0;  //防止启动时自动进行一次中断
	P0M0=0x00;  //准双向口配置
	P0M1=0x00;  //准双向口配置
	EA=1;  //全局中断使能位使能
	EX0=1;  //外部中断位0中断位使能
	EX1=1;  //外部中断位1中断位使能
	IT0=1; //设置中断0为下降沿触发
	IT1=1;  //设置中断1为下降沿触发
	PX0=0;  //外部中断源0低优先级
	PX1=1;  //外部中断源1高优先级
		while(1)  //死循环
	{
		for(i=0;i<7;i++)  //循环7次使a~g依次点亮
		{    
			Delay1000ms();
		P0=_crol_(0x01,i); //左移函数从0x01开始左移循环7次
		}
	}
}
void INT0_ISR(void) interrupt 0  //外部中断源0的中断服务函数
{   
   Delay1000ms();  //消抖
	 for(i=0;i<8;i++)   //亮灭循环8次
	{
		P0 = 0x7f;  //配置字形8的段码为7f
		Delay1000ms();
		P0 = 0x00;   //使字形8熄灭
		Delay1000ms();
	}
}
void INT1_ISR(void) interrupt 2  //外部中断源1的中断服务函数
{   
	 Delay1000ms();  //消抖
	{
		P07 = 1;  //配置P07端口使声光报警启动
		Delay1000ms();
	}
}


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Proteus仿真51单片机外部中断实验 的相关文章

  • Vmware虚拟机硬盘扩容: Linux下虚拟机硬盘空间扩展及挂载配置

    都是自己使用过程中的小经验 xff0c 分享给大家 希望能互相帮助 进入正题 xff1a 大家是不是会遇到最初分配linux虚拟机硬盘后期不够用的情况 xff0c xff08 因为是我之前用友善之臂的虚拟机配ARM板学习 xff0c 只有2
  • 数据结构之冒泡排序

    文字描述 xff08 以升序为例 依次比较数组中相邻两个元素大小 xff0c 若a i gt a 43 1 xff0c 则交换两个元素 xff0c 两两都比较一遍称为一轮冒泡 xff0c 结果是让最大的元素排至最后重复以上步骤 xff0c
  • 十进制转八进制的方法

    include lt stdio h gt int main int n printf 34 请输入一个十进制的数 xff1a 34 scanf 34 d 34 amp n int i 61 0 int arr 100 while n 61
  • Nodejs之目录介绍及app.js说明

    随时随地阅读更多技术实战干货 xff0c 获取项目源码 学习资料 xff0c 请关注源代码社区公众号 ydmsq666 转自 xff1a https www cnblogs com Chen xy p 4466351 html nodejs
  • 源码学习笔记之Openssl

    目录 xff1a apps apps c apps h app rand c asn1pars c build info ca cert srl ca key pem ca req pem ca c CA pl in cert pem ci
  • Segmentation Fault错误原因总结

    一 什么是 Segmentation fault in Linux 所谓的段错误就是指访问的内存超过了系统所给这个程序的内存空间 通常这个值是由gdtr来保存的 他是一个48位的寄存器 其中的32位是保存由它指向的gdt表 后13位保存相应
  • 树莓派使用MobaXterm实现SSH和VNC

    树莓派使用MobaXterm实现SSH和VNC terminal推荐 xff1a MobaXterm 一 开机SSH无线连接 前提 xff1a 树莓派和PC在同一局域网下 xff0c 通过路由器获得树莓派ip 打开ssh boot目录新建文
  • 【Qt】QtCreator远程部署、调试程序

    1 添加远程设备 1 QtCreator 工具 gt 选项 gt 设备 gt 添加 2 设备设置向导选择 gt Generic Linux Device gt 开启向导 3 填写 标识配置的名称 随便写 设备IP 用户名 gt 下一步 4
  • Debian备份与还原

    备份 xff1a sudo su cd tar cvpzf backup tgz exclude 61 proc exclude 61 lost 43 found exclude 61 backup tgz exclude 61 mnt e
  • 微信开放平台-第三方平台开发配置及常见的问题

    目录 概述 参考文档 开源项目 amp 工具 第三方平台设置 问题及解决方法 概述 本实例 xff1a 第三方平台 43 微信公众号 xff08 服务号 xff09 微信开放平台 第三方平台 xff0c 为广大公众号和小程序提供运营服务和行
  • 【Python包管理系列1】python打包发布到PyPI全过程(入门版)

    文章目录 目的准备知识PyPIPyPAsetuptoolsbuildtwine 实战过程总结 目的 如果发布一个python包到pypi上 xff0c 共他人使用 xff0c 本文试图讲清楚 准备知识 PyPI 官网地址 xff1a htt
  • Web自动化测试(二)—— Selenium-API操作

    其他Web测试知识参考 xff1a Web自动化测试 目录 一 元素定位 1 如何进行元素定位 xff1f 2 浏览器开发者工具 2 1 如何使用浏览器开发者工具 二 元素定位方式 1 id定位 2 name定位 3 class name定
  • Java中字符串中子串的查找共有四种方法(indexof())

    亲测可用 xff0c 若有疑问请私信 indexOf 方法返回一个整数值 xff0c 指出 String 对象内子字符串的开始位置 如果没有找到子字符串 xff0c 则返回 1 如果 startindex 是负数 xff0c 则 start
  • 使用rust构建一个js引擎

    转载于 https my oschina net lilugirl2005 blog 3067895
  • Linux下使用acme.sh 配置https 免费证书

    acme sh 简单来说acme sh 实现了 acme 协议 可以从 let s encrypt 生成免费的证书 acme sh 有以下特点 xff1a 一个纯粹用Shell xff08 Unix shell xff09 语言编写的ACM
  • iOS 性能优化之内存优化

    近四年没更CSDN了 xff0c 感慨万千 近年来在搞一款比较大的APP xff0c 项目中代码量100w 43 xff0c 里面使用的三方库 其他领域的二进制包比较多 xff1b 以前这些三方 二进制都挤在同一个工程目录下 xff0c 导
  • 内核升级和降级

    查看已安装的内核 sudo dpkg get selections grep linux 不一样的系统版本升级内核要装的东西对应也不一样 xff0c 需要根据 get selections 安装对应的内核组件 使用apt get 即可完成安
  • Docker: Debian安装Docker

    Debian安装Docker 内容由 网络搜罗整理而来 xff0c 记录与共享 一 APT安装 官方Debian存储库中提供的Docker安装包可能不是最新版本 为了确保我们获得最新版本 xff0c 我们将从官方Docker存储库安装Doc
  • CodeBlocks快捷键

    原文地址 xff1a https blog csdn net lxt lucia article details 79572829 一 汇总 1 编辑部分 xff1a 按住Ctrl xff0c 滚动鼠标滚轮 xff0c 放大或缩小字体 Ct
  • ubuntu 操作系统的目录结构

    Ubuntu 系统的目录众多 xff0c 但是所有的目录都是在 目录下面的 xff0c 并且 Ubuntu 系统是不分 C 盘 D 盘等的 那么 Ubuntu 系统的这些目录具体有哪些呢 xff1f 他们的作用分别是什么呢 xff1f 下面

随机推荐