程序疑惑
这样写延时函数有没有问题:DELAY_ANYMS:
LDR CN1,0
STR TEMP1
LDR CN2,0
STR TEMP2
DELAY_ANYMS_1:
CLRWDT
DECRSZ TEMP1,1
LJUMP DELAY_ANYMS_1
DECRSZ TEMP2,1
LJUMP DELAY_ANYMS_1
RET
能不能实现我改变CN1和CN2的值改变延时时间,我试过没找到规律。
求大佬解答
有没有大佬来解答一手 你这是什么单片机呀 叶春勇 发表于 2020-3-25 15:46
你这是什么单片机呀
FT60F02X辉芒微的 西陆 发表于 2020-3-25 16:04
FT60F02X辉芒微的
这个单片机有c语言的。
对汇编已经忘光了,目前都是用C DECRSZ TEMP1,1
DECRSZ TEMP2,1
操作的都是TEMP1、TEMP2,怎么会实现改变CN1和CN2的值改变延时时间呢,有些疑惑。 光轮TreeOS 发表于 2020-3-26 09:09
DECRSZ TEMP1,1
DECRSZ TEMP2,1
是 实现:如果我改变cn1,2的值能不能 改变延时时间。 貌似不能,因为你判断的是TEMP1和TEMP2的值,改CN1、CN2和它有关系吗 MOVLW 0x0a
MOVWF _cn1
MOVLW 0x14
MOVWF _cn2
_00114_DS_:
MOVF _cn1,W
BTFSS STATUS,2
GOTO _00108_DS_
_00111_DS_:
MOVF _cn2,W
BTFSS STATUS,2
GOTO _00115_DS_
DECF _cn2,F
GOTO _00111_DS_
_00115_DS_:
DECF _cn1,F
GOTO _00114_DS_
/* c d代码 * /
volatile unsigned char cn1=0,cn2=0;
#define delay(A,B) {cn1=(A);cn2=(B);for(;cn1==0;cn1--) for(;cn2==0;cn2--);}
void main (void)
{
delay(10,20);
while(1);
} 叶春勇 发表于 2020-3-26 16:45
goto_00108_ds_ 这里报错 西陆 发表于 2020-3-30 10:26
goto_00108_ds_ 这里报错
LDWI AH //000B 2A0A
ORG 000CH
STR 40H //000C 01C0
LDWI 14H //000D 2A14
STR 41H //000E 01C1
LJUMP 15H //000F 3815
DECR 41H,1 //0010 0DC1
LDR 41H,0 //0011 0841
BTSC STATUS,2 //0012 1503
LJUMP 10H //0013 3810
ORG 0014H
DECR 40H,1 //0014 0DC0
LDR 40H,0 //0015 0840
BTSC STATUS,2 //0016 1503
LJUMP 11H //0017 3811
LJUMP 18H //0018 3818
LDR 43H,0 //0019 0843
STR PCLATH //001A 018A
SWAPR 42H,0 //001B 0742
ORG 001CH
STR STATUS //001C 0183
SWAPR 7EH,1 //001D 07FE
SWAPR 7EH,0 //001E 077E
RETI //001F 0009
CLRR STATUS //0020 0103
LJUMP 0BH //0021 380B
END 这个c语言生成的代码的确没专用指令效率。
页:
[1]