单片机程序教学实例.doc
文本预览下载声明
第五章
实例一:INTO控制LED
C: 汇编:
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
sbit LED=P0^0;
void main()
{
LED=1;
EA=1;
EX0=1;
TCON=0x01;
while(1);
}
void External_Interrupt_0() interrupt 0
{
LED=~LED;
}
实例2:TIMER0控制LED
C:
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
sbit LED=P0^0;
uchar T_Count=0;
void main()
{
TMOD=0x00;
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
IE=0x82;
TR0=1;
while(1);
}
void LED_Flash()interrupt 1
{
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
if(++T_Count==100)
{
LED=!LED;
T_Count=0;
}
}
实例3:串行数据转并行
#includereg52.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
void Delay(uint x)
{
uchar i;
while(x--)
for(i=0;i120;i++);
}
void main()
{
uchar c=0x80;
SCON=0x00;
TI=1;
while(1)
{
c=_crol_(c,1);
SBUF=c;
while(TI==0);
TI=0;
Delay(400);
}
}
实例4:并行数据转串行
#includereg52.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
sbit SPL=P2^5;
void Delay(uint x)
{
uchar i;
while(x--)
for(i=0;i120;i++);
}
void main()
{
SCON=0x10;
while(1)
{
SPL=0;
SPL=1;
while(RI==0);
RI=0;
P0=SBUF;
Delay(20);
}
}
实例5:甲机通过串口控制乙机
甲:
#includereg52.h
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P0^0;
sbit LED2=P0^3;
sbit K1=P1^0;
void Delay(uint x)
{
uchar i;
while(x--)
{for(i=0;i120;i++);}
}
void Send(uchar c)
{
SBUF=c;
while(TI==0);
TI=0;
}
void main()
{ uchar Operation_NO=0;
SCON=0x40;
TMOD=0x20;PCON=0x00;
TH1=0xf4; TL1=0xf4;
TI=0; TR1=1;
while(1)
{
if(K1==0)
{
while(K1==0);
Operation_NO=(Operation_NO+1)%4;
}
switch(Operation_NO)
{
case 0:LED1=LED2=1;break;
case 1:Send(A);LED1=~LED1;LED2=1;break;
case 2:Send(B);LED2=~LED2;LED1=1;break;
case 3:Send(C);LED1=~LED1;LED2=LED1;break;
}
Delay(100);
}
}
乙:
#includereg52.h
#defin
显示全部