汇编十一、汇编实现外部中断

这篇具有很好参考价值的文章主要介绍了汇编十一、汇编实现外部中断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、实现目的

(1)实现8颗LED灯呈流水灯依次被点亮;静态数码管通过按键按下,显示数值发生改变,通过按键依次显示0-9。

(2)按键检测采用外部中断检测。

2、原理图及硬件连接

2.1、LED灯

(1)51单片机P1端口接八个共阴极LED灯,即IO口输出高电平,LED点亮。

2.2、静态数码管

汇编十一、汇编实现外部中断

(1)P0端口连接静态数码管(JP3)

(2)IO口对应数码段。

P0.0对应a P0.1对应b

P0.2对应c

P0.3对应d

P0.4对应e P0.5对应f P0.6对应g P0.7对应dp

(3)数码管为共阳数码管。

(4)P0端口的对应IO输出低电平,对应数码段被点亮,输出高电平,数码管熄灭。

2.3、按键

(1)独立按键接P32引脚。

3、代码

3.1、部分汇编语句

(1)SETB  <bit>

SETB指令可将相应的位置1,其操作对象可以是进位标志或其他可以直接寻址的位。该指令不影响其他标志位。

(2)PUSH和POP为入栈和出栈指令。

(3)有中断需要注意判断哪些寄存器在中断服务程序和主程序中均有用到,需要进行入栈出栈操作。

(4)一般情况下,涉及中断,ACC和PSW需要进行入栈和出栈。

3.2、示例代码

(1)注:按键无延时消抖函数。文章来源地址https://www.toymoban.com/news/detail-453888.html

;使用P0接静态数码管
;使用P1接LED灯
;使用P32接独立按键K1,外部中断0和P32引脚绑定
;按键无消抖
;-------------------------------------	
	ORG 0000H     ;ORG为程序段说明伪指令,它向汇编程序说明该程序段的起始地址,所以可以当中断向量地址用
	LJMP L_Main   ;跳转到L_Main标号处
	ORG 0003H     ;0003H为外部中断0向量地址
	LJMP I_INT0   ;跳转到I_INF0标号处
	ORG 0030H
L_Main:
	;your code
	;初始化中断
	SETB EA           ;总中断允许控制位设置为1
	SETB EX0          ;外部中断0允许位设置为1
	SETB PX0          ;外部中断0优先级设置为1
	SETB IT0          ;外部中断0设置为下降沿除法方式

	MOV DPTR,#T_table ;T_table所在地址赋值给DPTR
	MOV R0,#0x00      ;立即数赋值给R0,给R0赋初值,在中断中用到
	MOV P0,#0xC0      ;设置数码管显示的初始值
	;流水灯
	MOV A,#0x01        ;把立即数0x01赋值给累加器A
L_loop:
	MOV P1,A          
	LCALL F_Delay1S    ;调用子程序,函数延时1秒
	RL	A              ;累加器循环左移
	LJMP L_loop        ;跳到标号L_loop处

;---------------------------------------
F_Delay1S:                 ;1S = 2us*500000	(50*100*100)
	MOV R7,#50             ;立即数50赋值给寄存器R7
L_loop2:
	MOV R6,#100            ;立即数100赋值给寄存器R6
L_loop1:
  	MOV R5,#100            ;立即数100赋值给R5寄存器
	DJNZ R5,$	           ;R5寄存器值减1,不是零就跳转到当前位置,即减到零才跳出循环
	DJNZ R6,L_loop1        ;相当于了100*100了
	DJNZ R7,L_loop2        ;相当于50*100*100了
	RET
;---------------------------------------
I_INT0:
	PUSH ACC           ;ACC地址单元中的数据压栈
	PUSH PSW           ;程序状态字寄存器压栈
	MOV A,R0           ;
	MOVC A,@A+DPTR     ;基地址变质
	MOV P0,A
	INC R0             ;R0寄存器值加1
	CJNE R0,#10,L_Next ;如果R0不等于10就跳转到L_next
	MOV R0,#0x00
L_Next:
	POP PSW   ;程序状态字寄存器出栈
	POP ACC   ;ACC地址单元中的数据出栈
	RETI      ;中断返回
