用汇编语言编程,在原来点亮的LED屏加入中断,key1按一下,显示字符22
时间: 2024-03-23 15:42:07 浏览: 32
好的,您的问题是如何在汇编语言中实现在原来点亮的LED屏加入中断,key1按一下,显示字符22。
下面是一份实现代码供您参考:
```
org 0x0
jmp start
;定义中断向量表
dw isr ;中断处理程序入口地址
;定义常量
key1_equ 0x01
led_equ 0x80
start:
mov a, #0x00 ;初始化A寄存器为0
;设置I/O口
mov p1, #0xff ;P1口输出高电平,P2口输入低电平
;初始化LED屏
mov p0, #led ;P0口输出低电平,点亮LED屏
;使能中断
setb ea
setb et0 ;使能定时器0中断
;初始化定时器0
mov th0, #0x3c ;设置定时器初值,1ms中断一次
mov tl0, #0xaf
;启动定时器0
setb tr0
loop:
;检测key1是否按下
jnb p2.0, loop ;如果key1未按下,则一直循环
;显示字符22
mov p0, #0x00 ;清空P0口输出,熄灭LED屏
mov a, #0x22 ;将字符22存入A寄存器
acall display ;调用显示函数
sjmp loop ;继续循环
;定时器0中断处理程序
isr:
clr tf0 ;清除定时器0中断标志
inc a ;A寄存器加1
jnb a, 0, skip ;如果A寄存器不为0,则跳过
mov a, #0x01 ;否则将A寄存器重新设置为1
skip:
reti ;返回中断前的状态
;显示函数
display:
mov p0, a ;将A寄存器的内容输出到P0口
acall delay ;调用延时函数
mov p0, #0x00 ;清空P0口输出,熄灭LED屏
acall delay ;调用延时函数
ret ;返回
;延时函数
delay:
mov r1, #0xff ;循环计数器初值
delay_loop1:
mov r2, #0xff ;循环计数器初值
delay_loop2:
djnz r2, delay_loop2 ;r2自减,如果r2不为0,则继续循环
djnz r1, delay_loop1 ;r1自减,如果r1不为0,则继续循环
ret ;返回
```
这份代码实现了在原来点亮的LED屏加入中断,当key1按下时,LED屏会显示字符22。在程序中,使用定时器0实现了每隔1ms中断一次,中断处理程序会将A寄存器加1,当A寄存器为0时,会将其重新设置为1。在主循环中,检测key1是否按下,如果按下,则调用显示函数,显示字符22。其中,显示函数会将A寄存器的内容输出到LED屏上,并在每次输出前后都调用延时函数,以控制LED屏的闪烁频率。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)