您的位置:首页 > 运维架构 > Linux

Linux下的51单片机简单的外部中断实验

2016-12-10 13:50 316 查看
外部中断实验

1、 实验目的

了解外部中断原理

学会单片机外部中断的用法;

2、 实验设备

装有 Linux系统的电脑,已装好SDCC交叉编译环境,并带有Python烧写工具;

51单片机开发板 1 个,USB 数据线 1 根。

3、 实验内容

了解外部中断的概念;

编写程序实现外部中断;

下载程序,验证单片机外部中断;

4、 实验原理

中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,51 单片机内

部一共有 5 个中断源,本实验主要讲解外部中断 1,要使用外部中断主要要设置三个控制位,

一是打开全局中断控制 EA=1;二是打开外部中断控制位 EX1=0;三是设置外部中断触发方

式 IT=0,低电平触发, IT=1,下降沿触发。本程序采用低电平触发。单片机的 PIN12 和 PIN13

分别是外部中断 0 和外部中断 1,KEY1 按键连接的是外部中断 1,所以 KEY1 按键具有触

发外部中断的功能。

5、 实验相应寄存器



6、 实验电路图



图 6_1 独立按键电路图

引脚对应表:

KEY1

P3_3

7、 实验程序实现

外部中断程序:

#include<8051.h> //包含特殊功能寄存器的定义
#define LED P1
//宏定义 LED 代表 P1
/********************************************************
主程序
*********************************************************/
void main()
{
LED=0xff;
//P1 口初始值,关闭 led 灯
EA=1;
//全局中断开
EX1=1;
//外部中断 1 开
IT1=0;
//低电平触发
while(1)
{
//在此添加其他程序,中断程序可以跟此处的程序同步执行
}
}
/****************************************************
外部中断程序
*****************************************************/
void Key_INT(void) interrupt 2 using 1
{
LED =0; //LED 状态改变
}


8、 实验步骤

1、了解外部中断原理;

2、编写程序,编译无错误,并生成 HEX 文件;

vim interrupt.c (输入代码)

sdcc interrupt.c(会生成.ihx文件)

packihx interrupt.ihx >interrupt.hex (重定向为十六进制文件)

hex2bin key.hex (生成二进制文件)

3、烧写程序,按下KEY2。

sudo python ./stcflash.py ./interrupt.bin (注意电源要关闭一次,再打开会进行数据的烧写)

3、用跳线帽短接 J3,运行程序;

9、 实验结果

当按下KEY1时,触发中断,P1口LED亮,按下复位键,可重复尝试。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  单片机 linux