单片机中断实验2 EX0

单片机实验2

实验内容

利用I/O口连接8个流水灯、1个按键和1个LED数码管,流水灯循环闪烁,当按下按键后,流水灯按原来的顺序闪烁,但数码管显示按键按下的次数
单片机型号为AT89C51、用proteus8.9、keil5软件 汇编语言编写

代码

ORG 0000H
AJMP MAIN
//INT0中断地址入口
ORG 0003H
AJMP INTOSEL
ORG 0030H

MAIN:
	MOV DPTR, #TAB
//开中断
	SETB EX0	//开INT0中断
	SETB IT0	//选择模式
	SETB EA		//开cpu中断
	MOV R0, #0FEH	//LED循环值
	MOV R1,#1H		//按键次数,超过9被重新赋0,这里给1
	MOV P0,#0C0H	//先让数码管显示0
//流水灯
//R0的作用,因为A要在中断里被调用,所以要把A左移以后的值赋给R0
LEDLOOP:
	MOV A, R0		
	MOV P1, A
	RL A
	MOV R0, A
	LCALL DELAY
	AJMP LEDLOOP
//中断函数
INTOSEL:
	MOV A, R1	//把数码管值赋给累加器A
	MOVC A, @A+DPTR
	MOV P0, A
	INC R1
	CJNE R1, #0AH,RET1   
	MOV R1, #0H
	RETI
	
RET1:
	RETI   //返回中断点
//延迟函数,三重循环	
DELAY:
	MOV R2 , #03H
LOOP:
	MOV R3 , #0FFH
LOOP1:
	MOV R4 , #0FFH
	DJNZ R4 , $
	DJNZ R3 , LOOP1
	DJNZ R2 , LOOP
	RET
//共阳极数码管,给P0口的数值如下	
TAB:
	DB 0C0H , 0F9H , 0A4H , 0B0H , 99H , 92H , 82H , 0F8H , 80H , 90H 
END

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值