沐澈★ 2022-01-03 09:45 采纳率: 0%
浏览 41

设计花样彩灯,使用C51程序,

要求:依次4/5灯亮;3/6灯亮;2/7灯亮;1/8灯亮,循环反复。
接在AT89C51的P0口

  • 写回答

1条回答 默认 最新

  • |__WhoAmI__| 2022-12-12 08:10
    关注
    #include <reg51.h>
    
    // 定义等待时间
    #define DELAY 50000
    
    void main() {
      // 定义灯的状态数组
      // 初始状态为第四、五个灯亮
      unsigned char lights[] = {0b11100000, 0b00110000};
    
      while (1) {
        // 依次将灯的状态输出到 P0 口
        P0 = lights[0];
        delay(DELAY);
        P0 = lights[1];
        delay(DELAY);
    
        // 依次将灯的状态移位,实现灯的循环反复
        unsigned char temp = lights[0] << 1;
        lights[0] = (temp & 0b10000000) | (lights[1] >> 4);
        lights[1] = (temp & 0b01110000) | (lights[1] << 1);
      }
    }
    
    // 定义等待函数
    void delay(unsigned int time) {
      while (time--);
    }
    

    上面程序中使用了 reg51.h 头文件,包含了 C51 汇编语言的一些常用宏定义。这个程序使用了两个变量 lights[0] 和 lights[1] 来表示灯的状态。通过移位运算来改变灯的状态,实现灯的循环反复。

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部