PIC单片机入门_汇编/混编/C编比较

2019-04-15 11:40发布

1.问题描述:

对RAM中从30h开始的50个单元清零。

2.汇编方法

COUNT EQU 20H ;指定20H寄存器为循环变量 FSR EQU 04H ;指定FSR为04H INDF EQU 00H ;指定INDF为00H MOVLW D’50 ;给循环变量赋初值 MOVWF COUNT MOVLW 30H ;将30H →FSR MOVWF FSR NEXT CLRF INDF ;间接寻址 INCF FSR,1 ;地址指针内容加1,指向下一单元 DECFSZ COUNT,1 ;计数值减1,结果为0就 ;跳过下一条指令到STOP处 GOTO NEXT ;跳转回去并执行下一次循环 STOP GOTO STOP ;停机

3.混编方法

#include char COUNT; //定义全局变量 main(){ COUNT=50; FSR=0x30; #asm INDF EQU 00H NEXT CLRF INDF INCF _FSR, F DECFSZ _COUNT,F GOTO NEXT #endasm while(1){ ; } } 注意:只要是C语言中定义的变量,在汇编中对其寻址时一定要用下划线。

4.C语言编程

#include char COUNT; //定义全局变量 main(){ COUNT=50; FSR=0x30; INDF=0; NEXT: INDF=0; FSR++; if (COUNT-- >0) goto NEXT; while(1){ ; } } 注意:用C语言编写可读性强,但是占用的资源会多。