background image

体的区别在于:后者定义了更多的地址空间。
     //在 Keil 安装文件夹中,找到相应的文件,比较一下便知!
     sbit P1_0 = P1 ^ 0;
     void main (void)
{
   while(1)
   {
    P1_0 = 0;//低电平有效,如果把 LED 反过来接那么就是高电平有效
   }
}

     就那么简单,我们就把接在单片机 P1_0 上的 LED 点亮了,当然 LED 是低
电平,才能点亮。因为我们把 LED 的正通过电阻接至 VCC。
     P1_0 = 0; 类似与 C

 

语言中的赋值语句,即把 0 赋给单片机的 P1_0 引脚,

让它输出相应的电平。那么这样就能达到了我们预先的要求了。
while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。如果我们
要试着点亮其他的 LED,也类似上述语句。这里就不再讲了。
     点亮了几个 LED 后,是不是让我们联想到了繁华的街区上流动的彩灯。我
们是不是也可以让几个 LED 依次按顺序亮呢?答案是肯定的!其
实显示的原理很简单,就是让一个 LED 灭后,另一个立即亮,依次轮流下去。 
假设我们有 8 个 LED 分别接在 P1 口的 8 个引脚上。硬件连接,在
P1_1--P1_7 上再接 7 个 LED 即可。例程如下:
#include<reg51.h>

sbit P1_0 = P1 ^ 0;
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 P1_6 = P1 ^ 6;
sbit P1_7 = P1 ^ 7;

void Delay(unsigned char a)
{
   unsigned char i;
   while( --a != 0)
   {
    for(i = 0; i < 125; i++);   //

 

一个 ; 表示空语句,CPU 空转。

   }           //i 从 0 加到 125,CPU 大概就耗时 1 毫秒
}

void main(void)
{