cwz8632 发表于 2021-5-10 19:44:13

有没有会把下面代码解释并用C51写的大佬,我新手求参考答案

ORG 0000H
                        LJMP MAIN
                        ORG 0050H
MAIN:                MOV P2,#00H
                        LCALL DELAY
                        MOV A,#0FEH
LOOP:                MOV P2,A
                        LCALL DELAY
                        RL A
                        AJMP LOOP
DELAY:        MOV R5,#20
D1:                        MOV R6,#20
D2:                        MOV R7,#250
HERE:                DJNZ R7,HERE
                        DJNZ R6,D2
                        DJNZ R5,D1
                        RET
                        END

cwz8632 发表于 2021-5-10 19:45:17

这是个从左往右的流水灯,根据延迟时间(晶振12),8盏灯依次从左到右亮,重复这个过程

人造人 发表于 2021-5-10 20:29:50

没有测试环境,没办法调试,不知道对不对

#include <stdint.h>

static uint8_t rol(uint8_t data) {
    return (data << 1) | (data & 0x80 ? 1 : 0);
}

static void delay(void) {
    for(uint8_t i = 0; i < 20; ++i)
      for(uint8_t j = 0; j < 20; ++j)
            for(uint8_t k = 0; k < 250; ++k)
                ;
}

int main(void) {
    P2 = 0x00;
    delay();
    for(uint8_t i = 0xfe; ; i = rol(i)) {
      P2 = i; delay();
    }
    return 0;
}

cwz8632 发表于 2021-5-10 23:36:49

人造人 发表于 2021-5-10 20:29
没有测试环境,没办法调试,不知道对不对

谢谢
页: [1]
查看完整版本: 有没有会把下面代码解释并用C51写的大佬,我新手求参考答案