单片机实验4 外部中断EX0 EX1

单片机实验4

实验内容

利用AT89C51系列单片机为CPU,设计电路, 连接4位数码管,并连接两个按键,按第一个按键数码管显示值增加1,按另外一个按键数码管显示值减1。要求线路连接正确,包含晶振电路和复位电路,数码管采用动态显示.
单片机型号为AT89C51、用proteus8.9、keil5软件 汇编语言编写

代码

====================================================================
 Created:   2021
 Processor: AT89C51
Compiler:  ASEM-51 (Proteus)
====================================================================

ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTOSEL1	//按键加
ORG 0013H
AJMP INTOSEL2	//按键减
ORG 0030H

MAIN:
	MOV DPTR, #TAB
	SETB EX0	//开外部中断0
	SETB EX1	//开外部中断1
	SETB IT0	//模式1
	SETB IT1
	SETB EA		//开cpu中断
	MOV R0, #01H	//数码管值片选信号
	MOV R1, #00H	//个位
	MOV R2, #00H	//十位
	MOV R3, #00H	//百位
	MOV R4, #00H	//千位
	MOV R5, #11H	//数码管4位循环片选信号
	
SEG7LOOP:	//4位数码管循环

	MOV A, R5	
	MOV P2, A
	RL A
	MOV R5, A
	//前4行  P2端口低4位 作为4位数码管片选,以上操作为循环赋值
	
	//给每一位数码管附上相应的值
	MOV A, @R0 	//片选值
	MOVC A, @A+DPTR
	MOV P0, A
	LCALL DELAY
	INC R0
	CJNE R0, #05H, SEG7LOOP		//片选值信号 为R1---R4,R0为5时,重新到R1
	MOV R0, #01H
	AJMP SEG7LOOP

INTOSEL1:	//加法
	CJNE R1, #09H, ONE	//个位为9要进位
	MOV R1, #0H		//个位清零
	CJNE R2, #09H, TEN	//十位为9要进位
	MOV R2, #0H		//十位清零
	CJNE R3, #09H, HUNDRED	//百位为9要进位
	MOV R3, #0H		//百位清零
	CJNE R4, #09H, THOUSAND	//千位为9要进位
	MOV R4, #0H		//千位清零
	RETI	//返回中断点
ONE:
	INC R1	//个位非9,加1
	RETI	//返回中断点
TEN:
	INC R2	//十位非9,加1
	RETI	//返回中断点
HUNDRED:
	INC R3	//百位非9,加1
	RETI	//返回中断点
THOUSAND:
	INC R4	//千位非9,加1
	RETI	//返回中断点	
INTOSEL2:	//减法
	CJNE R1, #00H, ONE1		//为0不够减,借位
	MOV R1, #09H		//变9
	CJNE R2, #00H, TEN1			//后面和加法类似,不再描述
	MOV R2, #09H
	CJNE R3, #00H, HUNDRED1
	MOV R3, #09H
	CJNE R4, #00H, THOUSAND1
	MOV R4, #09H
	RETI
ONE1:
	DEC R1
	RETI
TEN1:
	DEC R2
	RETI
HUNDRED1:
	DEC R3
	RETI
THOUSAND1:
	DEC R4
	RETI

//时延
DELAY:
	MOV R6, #0FFH
	DJNZ R6,$
	RET
	
TAB:
	DB 0C0H , 0F9H , 0A4H , 0B0H , 99H , 92H , 82H , 0F8H , 80H , 90H 
END
所有代码在proteus里测试过
附图

晶振和复位电路参考---->此链接

起始
在这里插入图片描述

加一
在这里插入图片描述

减一
在这里插入图片描述

单片机参照书 单片机原理及接口技术 (第五版)李朝青
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值