久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51系列-C語言程序詳解

作者:huqin   來源:本站原創(chuàng)   點擊數:  更新時間:2014年04月19日   【字體:

 1.單個LED燈,單個按鍵

//C語言的頭文件    //這是第一種注釋方式;

#include

#include <> //預處理命令

 void main(void)                //主函數名,必須有一個主函數,void為數據類型

 {

 unsigned int a;           //定義變量,a為int類型,無符號整型。語句必須分號結尾

  

  do{                            //do-while 組成的循環(huán)過程,過程的開始

 for (a=0; a<500; a++);  //這是一個條件循環(huán),判斷a的值是否小于500,真循環(huán)-耗時,假轉下句

P1_0 = 0;         //位賦值語句,設 P1.0 口為低電平—置0,點亮 LED

for (a=0; a<500; a++);        //這又是一個判斷循環(huán)

P1_0 = 1;             //設 P1.0 口為高電平,熄滅 LED

   }

 while(1);            //do-while 組成循環(huán)過程的末尾,需要對do的過程進行一次判斷

}

 

程序說明:

While(條件語句) 與 for(條件語句) 單獨使用所表達的循環(huán),是在句首先執(zhí)行判斷,為真循環(huán),為假轉下一句執(zhí)行。其中語句的括號內為判斷條件語句。

Do-while合用,是需要對do的過程再進行一次判斷。While(條件語句)為真循環(huán),為假跳轉。while(1)表示高電平為真循環(huán)do,否則,低電平跳轉。由于P1.0 口為高電平結尾,因此,又回到do再循環(huán),無限反復。

 

2.多個LED燈,單個按鍵

#include

#include <> //預處理命令

 void main(void)                //主函數名,必須有一個主函數,void為數據類型

 {

 unsigned int a;           //定義變量,a為int類型,無符號整型。語句必須分號結尾

    do{                            //do-while 組成的循環(huán)過程,過程的開始

 for (a=0; a<500; a++);  //這是一個條件循環(huán),判斷a的值是否小于500,真循環(huán)-耗時,假轉下句

P1_0 = 0;         //位賦值語句,設 P1.0 口為低電平—置0,點亮 LED

P1_1 = 0;

P1_2 = 0;

P1_3 = 0;

for (a=0; a<500; a++);        //這又是一個判斷循環(huán)

P1_0 = 1;             //設 P1.0 口為高電平,熄滅 LED

P1_1 = 1;

P1_2 = 1;

P1_3 = 1;

   }

 while(1);            //do-while 組成循環(huán)過程的末尾,需要對do的過程進行一次判斷

}

 

程序說明:

每個口用位賦值指令來開關P1口的各個LED。可以用字節(jié)賦值指令一次性的開關8位P1口LED。

P1=0;     //P1口8位置低電平,點亮8個LED

P1=1;      // P1口8位置低電平,關閉8個LED

 

#include

#include <> //預處理命令

 void main(void)                //主函數名,必須有一個主函數,void為數據類型

 {

 unsigned int a;           //定義變量,a為int類型,無符號整型。語句必須分號結尾

    do{                            //do-while 組成的循環(huán)過程,過程的開始

 for (a=0; a<500; a++);  //這是一個條件循環(huán),判斷a的值是否小于500,真循環(huán)-耗時,假轉下句

P1 = 0;         //字節(jié)賦值語句,設 P1 口為低電平—置0,點亮 8個LED

for (a=0; a<500; a++);        //這又是一個判斷循環(huán)

P = 1;             //設 P1 口為高電平,熄滅 LED

   }

 while(1);            //do-while 組成循環(huán)過程的末尾,需要對do的過程進行一次判斷

}

 

 

l  LED循環(huán)問題(跑馬燈):

每個口用位賦值指令來開關P1口的各個LED,用位指令賦值順序開關,實現跑馬燈。

 

#include

