首页 >  聚焦 >  >  正文

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

2023-08-21 22:34:58 来源:哔哩哔哩

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


【资料图】

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

课后作业4流水灯右移

#include <>

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() //@

{

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 <>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() //@{    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 <>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() //@{    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 <>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() //@{    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;            }        }    }}

标签: