湖北大学单片机 实验4中断控制系统设计

实验目的:

利用INT0中断控制LED

实验器材:

Keil、protues

实验原理(给出硬件电路图):

 

实验原理:

  1. 关于位定义

 

 

2.关于中断服务函数

 

 

 

3.中断系统的结构

 

4.触发方式

 

 

 

 

 

实验步骤:

  1. 绘制protues中的原理图;
  2. 利用原理写汇编和C语言;

程序代码及实验结果(含汇编语言代码和C语言代码):

C语言:

#include<reg51.h>

#include<intrins.h>
void delay(int a)//延时函数,增大从一个状态到另一个状态之间的时间,避免因变化过快而超出人眼视觉停留的最佳时间
{
	unsigned int t;
	while(a--);
	for(t=0;t<120;t++);
}

sbit LED = P0 ^ 0;  //将单片机的P0.0端口定义为LED
sbit k=P3^2;  //将终端按键定义为k,按键k为低电平有效

void main()
{
    LED = 1;

    EA = 1;     //EA-中断允许总控制位。EA=1代表CPU开放所有中断
    EX0 = 1;    //打开INT0的中断允许
                
    IT0=1;  //设置外部中断的触发方式,设置下降沿(从1变为0)触发TCON 硬件可自动清零触发信号   
    while (1);  //等待下降沿的产生,若k按键按下,下降沿产生,立即进入中断服务函数

}


void Interrupt_0() interrupt 0 //INT0的中断号为0
	//调用中断服务函数,具体写法如下: void 函数名(void) interrupt 中断号
{
delay(3000); //延时消抖
if(k==0)  //判断按键是否按下
  {
LED = !LED;//将LED所代表的管脚电平进行翻转,控制LED的亮灭
  }
}

汇编语言:


		ORG 0000H  ; 上电 & 复位 入口地址
		LJMP START  ;转向主程序
		ORG 0003H   ;外部 INT0 中断入口地址
		LJMP INTT0  ;转向外部 INT0 中断 服务程序
		ORG 0600H  ;程序从这里开始
START: 	MOV P1,#0xfe  ;设置P1的初始状态为灭
       SETB EA  ;EA-中断允许总控制位。EA=1代表CPU开放所有中断
                 ;SETB-对位置一
		SETB EX0 ; 打开INT0的中断允许
		SETB IT0 ; 设置外部中断的触发方式,设置下降沿(从1变为0,检测到引脚为低电平就触发)触发TCON 硬件可自动清零触发信号
		SJMP START ;等待下降沿的产生,若k按键按下,下降沿产生,立即进入中断服务函数
		
		
INTT0:	CPL P0.0   ;对P0.0取反,改变LED灯的状态
		RETI   ;中断程序返回指令
        END

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值