| 题目要求:第1,3,5,7个灯半亮(亮度是全亮时候的一半),其余的全亮。 
 程序测试正常,但我始终不太明白怎么回事,希望解惑。
 (1)程序:
 # include <reg51.h>
 #define uchar unsigned char
 # define led P1     //led接在P1口
 # define Ton 40        //基准脉宽0.04ms
 uchar LEDflag = 0;  //全局变量,最大255,保存T0中断次数
 
 void init();
 void led_on();
 void main()
 {
 init();
 while(1)
 {
 
 led_on();
 
 }
 }
 void init()    //定时器初始化
 {
 TMOD = 0x02;    //T0 方式2,8位自动载入
 TH0 =  256 - Ton;   //T0初始值
 TL0 =  256 - Ton;   //重载值
 TR0 = 1;     //启动T0
 ET0 = 1;     //开T0,T1中断
 EA = 1;     //全局中断允许
 }
 
 void time0_int() interrupt 1 using 3  //T0中断函数,中断1,使用工作组3
 {
 LEDflag++;      //修改LEDflag
 }
 
 void led_on()
 {
 
 if(LEDflag == 0)  // 点亮8个灯
 {
 led = 0x00;
 }
 if(LEDflag == 12)  // 熄灭1,3,5,7灯
 {
 led = 0x55;
 }
 }
 
 |