proteus与keil Cx51的单片机仿真(串行通信口)
电路图:
C程序:
#include
#include
#include
#define uchar unsigned char//宏定义
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P2_0=P2^0;
uchar code discode[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//串行方式下共阳极数码管段码表0~9
unsigned char leddis[4]={0,1,2,3};//显存,有几个数码管进行定义
void display(void)//数码管显示函数
{
unsigned char count;//数码管个数
P2_0=0;//P2.0引脚输出清零信号,对74LS164清零
_nop_();
_nop_();//延时,保证清零完成
P2_0=1;//结束对74LS164清零
for(count=4;count>0;count--)
{
SBUF=discode[leddis[count-1]];
while(TI==0);TI=0;
}
}
void main()
{
SCON=0x00;//设定UART的工作方式为方式0
leddis[0]=0;leddis[1]=1;leddis[2]=2;leddis[3]=3;//显示内容初始化
display();//显示函数
while(1)
{
if(P1_1==0)//K01按下,即P1_1被按下,显示2010
{leddis[0]=2;leddis[1]=0;leddis[2]=1;leddis[3]=0;
display();
P1_1=1;}
if(P1_2==0)//K02按下,即P1_2被按下,显示1987
{leddis[0]=1;leddis[1]=9;leddis[2]=8;leddis[3]=7;
display();
P1_2=1;}
if(P1_3==0)//K03按下,即P1_3被按下,显示0606
{leddis[0]=0;leddis[1]=6;leddis[2]=0;leddis[3]=6;
display();
P1_3=1;}
if(P1_4==0)//K04按下,即P1_4被按下,显示1988
{leddis[0]=1;leddis[1]=9;leddis[2]=8;leddis[3]=8;
display();
P1_4=1;}
if(P1_5==0)//K05按下,即P1_5被按下,显示1224
{leddis[0]=1;leddis[1]=2;leddis[2]=2;leddis[3]=4;
display();
P1_5=1;}
}
}
proteuskeilCx51单片机仿真串行通信 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)