C51单片机实验——中断实验
实验名称:单片机中断实验
实验环境:普中实验系统;Keil μVision 4软件;
实验目的:
(1)掌握单片机中断原理和中断响应过程。
(2)设计自己的中断程序具体实验内容,并通过程序设计控制实验箱上的2个按键,实现对应的中断内容。
硬件连线:
按键k3连接P3.2口
按键k4连接P3.3口
LED灯连接P2口
实验主要代码:
/**************************************************************************************
* 外部中断0实验 *
实现现象:下载程序后按下K3按键可以对D1小灯状态取反。
注意事项:无。
***************************************************************************************/#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h> //因为要用到左右移函数,所以加入这个头文件
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;sbit k3=P3^2; //定义按键K3
sbit k4=P3^3; //定义按键K3
#define led P2 //将P2口定义为led 后面就可以使用led代替P2口/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{while(i--);
}/*******************************************************************************
* 函 数 名 : Int1Init()
* 函数功能 : 设置外部中断1
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Int0Init()
{//设置INT0IT0=1;//跳变沿出发方式(下降沿)EX0=1;//打开INT0的中断允许。 EA=1;//打开总中断
}/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{ Int0Init(); // 设置外部中断0while(1);
}/*******************************************************************************
* 函 数 名 : Int0() interrupt 0
* 函数功能 : 外部中断0的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/void Int0() interrupt 0 //外部中断0的中断函数
{delay(1000); //延时消抖if(k3==0){u8 i;led=0xfe;delay(50000); //大约延时450ms while(1){
/* for(i=0;i<8;i++){P2=~(0x01<<i); //将1右移i位,然后将结果取反赋值到P2口delay(50000); //大约延时450ms}
*/ for(i=0;i<7;i++) //将led左移一位{led=_crol_(led,1);delay(50000); //大约延时450ms }}
}if(k4==0){u8 i;led=0xfe;delay(50000); //大约延时450ms while(1){
/* for(i=0;i<8;i++){P2=~(0x01<<i); //将1右移i位,然后将结果取反赋值到P2口delay(50000); //大约延时450ms}
*/ for(i=0;i<7;i++) //将led右移一位{led=_cror_(led,1);delay(50000); //大约延时450ms }}
}
}
实验结果与心得:
实验现象:按下k3按键,LED灯从D1到D8从左到右实现流水灯依次点亮;按下k4按键,LED灯从D8到D1从右至左实现流水灯依次点亮
实验心得:1. INT0*—外部中断请求0,外部中断请求信号(低电平或负跳变有效)由INT0*引脚输入,中断请求标志为IE0。
2. IT0—选择外中断请求0为跳沿触发方式还是电平触发方式
3. IE对中断开放和关闭实现两级控制。两级控制就是有一个总的中断开关控制位EA(IE.7位),当EA=0,所有中断请求被屏蔽,CPU对任何中断请求都不接受;当EA=1时,CPU开中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定
4. EX1—外部中断0中断允许位。
EX0=0,禁止外部中断0中断。
EX0=1,允许外部中断0中断。
5. 编写中断程序,应遵循以下规则:
1)中断函数没有返回值,如果定义一个返回值,将会得到不正确结果。建议将中断函数定义为void类型,明确说明无返回值。
2)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。
C51单片机实验——中断实验相关推荐
- 单片机原理及其应用——单片机外部中断实验(八段数码管通过按键依次显示0~9数字)
目录 一.实验要求 二.知识要点 (一)数码管 (二)八段数码管的字形编码 (三)C51变量定义的四要素 (四)中断源 (五)相关的特殊功能寄存器 1.定时器/计数器控制寄存器TCON 2.中断允许控 ...
- 单片机原理及其应用——单片机定时器中断实验(八段数码管依次显示0~9数字)
目录 一.实验要求 二.知识要点 (一)单片机定时器/计数器 (二)相关的特殊功能寄存器 1.工作方式寄存器TMOD 2.定时器/计数器控制寄存器TCON (三)定时器/计数器的工作方式 1.工作方式 ...
- 单片机外部中断实验C语言程序,STC89C52单片机外部中断0实验
原标题:STC89C52单片机外部中断0实验 / 实现功能: 设置,然后通过点亮与P1口第一个引脚相连的D1来 显示系统进入了外部中断0 实验板型号:BS-XYD-C52 实验名称: 外部中断0测试 ...
- 51单片机 | 外部中断实验
文章目录 一.外部中断介绍 二.外部中断配置 三.硬件设计 四.软件设计 五.实验现象 51 单片机外部中断有 2 个,外部中断 0 和外部中断 1,它们的使用方法是一样的,所以只要学会一个即可 ...
- AVR16单片机--外部中断实验
一.实验目的 1. 理解单片机中断的概念. 2. 掌握外部中断的编程方法. 二.实验内容 1. 验证课堂例题 编译下载运行课堂例题--"按键次数显示"(INT_EX1)和" ...
- 51单片机外部中断实验 设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管
设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管加1显示程序). #inc ...
- ARM接口实验—中断实验
一.实验原理分析 实验板:stm32mp157a-fsmp1a 本次中断是检测按键的下降沿信号,接收到信号进入异常处理,进行相应的异常处理流程 二.电路分析 分析三个按键对应的GPIO接口: KEY1 ...
- 中断实验计算机组成原理,计算机组成原理 中断实验 实验五
<计算机组成原理 中断实验 实验五>由会员分享,可在线阅读,更多相关<计算机组成原理 中断实验 实验五(6页珍藏版)>请在技术文库上搜索. 1.深深 圳圳 大大 学学 实实 验 ...
- AT89C51单片机外部中断
C51单片机外部中断调用P3_2 ,P3_3口. 中断方式有两种,分别为电平方式和脉冲方式. 中断请求有0和1.中断总允许为EA=1, IE0:外部中断请求0标志位: IT0:外部中断0触发方式设置位 ...
- c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...
C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟 学 号: 班 级: 自动化10班 姓 名: 张 指导老师: 胡 2012.12 单片机核心板实验要求 流水灯实验 实验目的: 简单I/O引 ...
最新文章
- ant 接口返回文件流,前端自动下载实现
- 每天一个JavaScript实例-获取元素当前高度
- Easyui textbox 组件设置css样式
- 只靠开源的时代已经过去,BAT都在这样做!
- C# 选择按钮 数字排序 找最大值最小值
- php抓取页面生成html,PHP smiple html dom抓取页面内容
- 图像处理笔记(十八):模板匹配
- Ionic4 Camera插件在iOS13上选取视频失败 上传时候提示权限不足
- Linux-管道(day09)
- Qt 学习之路 :信号槽
- Flowable官方指定中国社区成立了
- [Render] Unity SRP 概述:可编写脚本的渲染管道
- c#获取软件版本、windows用户名、windows用户目录、.net版本、windows版本等
- Debian11 安装Chromium浏览器
- 收藏 一句话问答 linux
- CityEngine学习资料——split分割
- Android手机ERP开发(二)
- 数据结构:查找与排序
- python如何爬虫股票数据_如何抓取股票数据_用Python抓取新浪的股票数据
- 路由器工作原理及其主要部件详解