用wmd86编写实验程序,每按动一次单次脉冲,产生一次外部中断,依次在显示屏上输出一个字符“1”、“2”。。。。“9”。
时间: 2024-11-03 21:20:42 浏览: 30
80X86实验指导书
WMD86是一种古老的8位微处理器,主要用于早期的工业控制系统,它的编程通常涉及汇编语言,如MCS-51系列的8051或8052。然而,由于WMD86已经很少见,而且其编程环境并不常见,下面我将以现代的8051兼容的AVR ATmega系列为例,解释如何编写类似的操作,因为它们拥有类似的中断机制。
首先,你需要设置外部中断 INT0,当按下按键时产生中断。以下是基本的步骤:
1. **设置中断向量表**:
在汇编源码中,将INT0中断向量指针指向适当的中断服务程序(ISP)。
```assembly
.org 0x00 ; 假设中断向量表起始地址
InterruptVectorTable:
jmp ISR_interrupt0 ; 跳转到ISR_interrupt0
.org 0x20 ; 保留给其他中断,每个中断占2字节
...
ISR_interrupt0:
; 这里是中断服务程序代码
```
2. **按键检测和中断处理**:
在ISP中,通过查询特定IO口的电平变化来检测按键,并保存当前的计数状态。如果按键被按下,递增计数器,然后调用显示字符的服务。
```assembly
ISR_interrupt0:
cli ; 关闭干扰
in r1, PortA ; 读取按键状态
cp r1, 0b00000001 ; 检查最低位是否有下降沿
brne skip_char ; 如果没按,则跳过
inc counter ; 计数器加一
mov r2, #1 ; 字符 '1'
skip_char:
call display_char ; 显示字符
out PortB, r2 ; 送字符到显示设备
jmp wait_for_next_press; 等待下一次按键
wait_for_next_press:
; 再次检查按键,继续中断处理流程...
```
3. **显示字符**:
这部分依赖于你的硬件,可能是通过串行通信、七段数码管或其他显示接口。展示如何显示字符的代码可能看起来很复杂,但基础就是将数字转换为对应的二进制表示,然后驱动相应的显示设备。
```assembly
display_char:
; 你的显示代码,比如驱动LED或七段数码管
ret
```
请注意,以上代码只给出了大致的框架,具体的实现细节需要根据你的硬件配置和具体中断服务程序的需求来定制。同时,由于年代久远,很多现代IDE工具可能无法直接支持WMD86,所以建议用现代的AVR或MSP430等微控制器及其集成开发环境(IDE)进行开发。
阅读全文