点亮一盏LED
程序代码
/********************************************************************
*
* 点亮一盏LED灯
*
********************************************************************/
#include <reg51.h> //此文件中定义了51的一些特殊功能寄存器
void main()
{
while(1)
{
P2= 0xfe;
}
}
程序分析
#include <reg51.h>
想知道这句语句什么意思?我们可以让光标停留在这句话,然后右击鼠标。如下图:
然后我们可以看到弹出的头文件窗口(由于我们现在只用到部分代码,所以就只copy需要的那部分出来),其中代码如下:
/*--------------------------------------------------------------------------
REG51.H
Header file for generic 80C51 and 80C31 microcontroller.
//80C51 and 80C31类微处理器的头文件
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __REG51_H__
#define __REG51_H__
/* BYTE Register */
//SFR是Special Function Register特殊功能寄存器。
//
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
当我们打开头文件时,怎么才知道我们需要用到哪些寄存器呢
LED原理图
发光二极管
结论
共阳极公共端接阳极,低电平有效(灯亮), 共阳极数码管内部发光二极管的阳极(正极)都联在一起,此数码管阳极(正极)在外部只有一个引脚
共阴极公共端接阴极,高电平有效(灯亮),共阴极数码管内部发光二极管的阴极(负极)都联在一起,此数码管阴极(负极)在外部只有一个引脚
P2= 0xfe;
那么从上面得出的结论,我们就很容易知道这句话什么意思了。
延时函数
states(指令数)×12sec×106=Xtal s t a t e s ( 指 令 数 ) × 12 s e c × 10 6 = X t a l
/********************************************************************
* LED闪烁的简单试验
*
********************************************************************/
#include <reg51.h>
void delay(unsigned int i);
void main()
{
while(1)
{
int i;
for(i=5;i>0;i--)
{
P2 = 0x00;
delay(6000);
P2 = 0xff;
delay(6000);
}
P2 = 0xfe;
delay(600);
P2 = 0xfd;
delay(600);
P2 = 0xfb;
delay(600);
P2 = 0xf7;
delay(600);
P2 = 0xef;
delay(600);
P2 = 0xdf;
delay(600);
P2 = 0xbf;
delay(600);
P2 = 0x7f;
delay(600);
}
}
/*******延时函数*************/
void delay(unsigned int i)
{
unsigned char j,k;
for(i; i > 0; i--)
for(j =255; j > 0; j--);
for(k = 510; k > 0; k--);
}