You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Proteus仿真ATmega32遇Invalid opcode 0xFFFF at PC=0x5200错误求助

ATmega32汇编代码Proteus仿真报错:Invalid opcode 0xFFFF at PC=0x5200

我编写了ATmega32的汇编代码,预期实现按下按键10次后PD5引脚的LED翻转功能。该代码在AVR实际环境中可正常运行,但在Proteus 8仿真时弹出错误提示:

Invalid opcode 0xFFFF at PC=0x5200

仿真电路截图:
ATmega32仿真电路

汇编代码

.include "m32def.inc"             

.equ memory = 0x200   
.equ timer1 = 0x00FF  

.cseg
.org 0x00                         
rjmp RESET                        

RESET:
    ; 初始化计数变量
ldi r16, 0x00                 
ldi r30, LOW(memory)  
ldi r31, HIGH(memory) 
st Z, r16                     ; 将0存入指定内存地址(使用Z指针)

    ; 设置D口为输出
ldi r16, 0xFF                 
out DDRD, r16                 
ldi r16, 0x00                 
out PORTD, r16                

    ; 配置Timer1为CTC模式
ldi r16, (1 << WGM12)         ; 加载配置值,设置Timer1为CTC模式
out TCCR1B, r16               ; 写入TCCR1B寄存器,启用CTC模式
ldi r16, (1 << CS12)          ; 加载预分频值(256分频)
out TCCR1B, r16               ; 写入TCCR1B,启动Timer1
ldi r16, timer1   
out OCR1AL, r16               ; 设置Timer1比较匹配值低字节
ldi r16, 0x00                 
out OCR1AH, r16               ; 设置Timer1比较匹配值高字节
ldi r16, (1 << OCIE1A)        ; 启用Timer1比较匹配A中断
out TIMSK, r16                ; 在中断掩码寄存器中开启Timer1中断
sei                           ; 开启全局中断


    ; Timer1比较匹配A中断服务程序
TIMER1_COMPA_ISR:
ldi r30, LOW(memory)  
ldi r31, HIGH(memory) 
ld r17, Z                      ; 从内存地址读取当前计数值
inc r17                        ; 计数值加1
cpi r17, 10                    ; 比较计数值是否达到10
brne CONTINUE_COUNT            ; 未达到则跳转到CONTINUE_COUNT
ldi r18, (1 << 5)              ; 加载PD5置位值
out PORTD, r18                 ; 点亮PD5引脚的LED
ldi r17, 0x00                 
st Z, r17                      ; 重置计数值为0
out PORTD, r16                 ; 写入当前r16值到PORTD

CONTINUE_COUNT:
st Z, r17                    ; 将更新后的计数值写回内存
reti     

内容的提问来源于stack exchange,提问作者k224862 Ahmed Khalid Durrani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:47:26