本帖最后由 wensir 于 2016-5-30 19:29 编辑
#include <iom8v.h>
unsigned char byte[200] = {0};//初始化100个ram单元
void TestASM(void);
void main(void)
{
TestASM();
while(1)
{
if(byte[5]==100)//取第六个单元数据
{
PORTB = ~PORTB;
}
}
}
以下汇编
_TestASM::
ldi r16,$ff
out DDRB,R16
;sts DDRB,R16
ldi r28,0;初始化Y
ldi r29,0;初始化Y
ldi r18,100
ldi r17,100
st y+,r17;将100装入Ram第一个单元
st y+,r17;将100装入Ram第二个单元
st y+,r17;将100装入Ram第三个单元
st y+,r17;将100装入Ram第四个单元
st y+,r17
st y+,r17
st y+,r17
st y+,r17
st y+,r17
st y+,r17
st y+,r17
st y+,r17
st y+,r17
st y+,r17
;Start:
; st Y+,r17
; inc r18
; CP r17,r18
; BRNE Start
RET
以上程序IO端口无法翻转,请问为什么啊?
此帖出自
小平头技术问答
我已经找到原因了,RAM里面的地址,要加上所有特殊功能寄存器的地址才行
一周热门 更多>