单片机LED闪烁实验:
#include "reg51.h"
typedef unsigned char u8; typedef unsigned int u16; /*小于65535*/
#define LED P0
void delay3s(void) //误差 0us { unsigned char a,b,c; for(c=189;c>0;c--) for(b=230;b>0;b--) for(a=33;a>0;a--); }
void main () { while (1) { LED=0x00; delay3s() ; LED=~LED; delay3s() ; } } 中main函数中的LED控制口替换成以下编码: while (1) { LED=0x00; delay3s() ; LED=0x255; delay3s() ; } 结论, 我的理解(我的单片机二极管低电平亮)是LED=0x00;对应的二进制数(0000 0000)全亮,LED=0x255;时对应二进制(1111 1111)全灭才对。但3秒后只有D1,D3,D5,D7四个灯管灭。原本的代码里的LED=~LED;的话达到预期效果全灭。不知道是不是我的理解错了。
|