單片機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函數(shù)中的LED控制口替換成以下編碼: while (1) { LED=0x00; delay3s() ; LED=0x255; delay3s() ; } 結(jié)論, 我的理解(我的單片機二極管低電平亮)是LED=0x00;對應的二進制數(shù)(0000 0000)全亮,LED=0x255;時對應二進制(1111 1111)全滅才對。但3秒后只有D1,D3,D5,D7四個燈管滅。原本的代碼里的LED=~LED;的話達到預期效果全滅。不知道是不是我的理解錯了。
|