4-51单片机-通过左移实现LED流水灯实验

一 主要涉及到的知识点:

        这里主要的知识点是,<<,这里是将P2端口进行宏定义, 然后通过循环进行点亮, 因为点亮需要低电平0, 这里是将0x01左移i位,然后取反得到一个十六进制, 比如循环第一次是0x01左移i位, i此时是0 所以左移0位, 然后取反,0x01取反是0xfe;

二 代码分析:

        进入while循环后,再进入for循环里, 然后进行左移,每次左移i 位,实现流水灯

三 源代码:

//4-LED流水灯实验-通过左移实现

#include "reg52.h"

//定义系统数据类型重定义
typedef unsigned char u8;
typedef unsigned int  u16;

//通过宏定义LED的P2端口
#define LED_PORT P2

//微秒延时函数定义
void dalay_us(u16 time_num_us)
{
     while(time_num_us--);
}

//毫秒延时函数定义
void dalay_ms(u16 time_num_ms)
{
     u8 i = 0;
    u8 j = 0;
    for(i = 0; i < time_num_ms; i++)
        for(j = 101; j > 0; j--);
}

//主函数
int main()
{
    //定义一个变量
    u8 i = 0;
    //通过左移实现流水灯
    while(1)
    {
        for(i = 0; i < 8; i++)
        {
             LED_PORT = ~(0x01<<i); //左移实现点亮
             dalay_us(50000);     //延时
        }

    }

    return 0;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值