#include ”reg52.h“ //包含特殊功能寄存器定义的头文件(52系列)sbit LED = P2^0 ; //位地址声明,(s小写,P大写)void main() //主函数 ( 对于任何一个C程序必须有且仅有一个main函数){ LED = 0; //给低电位}
小灯为什么不亮呢?这是因为单片机默认高电位,给P2^0附上低电位,和地没有电势差,不导电,LED就不会亮。把LED = 0; 改成LED=1;
但是在实际应用中会产生问题。可能程序空间的代码容量很大,但是实际上代码没用那么多行,再继续运行下去,是未知的内容,一旦执行下去就会出错,从而导致单片机自动复位,所以通常在程序中加入一个死循环,避免让程序乱运行。#include ”reg52.h“ sbit LED = P2^0 ; void main() 或者 void main(){ { while(1) LED = 1; { while(1); LED = 1; } } }如果想让LED = 0时让小灯亮,这时候就需要外部供电。
但在仿真中,这都是理想化的。当时我学的时候直接给小灯供电,烧坏了不少小灯。目前主流的单片机的电源一般是5V和3.3V。一般的LED正向导通电压是1.8~2.2V,工作电流一般在1~20mA之间,当电流超过20mA时,LED就可能烧坏了。电流越大,烧坏的可能越大。所以常加一电阻,限制整条通路的电流大小。用I=U/R计算。