#include <> //預處理命令

 void main(void)                //主函數名,必須有一個主函數,void為數據類型

 {

 unsigned int a;           //定義變量,a為int類型,無符號整型。語句必須分號結尾

    do{                            //do-while 組成的循環(huán)過程,過程的開始

 for (a=0; a<500; a++);  //這是一個條件循環(huán),判斷a的值是否小于500,真循環(huán)-耗時,假轉下句

P1_0 = 0;         //位賦值語句,設 P1.0 口為低電平—置0,點亮 LED

P1_1 = 1;

P1_2 = 1;

P1_3 = 1;

for (a=0; a<500; a++);        //這又是一個判斷循環(huán)

P1_0 = 1;             //設 P1.0 口為高電平,熄滅 LED

P1_1 = 0;

P1_2 = 1;

P1_3 = 1;

 

for (a=0; a<500; a++);        //這又是一個判斷循環(huán)

P1_0 = 1; 

P1_1 = 1;

P1_2 = 0;

P1_3 = 1;

 

for (a=0; a<500; a++);        //這又是一個判斷循環(huán)

P1_0 = 1;

P1_1 = 1;

P1_2 = 1;

P1_3 = 0;

 

for (a=0; a<500; a++);        //這又是一個判斷循環(huán)

P1_0 = 1;             //設 P1.0 口為高電平,熄滅 LED

P1_1 = 1;

P1_2 = 1;

P1_3 = 1;

 

   }

 while(1);            //do-while 組成循環(huán)過程的末尾,需要對do的過程進行一次判斷

}

 

用循環(huán)語句實現跑馬燈,需要使用數組—表data。每個字節(jié)--8位來表達P1口各個位的電平高低,也就是亮與滅。

 

#include

#include <> //預處理命令

 void main(void)                //主函數名,必須有一個主函數,void為數據類型

 {

 unsigned int a;           //定義變量,a為int類型,無符號整型。語句必須分號結尾

    do{                            //do-while 組成的循環(huán)過程,過程的開始

 for (a=0; a<500; a++);  //這是一個條件循環(huán),判斷a的值是否小于500,真循環(huán)-耗時,假轉下句

P1 = 0;         //字節(jié)賦值語句,設 P1 口為低電平—置0,點亮 8個LED

for (a=0; a<500; a++);        //這又是一個判斷循環(huán)

P = 1;             //設 P1 口為高電平,熄滅 LED

   }

 while(1);            //do-while 組成循環(huán)過程的末尾,需要對do的過程進行一次判斷

}

3.  鍵盤與數碼管
 

//鍵盤掃描法--數碼管顯示鍵值。行P1.0~3  列P1.4~7

#include

unsigned char code tabyin[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

        0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//0到F的16個鍵值

unsigned char code tabyang[ ]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,

0x88,0x83,0xc6,0xa1,0x86,0x8e};//0到F的16個鍵值

//延時函數

void Delayt(unsigned char t)

{

unsigned char i;

for(t=0;i<=t;t++)

    for(i=0;i<255;i++);

}

//鍵值判斷函數

bit pkey(void)

{

P1=0xf0;

if(P1!=0xf0)

    {

    Delayt(25);

      if(P1!=0xf0)

      return 1;

      else

      return 0;

    }

else

      return 0;

}

 

//主函數

void main(void)

{

unsigned char key,j,k,s;

while(1)

  {

    if(pkey()==1)

    {

      P1=0xfe;

    k=0xfe;

      for(j=0;j<4;j++)

       { 

                  s=P1&0xf0;

        switch(s)

         {

            case 0xe0: key=4*j+0; break;

             case 0xd0: key=4*j+1; break;

              case 0xb0: key=4*j+2; break;

               case 0x70: key=4*j+3; break;

            default: break;

         }

       k=(k<<1)|0x01;

       P1=k;

      }

    }

  P2=0x00;

   P3=0xff;

      P3=tabyang[key];

       Delayt(200);

        P2=tabyin[key];

         Delayt(250);

 

  }

}

關閉窗口

相關文章

主站蜘蛛池模板: 亚洲男人天堂网 | 亚洲欧美日韩一区二区三区四区 | 狠狠五月天| 日本三级韩国三级美三级91 | 在线一区二区三区 | 欧美区在线 | 日韩一区二区在线视频 | 午夜视频在线播放 | 国产高清在线视频 | 国产精品一区二区不卡 | 成人在线视频播放 | 中文字幕在线一区二区三区 | 日韩精品免费一区二区夜夜嗨 | 国产精品区二区三区日本 | 午夜高清| 日韩一区二区三区免费 | 超碰在线观看97 | 精品国产一区二区三区久久久蜜月 | av一区二区在线观看 | 午夜免费网站 | 成人国产精品久久久网站 | 人与拘一级a毛片 | 玖玖久久 | 一区二区福利视频 | 国产黄色一级片 | 亚洲成人欧美 | 成人免费在线 | 国产一二三 | 亚洲区视频 | 天天爱夜夜操 | 久久精品黄色 | 97av在线视频| 国产伦精品一区二区三区免费视频 | 欧美日韩三区 | 五月婷婷色 | 深夜福利视频网站 | 亚洲精品第一页 | 在线观看h片 | wwwxxx欧美 | 97国产精品视频 | 99热亚洲|