2.led灯闪烁

来源:互联网 发布:js调用动态链接库 编辑:程序博客网 时间:2024/04/28 17:02

 


P1口上的第一个发光二极管L1不停地一亮一灭,闪烁的时间间隔为0.2

汇编:

ORG 0
START: CLR P1.0
LCALL DELAY
SETB P1.0
LCALL DELAY
LJMP START
DELAY: MOV R5,#20 ;
延时子程序,延时0.2
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END


C语言:

#include <AT89X51.H>


sbit L1=P1^0;

void delay02s(void) //
延时0.2秒子程序
{
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}

 void main(void)
{
while(1)
{
L1=0;
delay02s();
L1=1;
delay02s();
}
}

 


Lesson2_1

#include <REG52.H>


sbit P1_0=P1^0;//赋值法,第一个发光管闪烁

 

unsigned int a;//要定义变量

void main()

{while(1)

       {P1_0=0;灯亮

       a=50000;//最大值65535

       while(a--);//while语句后面需要分号

       P1_0=1;//灯灭

       a=50000;//保持

       while(a--);

       }

}

 


Lesson2_2

#include <REG52.H>

#include <intrins.H>


sbit P1_0=P1^0;

unsigned int a,b,c;

void delay(unsigned int);//第一个灯闪烁,调用子函数法

 

void main()

{while(1)

       {P1_0=0;

       delay(2000);

       P1_0=1;

         delay(2000);

       }

}

void delay(unsigned int x)

{

for(c=500;c>0;c--);

for(a=5000;a>0;a--);

for(b=x;b>0;b--);

}

 


 

 

Lesson3_3第一个灯闪烁,启用中断定时器法(内部中断T1

#include<reg52.h>

sbit P11=P1^0;

unsigned char a,num;


void main()

{    

   num=0;

   EA=1;//中断总允许

       ET1=1;//开发T1的中断允许

       TMOD=0x10;//工作方式216位,216次方=65536

       TH1=(65536-50000)/256;//定时器高八位装数

       TL1=(65536-50000)%256;//50ms

       TR1=1;//启动定时器1

       while(1)

              {

                     if(num==2)//2*50ms=1s

                     { 

                            num=0;

                            P11=~P11;取反,灯灭

                    }

              }

}

void time1() interrupt 3using 1//标号,中断子函数无需函数声明

{

       TH1=(65536-50000)/256;

       TL1=(65536-50000)%256;

       num++;

}

 

 

 

 

原创粉丝点击