找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4224|回复: 0
打印 上一主题 下一主题
收起左侧

单片机C语言while语句练习程序

[复制链接]
跳转到指定楼层
楼主
ID:424311 发表于 2018-11-10 22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>//包含单片机对应的头文件
#define uchar unsigned char//宏定义
sbit LED = P0^0;
sbit ENLED = P1^4;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
void delay_ms(unsigned int time)//延时函数
{
        unsigned int i,j; //声明 i,j 为整型变量
        for(i=time;i>0;i--) //将变量 time 赋予 i,当 i 大于 0 的条件成立,执行循环体,i 自减 1
        for(j=112;j>0;j--) //将变量 112 赋予 j,当 j 大于 0 的条件成立,执行循环体,j 自减 1
        {;} //空等待,直到以上的循环条件结束,从而实现延时。
}
void main(void)
{        ENLED = 0;
        ADDR0 = 0; ADDR1 = 1; ADDR2 = 1; ADDR3 = 1;
        uchar i,j; //声明 i,j 为字符型变量
        uchar move_1,move_2; //声明 move_1, move_2 为字符型变量
        while(1) //死循环,永远不会退出循环体
        {
                i=0; //i 赋予 0
                while(i<2) //假如 i 小于 2 执行循环体语句
                {
                        P1=0x7e;delay_ms(200);//点亮 LED0。LED7
                        P1=0xbd;delay_ms(200);//点亮 LED1。LED6
                        P1=0xdb;delay_ms(200);//点亮 LED2。LED5
                        P1=0xe7;delay_ms(200);//点亮 LED3。LED4
                        i++; //i 自加 1, 为退出循环体制造条件
                }        
                i=0; //i 赋予 0
                while(i<2) //假如 i 小于 2 执行循环体语句
                {
                        P1=0xe7;delay_ms(200);//点亮 LED3。LED4
                        P1=0xdb;delay_ms(200);//点亮 LED2。LED5
                        P1=0xbd;delay_ms(200);//点亮 LED1。LED6
                        P1=0x7e;delay_ms(200);//点亮 LED0。LED7
                        i++; //i 自加 1, 为退出循环体制造条件
                }
                move_1=0x7f; //move_1 赋值 0x7f
                i=0; //i 赋予 0
                while(i<8) //假如 i 小于 8 执行循环体语句
                {
                        P1=move_1; //move_1 赋于 P1 端口
                        move_1=(move_1>>1)|0x80;//move_1 右移一位,然后与 0x80 相或,高位总保特1
                        delay_ms(300); //延时 300ms
                        move_2=0xfe; //move_2 赋值 0xfe
                        j=0; //j 赋予 0
                        while(j<8) //假如 j 小于 8 执行循环体语句
                        {
                                P1=move_2; //move_2 赋于 P1 端口
                                move_2=(move_2<<1)|0x01;//move_2 左移一位,然后与 0x01 相或,低位总1
                                delay_ms(100); //延时 300ms
                                j++; //j 自加 1, 为退出循环体制造条件
                        }
                        i++; //i 自加 1, 为退出循环体制造条件
                }
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表