汇编能实现的功能,用C怎样实现?
N EQU 0CSTART:
MOVLW 55
SUBWF N,W
BTFSC STATUS,Z
GOTO ERR
;0C-1E的内存清零
MOVLW 0x0C
MOVWF FSR
RAMCLR
CLRF INDF;清除FSR所指向的单元
INCF FSR,F
MOVF FSR,W;检测是否完成
ANDLW B'00011111'
XORLW 1F
BTFSS STATUS,Z
GOTO RAMCLR
;内存清零完毕
MOVLW 55
MOVWF N
ERR:
;其他初始化
...
...
...
MAIN:
...
...
...
GOTO MAIN
END char *tmp;
for(tmp = (char *)0x0c;tmp <= (char *)0x1e;tmp++)
*(tmp)=0;
不过好象没有0x0c-0x1e的用户内存吧?
做热启动?
你可以定义一个persistent 如果你知道中断函数调用的所有变量都是全局,你就理解这个错误了。哪怕中断函数里调用的其它函数里定义的局部变量,它也是一个特殊的全局变量,因为中断函数执行是不可预测的。
如果你能保证delay不能被主函数和中断函数同时执行,你可以加上interrupt level来修饰。但这样做有个坏处就是代码不太可靠,容易出BUG。一般的建议是象delay这样经常被执行,代码又小的函数,不如单独为中断写一个。
页:
[1]