遇到一个神奇的问题,AVR单片机按照样例程序写的代码过不了debug
时间:10-02
整理:3721RD
点击:
自己用的Atmel Studio 6.0(学生时代从官方网站down的),片子是ATmega48PA
这几天打算写一个屏幕程序,里面要要用SPI发数据。按照手册上面的样例:

SPI发送我是这么写的(TMP,SPIC和SPIT都是自己DEF的数据寄存器,也过了DEBUG)
SPI: OUT DDRB,SPIC
OUT SPDR,SPIT
LDI TMP,$5D
OUT SPCR,TMP
WATTT:
SBIS SPSR,SPIF
RJMP WATTT
LDI TMP,$00
OUT SPCR,TMP
LDI TMP,$37
OUT DDRB,TMP
RET
注意,就是上面红色的那句,一直过不了DEBUG。提示:
Error 1 Operand 1 out of range: 0x2d (0x2d就是SPSR寄存器的地址)
注意,我所有程序就这一个bug。超范围?我按你样本写的啊大哥,你告诉我不正确。
真心求大神帮忙解决_(:зゝ∠)_。我快被官方玩死了。
PS:
说实话,ATMEL的手册编的,他的样例程序经常过不了debug,各种鬼问题。刚学的时候就被坑的惨。
以前最奇葩的是一个寄存器还得旁征博引去看其他系列型号的芯片的手册才能搞懂,感情你8系列手册写了的内容48系列的手册就不再赘述了可以直接省略?那干脆直接不出手册不就更方便?简直呵呵。
这次我是彻底懵逼了,实在是不想再用atmel的东西了。简直受罪。
这几天打算写一个屏幕程序,里面要要用SPI发数据。按照手册上面的样例:

SPI发送我是这么写的(TMP,SPIC和SPIT都是自己DEF的数据寄存器,也过了DEBUG)
SPI: OUT DDRB,SPIC
OUT SPDR,SPIT
LDI TMP,$5D
OUT SPCR,TMP
WATTT:
SBIS SPSR,SPIF
RJMP WATTT
LDI TMP,$00
OUT SPCR,TMP
LDI TMP,$37
OUT DDRB,TMP
RET
注意,就是上面红色的那句,一直过不了DEBUG。提示:
Error 1 Operand 1 out of range: 0x2d (0x2d就是SPSR寄存器的地址)
注意,我所有程序就这一个bug。超范围?我按你样本写的啊大哥,你告诉我不正确。
真心求大神帮忙解决_(:зゝ∠)_。我快被官方玩死了。
PS:
说实话,ATMEL的手册编的,他的样例程序经常过不了debug,各种鬼问题。刚学的时候就被坑的惨。
以前最奇葩的是一个寄存器还得旁征博引去看其他系列型号的芯片的手册才能搞懂,感情你8系列手册写了的内容48系列的手册就不再赘述了可以直接省略?那干脆直接不出手册不就更方便?简直呵呵。
这次我是彻底懵逼了,实在是不想再用atmel的东西了。简直受罪。
