用51可以做得更好
1.A1=B1;
mov A1,B1 总共: 3字节(=PIC 2指令字),2指令周期 A1、B1可以为RAM地址0~255,如果用PIC,RAM〉32时,2指令字根本做不到。
2. C1 = A1+B1;
mov A,A1 add A,B1 mov C1,A 总共: 3字节(A1,B1,C1使用寄存器),3指令周期。
3. A[B] = C;
movf _B,w addlw _A movwf 4 bcf 3,7 movf _C,w movwf 0 总共: 6指令字,6指令周期 (这个是什么意思,没看懂)
4. for(i = 0; i < 10;i++) { A = 1; } mov R0,#9 mov A,#1 LOOP: mov @R0,A djnz R0,LOOP mov @R0,A ret 运行时间30个指令周期(<PIC的123个指令周期),8个指令节(<PIC的17指令字)
5.
if(A1 > 10) B1 = 0; else B1 = 1; mov B1,#1 cjne A1,#10,CHECK ret CHECK: jc RETURN dec B1 RETURN: ret 总共: 8指令字令节(<PIC的5指令字),3指令周期(if A<10),6指令周期(if A1>10), (使用寄存器寻址)
6. unsigned char A1,B1
switch(A1) { case 0: B1 = 10; break;
case 1: B1 = 20 break;
default: B1 = 30; break; } mov A,A1 jnz OTHER_CASE mov B1,#10 ret OTHER_CASE: djnz A1,DEFAULT mov B1,#20 ret DEFAULT: mov B1,#30 ret 14指令字节(<PIC的27指令字),运行8个指令周期(<PIC的9个指令周期) (使用寄存器寻址) |