设计出AT89C52单片机与外设连接的Proteus仿真电路图,并编程

某AT89C52单片机控制系统有2个开关,分别是S1和S2,1个数码管(共阳极)。当S1按下时数码管加1,S2按下时数码管清零。设计出AT89C52单片机与外设连接的Proteus仿真电路图,并编程实现上述要求。

#include<reg52.h>

sbit S1=P3^3;        //定义P3^3端口为S1
sbit S2=P3^4;        //定义P3^4端口为S2

unsigned char num=0;        //定义数码管显示变量

void delay(unsigned int time)        //定义延时子程序
{
    unsigned int i,j;
    for(i=0;i<time;i++)
    {
        for(j=0;j<120;j++);
    }
}

void main()
{
P2=0xff;        //定义数码管端口为输出 
while(1)
{
if(S1==1)        //当S1按下时
{
num++;        //数码管加1
}
else if(S2==1)        //当S2按下时
{
num=0;        //数码管清0
}
P2=num;        //将变量num的值输出到数码管显示 
delay(10);        //延时
}
}