找回密码
 立即注册

QQ登录

只需一步,快速开始

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

如何画这段单片机代码的流程框图

[复制链接]
跳转到指定楼层
楼主
ID:1057739 发表于 2022-12-15 16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
100黑币
    #include<reg51.h>
    #include<intrins.h>
    #define uchar unsigned char
    #define uint unsigned int
    sbit sda=P1^1;
    sbit scl=P1^0;
    void delay();
    void delay1();
    void start();
    void stop();
    uchar read(uchar address0,uchar wordaddress,uchar address1);
    uchar year=0,month=0,date=0,hour=0,minute=0,second=0;
    void main()
    {
            while(1)
            {        second=read(0xd0,0x00,0xd1);
                    minute=read(0xd0,0x01,0xd1);
                    hour=read(0xd0,0x02,0xd1);
                    date=read(0xd0,0x04,0xd1);
                    month=read(0xd0,0x05,0xd1);
                    year=read(0xd0,0x06,0xd1);
                            P0=hour;
                            P2=minute;
                            P3=second;
                delay1();
                            P0=year;
                            P2=month;
                            P3=date;
                delay1();
    }
    }
    void delay1()
    {
            uint i,j;
            for(i=0;i<1000;i++)
            for(j=0;j<125;j++);
            }
    void start()
    {
            scl=1;
            delay();
            sda=1;
            delay();
            sda=0;
            delay();
    }
    void delay()
    {        uchar i=125;
            while(i>0)
            i--;
    }
    void stop()
    {
            scl=1;
            delay();
            sda=0;
            delay();
            sda=1;
            delay();
    }
    uchar read(uchar address0,uchar wordaddress,uchar address1)
    {
            uchar a,a0,i,n,data1;
            start();
            for(n=0;n<3;n++)
            {
                    if(n==0)a0=address0;
            else if(n==1)a0=wordaddress;
            else if(n==2)
                    {
                    start();
                    a0=address1;
                    }
            for(i=0;i<8;i++)
                    {
                    scl=0;
                    delay();
                    a=a0;
                    a=a&0x80;
                    if(a==0x80)
                            sda=1;
                    else
                            sda=0;
                    delay();
                    scl=1;
                    delay();
                    scl=0;
                    delay();
                    a0=a0<<1;
                    }
            sda=1;
            delay();
            scl=1;
            delay();
            scl=0;
            }
            for(i=0;i<8;i++)
            {
                    data1=data1<<1;
                    sda=1;
                    delay();
                    scl=0;
                    delay();
                    scl=1;
                    delay();
                    if(sda==1)
                            data1|=0x01;
            }
            scl=0;
            delay();
            sda=1;
            delay();
            stop();
            return data1;
    }

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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