;---------------------------------------
T_table:
	;声明并初始化数据。
	;声明数据的本质就是:在内存中占用一块空间 ;
	;初始化数据的本质就是:给这个空间赋予一个值 。
	DB	0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90  
	END

到了这里,关于汇编十一、汇编实现外部中断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 汇编-内中断

    中断的意思是指, CPU不再接着(刚执行完的指令) 向下执行, 而是转去处理这个特殊信息。 8086CPU,当CPU内部有下面的情况发生的时候, 将产生相应的中断信息: (1)除法错误, 比如, 执行div指令产生的除法溢出; (2)单步执行; (3)执行into指令; (4)执行int指令。  CPU首先要知

    2024年02月10日
    浏览(23)
  • 汇编语言中断编程步骤

    1、调用movsb指令将中断处理程序载入内存的指定位置; 1)使用offset指令计算doIntEnd-doInt获取中断处理程序的代码长度; 2)doIntEnd位置使用nop指令。 2、修改中断向量表项为指定位置; 1)使用word ptr确定内存单元; 2)使用es=0来定位中断向量表首地址。 3、编写中断处理程序。

    2024年02月07日
    浏览(31)
  • 中断——外部中断EXIT

    前期疑问:中断可以分成外部中断和内部中断吗 文章目录 前言 一、中断知识 二、中断编程 三、EXIT外部中断/事件控制器 3.1 中断事件线 3.2 EXTI初始化结构体详解 四、软件设计 4.1 编程要点 五、代码回顾实现 六、补充中断知识 总结 野火中断章节有这样一句话 【F103在内核水

    2024年01月24日
    浏览(31)
  • (STM32)中断系统和外部中断

    中断系统:是执行和管理中断的逻辑结构 外部中断:是众多能产生中断的外设之一 中断:指的是中断源(中断通道),中断产生CPU暂停正在执行程序,去执行中断程序,然后返回。提高效率 F1系列的STM32有68个中断源,不同系列需要看手册 EXTI(外部中断)、TIM、ADC、USART、SPI、

    2024年02月06日
    浏览(29)
  • 单片机学习 11-中断系统(定时器中断+外部中断)

    ​ 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学习单片机必须要掌握的。很多初学者被困在中断中,学了很久仍然不知道中断究竟是

    2024年02月05日
    浏览(38)
  • 51单片机实验3-中断控制的LED灯(单一外部中断控制LED灯,两个外部中断控制LED灯,交通管制路口)

    1、编写程序通过单一外部中断控制LED灯,每按一次开关,中断服务程序中,低4位led和高4位led交替闪烁5次; 2、编写程序利用两个外部中断控制LED灯。上电后8个led以流水灯方式点亮间隔100ms,K1按下,流水灯反向显示1次间隔50ms;按下K2,8个led同时闪烁3次,间隔50ms。 电路连接

    2024年02月08日
    浏览(39)
  • 51单片机:中断系统(外部中断,定时器中断,串口通信)

    目录 中断系统简介: 中断的优先级和嵌套: 8个中断请求源及其优先级: 中断的分别介绍: 1、外部中断0:INT0   2、外部中断1  3、T0和 T1:定时计数器的功能 4、串口中断(串口为什么使用定时器后面讲) 中断寄存器 (1)中断允许控制(IE) (2)中断请求标志(TCON) (

    2024年01月25日
    浏览(32)
  • 【汇编】实验12 编写0号中断的处理程序

    记录一下代码

    2024年01月19日
    浏览(36)
  • 51 单片机【外部中断、定时器中断、回调函数】

    ​这里的外部中断类似监听器,时时刻刻监视某引脚的电平变化;这里的定时器中断类似于定时任务,可以定时执行某函数;这里将回调函数和中断结合起来,案例里有点设计模式的味道(忘了哪个了,也可能就是感觉,关于高层不能调用低层的解决),也有点函数式编程的

    2024年02月04日
    浏览(50)
  • 外部中断实验(stm32)

    说明:以下内容参考正点原子资料 中断服务函数名称默认 参考前面的文章实验代码 参考前面的文章实验代码 参考前面的文章实验代码 GPIO 的管教 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0~15,这样每个中 断线对应了最多 7 个 IO 口,以线 0 为例:它对应了 GPIOA.0、GPIOB.0、

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包