|
單片機(jī)小白,網(wǎng)上找的程序,有幾點(diǎn)問題不懂,希望大神解答:這段程序中a的值是多少,為什么最小亮度設(shè)置是1,最大是100,而總等級數(shù)是101,這應(yīng)該怎么理解,不應(yīng)該是100嗎。萬分感謝。
單片機(jī)源碼:
- #include <REG51.h>//51頭文件
- /****************************************************************/
- //定義亮度變化
- #define DY_PORT P2 //設(shè)置LED連接的I/O組
- #define DY_PWM 101 //設(shè)置明亮的總級數(shù)(級數(shù)過大會出現(xiàn)閃爍)
- (值域:0~65535)
- #define DY_MAX 100 //設(shè)置最大亮度(值域:小于明亮總級數(shù))
- #define DY_MIN 1 //設(shè)置最小亮度(值域:明亮大于等于1,小于最大亮度)
- sbit DY_KEY1 = P1 ^ 0; //亮度加
- sbit DY_KEY2 = P1 ^ 1; //亮度減
- /****************************************************************/
- // 1ms延時(shí)程序(12MHz 10倍于51單片機(jī)速度時(shí))
- void delay (unsigned inta){
- unsigned char i;
- while( --a != 0){
- for(i = 0; i < 12; i++);
- }
- }
- /****************************************************************/
- //顯示程序(50ms的PWM寬度)
- void display (unsignedint a){
- DY_PORT = 0x00; //LED小燈亮
- delay (a); //延時(shí)a的長度
- DY_PORT = 0xff; //LED小燈滅
- delay (DY_PWM-a); //延時(shí)總PWM長度減a
- }
- /****************************************************************/
- //主程序
- void main (void){
- unsigned int k=5;
- while (1){
- display(k); //
- if(DY_KEY1 == 0){ //如果按鍵按下則繼續(xù)
- delay(20); //消抖延時(shí)20mS
- if(DY_KEY1 == 0){ //如果按鍵按下則繼續(xù)
- k++;
- if(k>DY_MAX){
- k = DY_MAX;
- }
- while(DY_KEY1 == 0); //等待按鍵松開
- }
- }
- if(DY_KEY2 == 0){ //如果按鍵按下則繼續(xù)
- delay(20); //消抖延時(shí)20mS
- if(DY_KEY2 == 0){ //如果按鍵按下則繼續(xù)
- k--;
- if(k<DY_MIN){
- k = DY_MIN;
- }
- while(DY_KEY2 == 0); //等待按鍵松開
- }
- }
- }
- }
復(fù)制代碼
|
|