找回密码
 立即注册

QQ登录

只需一步,快速开始

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

keil 5能不能软件仿真这个交通灯程序,求指点

[复制链接]
跳转到指定楼层
楼主
ID:415837 发表于 2018-10-31 12:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define uchar unsigned char
#define unit unsigned int
        sbit light_R1=P2^0;
        sbit light_G1=P2^1;
        sbit light_Y1=P2^2;
        sbit light_R2=P2^3;
        sbit light_G2=P2^4;
        sbit light_Y2=P2^5;
        sbit D1=P1^0;
        sbit D2=P1^1;
        uchar code tab[10]={~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x7f,~0x6f};
        uchar T,shi,ge,s,k,kk;
        void main(void)
        {uchar time1=60;
                T=0;k=0;
                kk=0;
                TMOD=0x01;
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                EA=1;
                ET0=1;
                TR0=1;
                IT0=1;
                EX0=1;
                IT1=1;
                EX1=1;
                shi=3;
                ge=0;
                while(1)
                {
                        if(k==1)
                        {D1=0;
                         D2=0;
                         light_G1=1;
                         light_G2=1;
                         light_R1=1;
                         light_R2=1;
                         light_Y1=0;
                         light_Y2=0;
                                while(k)
                                {
                                        if(kk==1)
                                        {
                                                time1=60;
                                                light_Y1=1;
                                                light_Y2=1;
                                                kk=0;
                                                k=0;
                                        }
                                }
                        }
                        if(time1==60)
                        {
                                light_G1=0;
                                light_R2=0;
                                light_Y2=1;
                                light_R1=1;
                        }
                        D1=1;
                        D2=0;
                        P0=tab[shi];
                        s=50;
                        while(s--);
                        P0=0xff;
                        D1=0;
                        D2=1;
                        P0=tab[ge];
                        s=50;
                        while(s--);
                        P0=0xff;D2=0;
                        if(T==20)
                        {
                                T=0;
                                time1--;
                                if(time1>30)
                                {
                                        shi=(time1-30)/10;
                                        ge=(time1-30)%10;
                                }
                                else
                                {
                                        shi=time1/10;
                                        ge=time1%10;
                                }
                                if((time1-30)==3)
                                {
                                        light_G1=1;
                                        light_Y1=0;
                                        light_R2=0;
                                }
                                else if(time1==30)
                                {
                                        light_Y1=1;
                                        light_R1=0;
                                        light_R2=1;
                                        light_G2=0;
                                }
                                else if(time1==3)
                                {
                                        light_G2=1;
                                        light_Y2=0;
                                        light_R1=0;
                                }
                                else if(time1==0)
                                {
                                        time1=60;
                                        shi=3;
                                        ge=0;
                                }
                        }
                }
        }
        void timer0() interrupt 1
        {
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                T++;
        }
        void interrupt_0() interrupt 0
        {
        k=1;
        }
        void interrupt_1() interrupt 2
        {
                kk=1;
         }

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

使用道具 举报

沙发
ID:89515 发表于 2018-10-31 15:35 | 只看该作者
keil是程序编译软件,不是仿真软件
回复

使用道具 举报

板凳
ID:157238 发表于 2018-10-31 17:04 | 只看该作者
你可以下载个proteus仿真一下。https://pan.baidu.com/s/1qhC2XEH_ddJG-7YPJokqgA  
这是个proteus7.8的安装文件。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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