西陆 发表于 2020-3-25 15:05

程序疑惑

这样写延时函数有没有问题:
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:44

西陆 发表于 2020-3-25 15:44

有没有大佬来解答一手

叶春勇 发表于 2020-3-25 15:46

你这是什么单片机呀

西陆 发表于 2020-3-25 16:04

叶春勇 发表于 2020-3-25 15:46
你这是什么单片机呀

FT60F02X辉芒微的

叶春勇 发表于 2020-3-25 16:43

西陆 发表于 2020-3-25 16:04
FT60F02X辉芒微的

这个单片机有c语言的。

blust5 发表于 2020-3-25 17:06

对汇编已经忘光了,目前都是用C

光轮TreeOS 发表于 2020-3-26 09:09

DECRSZ   TEMP1,1   
DECRSZ   TEMP2,1

操作的都是TEMP1、TEMP2,怎么会实现改变CN1和CN2的值改变延时时间呢,有些疑惑。

西陆 发表于 2020-3-26 09:34

光轮TreeOS 发表于 2020-3-26 09:09
DECRSZ   TEMP1,1   
DECRSZ   TEMP2,1



是   实现:如果我改变cn1,2的值能不能 改变延时时间。

光轮TreeOS 发表于 2020-3-26 15:37

貌似不能,因为你判断的是TEMP1和TEMP2的值,改CN1、CN2和它有关系吗

叶春勇 发表于 2020-3-26 16:45

        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-30 10:26

叶春勇 发表于 2020-3-26 16:45


goto_00108_ds_   这里报错

叶春勇 发表于 2020-3-30 11:41

西陆 发表于 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

叶春勇 发表于 2020-3-30 11:41

这个c语言生成的代码的确没专用指令效率。
页: [1]
查看完整版本: 程序疑惑