某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); //延时
}
}