欢迎光临散文网 会员登陆 & 注册

第4章-C语言基础以及流水灯的实现

2023-08-21 22:34 作者:feifeiluan2  | 我要投稿

c语言基础知识,省略,都会

keil调试,省略,几乎不用,也不好用

课后作业4流水灯右移

#include <reg52.h>


typedef unsigned char uchar;

typedef unsigned int uint;

typedef unsigned long ulong;


sbit ADDR0 = P1 ^ 0;

sbit ADDR1 = P1 ^ 1;

sbit ADDR2 = P1 ^ 2;

sbit ADDR3 = P1 ^ 3;

sbit ENLED = P1 ^ 4;


sbit led = P0 ^ 0;


void Delay500ms() //@11.0592MHz

{

        unsigned char data i, j, k;


        //_nop_();

        i = 4;

        j = 129;

        k = 119;

        do

        {

                do

                {

                        while (--k)

                                ;

                } while (--j);

        } while (--i);

}


void main(void)

{

        ENLED = 0; // 138总开关打开


        ADDR3 = 1; // 1110是LED的译码输出:14,选通LED的供电

        ADDR2 = 1;

        ADDR1 = 1;

        ADDR0 = 0;


        while (1)

        {

                // 流水灯右移

                P0 = 0x7F; // 0111-1111

                Delay500ms();

                P0 = 0xBF; // 1011-1111

                Delay500ms();

                P0 = 0xDF; // 1101-1111

                Delay500ms();

                P0 = 0xEF; // 1110-1111

                Delay500ms();

                P0 = 0xF7; // 1111-0111

                Delay500ms();

                P0 = 0xFB; // 1111-1011

                Delay500ms();

                P0 = 0xFD; // 1111-1101

                Delay500ms();

                P0 = 0xFE; // 1111-1110

                Delay500ms();

                // 返回第一部

        }

}

//第二种方法

#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;

sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;

sbit led = P0 ^ 0;

void Delay500ms() //@11.0592MHz
{
    unsigned char data i, j, k;

    //_nop_();
    i = 4;    j = 129;    k = 119;
    do
    {
        do
        {
            while (--k)
                ;
        } while (--j);
    } while (--i);
}

void main(void)
{
    char cnt;

    ENLED = 0; // 138总开关打开

    ADDR3 = 1; // 1110是LED的译码输出:14,选通LED的供电
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;

    cnt=7;
    while (1)
    {
        // 流水灯右移
        P0= ~(1<<cnt);
        Delay500ms();    
        cnt--;
        if(cnt<0)
        {
            cnt=7;
        }        
        // 返回第一步
    }
}

课后第五题,左移到头,接着右移,,,反复

#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;

sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;

sbit led = P0 ^ 0;

void Delay500ms() //@11.0592MHz
{
    unsigned char data i, j, k;

    //_nop_();
    i = 4;    j = 129;    k = 119;
    do
    {
        do
        {
            while (--k)
                ;
        } while (--j);
    } while (--i);
}

void main(void)
{
    ENLED = 0; // 138总开关打开

    ADDR3 = 1; // 1110是LED的译码输出:14,选通LED的供电
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;

    while (1)
    {
        P0=0xFE;//1111-1110
        Delay500ms();
        P0=0xFD;//1111-1101
        Delay500ms();
        P0=0xFB;//1111-1011
        Delay500ms();
        P0=0xF7;//1111-0111
        Delay500ms();
        P0=0xEF;//1110-1111
        Delay500ms();
        P0=0xDF;//1101-1111
        Delay500ms();
        P0=0xBF;//1011-1111
        Delay500ms();
        P0=0x7F;//0111-1111
        Delay500ms();

        P0=0xBF;//1011-1111
        Delay500ms();
        P0=0xDF;//1101-1111
        Delay500ms();
        P0=0xEF;//1110-1111
        Delay500ms();
        P0=0xF7;//1111-0111
        Delay500ms();
        P0=0xFB;//1111-1011
        Delay500ms();
        P0=0xFD;//1111-1101
        Delay500ms();
        //返回第一步
    }
}

//第二种方法

#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;

sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;

sbit led = P0 ^ 0;

void Delay500ms() //@11.0592MHz
{
    unsigned char data i, j, k;

    //_nop_();
    i = 4;
    j = 129;
    k = 119;
    do
    {
        do
        {
            while (--k)
                ;
        } while (--j);
    } while (--i);
}

void main(void)
{
    char cnt;

    ENLED = 0; // 138总开关打开

    ADDR3 = 1; // 1110是LED的译码输出:14,选通LED的供电
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;

    while (1)
    {
        cnt = 0;
        while (1)
        {
            P0 = ~(1 << cnt);
            Delay500ms();
            cnt++;
            if (cnt == 8)
            {
                break;
            }
        }
        cnt = 6;
        while (1)
        {
            P0 = ~(1 << cnt);
            Delay500ms();
            cnt--;
            if (cnt == 0)
            {
                break;
            }
        }
    }
}


第4章-C语言基础以及流水灯的实现的评论 (共 条)

分享到微博请遵守国家法律