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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19839|回復: 0
打印 上一主題 下一主題
收起左側

學習單片機的13個經典實例

[復制鏈接]
跳轉到指定樓層
樓主
ID:17888 發表于 2017-6-3 18:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
學習單片機
//實例1:用單片機控制第一個燈亮


#include<reg51.h>  //包含51單片機寄存器定義的頭文件
void main(void)
  {
    P1=0xfe; //P1=1111 1110B,即P1.0輸出低電平
  }
//實例2:用單片機控制一個燈閃爍:認識單片機的工作頻率


#include<reg51.h>    //包含單片機寄存器的頭文件
/                                       
函數功能:延時一段時間
                                         /
void delay(void)        //兩個void意思分別為無需返回值,沒有參數傳遞
{
  unsigned int i;       //定義無符號整數,最大取值范圍65535
  for(i=0;i<20000;i++)  //20000次空循環
        ;               //什么也不做,等待一個機器周期
}
/                                                      
函數功能:主函數 C語言規定必須有也只能有1個主函數)
                                                        /
void main(void)
{
  while(1)      //無限循環
   {
          P1=0xfe;   //P1=1111 1110BP1.0輸出低電平
          delay();   //延時一段時間
          P1=0xff;   //P1=1111 1111BP1.0輸出高電平
          delay();  //延時一段時間
         }
}


//實例3:將 P1口狀態分別送入P0P2P3口:認識I/O口的引腳功能
#include<reg51.h>   //包含單片機寄存器的頭文件
/                                                      
函數功能:主函數 C語言規定必須有也只能有1個主函數)
                                                        /

void main(void)
{
    while(1)                   //無限循環
          {         
                 P1=0xff;        // P1=1111 1111B,熄滅LED
            P0=P1;                // P1口狀態送入P0
                 P2=P1;                 // P1口狀態送入P2
       P3=P1;                 // P1口狀態送入P3
          }
}


//實例4:使用P3口流水點亮8LED
#include<reg51.h>   //包含單片機寄存器的頭文件
/                                       
函數功能:延時一段時間
                                         /

void delay(void)
   {
          unsigned char i,j;
           for(i=0;i<250;i++)
                 for(j=0;j<250;j++)                  
                   ;
          }
/                                                      
函數功能:主函數
                                                        /
void main(void)
{
   while(1)
          {
                   P3=0xfe;   //第一個燈亮
                         delay();   //調用延時函數
                         P3=0xfd;   //第二個燈亮
                         delay();   //調用延時函數
                        P3=0xfb;   //第三個燈亮
                         delay();   //調用延時函數
                        P3=0xf7;   //第四個燈亮
                         delay();   //調用延時函數
                        P3=0xef;   //第五個燈亮
                   delay();   //調用延時函數
                        P3=0xdf;   //第六個燈亮
                    delay();   //調用延時函數
                        P3=0xbf;   //第七個燈亮
                   delay();   //調用延時函數
                        P3=0x7f;   //第八個燈亮
                   delay();   //調用延時函數  
         }

}

             //實例7:通過對P3口地址的操作流水點亮8LED
#include<reg51.h>   //包含單片機寄存器的頭文件
sfr x=0xb0;   //P3口在存儲器中的地址是b0H, 通過sfr可定義8051內核單片機
          //的所有內部8位特殊功能寄存器,對地址x的操作也就是對P1口的操作
/                                       
函數功能:延時一段時間
                                         /
void delay(void)
   {
          unsigned char i,j;
           for(i=0;i<250;i++)
                 for(j=0;j<250;j++)                 
                   ;   //利用循環等待若干機器周期,從而延時一段時間
          }
/                                         
函數功能:主函數
                                          /
void main(void)
{
    while(1)
          {
                    x=0xfe;   //第一個燈亮
                         delay();  //調用延時函數
                          x=0xfd;  //第二個燈亮
                         delay();  //調用延時函數
                         x=0xfb;  //第三個燈亮
                         delay();  //調用延時函數
                         x=0xf7;  //第四個燈亮
                         delay();  //調用延時函數
                        x=0xef;   //第五個燈亮
                   delay();  //調用延時函數
                        x=0xdf;   //第六個燈亮
                    delay();  //調用延時函數
                        x=0xbf;   //第七個燈亮
                   delay();  //調用延時函數
                        x=0x7f;   //第八個燈亮
                   delay();  //調用延時函數   
        }

}

        //實例8:用不同數據類型控制燈閃爍時間
#include<reg51.h>   //包含單片機寄存器的頭文件
/                                                      
函數功能:用整形數據延時一段時間
                                                      /
void int_delay(void) //延時一段較長的時間
{
  unsigned int m;    //定義無符號整形變量,雙字節數據,值域為0~65535
  for(m=0;m<36000;m++)
                         ;          //空操作      
}
/                                                      
函數功能:用字符型數據延時一段時間
                                                      /
void char_delay(void) //延時一段較短的時間
{
   unsigned char i,j;   //定義無符號字符型變量,單字節數據,值域0~255
        for(i=0;i<200;i++)
          for(j=0;j<180;j++)
                           ;        //空操作
}
/                                                      
函數功能:主函數
                                                      /
void main(void)  
{
  unsigned char i;
  while(1)
        {
          for(i=0;i<3;i++)
                 {
             P1=0xfe;     //P1.0口的燈點亮
                  int_delay(); //延時一段較長的時間
                  P1=0xff;     //熄滅
                  int_delay(); //延時一段較長的時間
                 }
     for(i=0;i<3;i++)
                 {
             P1=0xef;     //P1.4口的燈點亮
                  char_delay(); //延時一段較長的時間
                  P1=0xff;     //熄滅
                  char_delay(); //延時一段較長的時間
                 }         

          }

}



//實例9:用P0口、P1 口分別顯示加法和減法運算結果
#include<reg51.h>
void main(void)   
{  
  unsigned char m,n;
  m=43;     //即十進制數2x16+11=43
  n=60;     //即十進制數3x16+12=60
  P1=m+n;  //P1=103=0110 0111B,結果P1.3P1.4P1.7 口的燈被點亮
  P0=n-m;  //P0=17=0001 0001B,結果P0.0P0.4的燈被熄滅
}




//實例10:用P0P1口顯示乘法運算結果
#include<reg51.h> //包含單片機寄存器的頭文件
void main(void)  
{
  unsigned char m,n;
  unsigned int s;
  m=64;
  n=71;
  s=m n;       //s=64 71=4544,需要16位二進制數表示,高8位送P1口,低8位送P0
               //由于4544=17 256+192=H3 16 16 16+H2 16 16+H1 16+H0
                                        //兩邊同除以256,可得17+192/256=H3 16+H2+H1 16+H0/256
                                        //因此,高816進制數H3 16+H2必然等于17,即4544除以256的商
                                        //816進制數H1 16+H0必然等于192,即4544除以256的余數

  P1=s/256;     //8位送P1口 ,P1=17=11H=0001 0001B, P1.0P1.4口滅,其余亮
  P0=s%256;     //8位送P0, P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7口滅,其余亮
}


//實例11:用P1P0口顯示除法運算結果
#include<reg51.h>   //包含單片機寄存器的頭文件
void main(void)  
{
  P1=36/5;          //求整數
  P0=((36%5) 10)/5; //求小數
  while(1)         
    ;              //無限循環防止程序“跑飛”
}




//實例12:用自增運算控制P08LED流水花樣
#include<reg51.h>   //包含單片機寄存器的頭文件
/                                                      
函數功能:延時一段時間
                                                      /
void delay(void)
{
   unsigned int i;   
        for(i=0;i<20000;i++)
            ;
}
/                                                      
函數功能:主函數
                                                      /
void main(void)  
{
  unsigned char i;
  for(i=0;i<255;i++)  //注意i的值不能超過255
   {
          P0=i;    //i的值送P0
          delay(); //調用延時函數
        }
}



//實例13:用P0口顯示邏輯""運算結果
#include<reg51.h>   //包含單片機寄存器的頭文件
void main(void)  
{
  P0=(4>0)&&(9>0xab);//將邏輯運算結果送P0
  while(1)
    ;    //設置無限循環,防止程序“跑飛”

評分

參與人數 2黑幣 +10 收起 理由
羅景衡 + 5 共享資料的黑幣獎勵!
259654 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产区 | 亚洲精品久久 | 国产日韩一区 | 久久久国产一区二区三区 | 亚洲精品 在线播放 | 国产精品海角社区在线观看 | 91精品一区 | 中文字幕精品一区 | 成人综合一区 | 精品亚洲视频在线 | 亚洲精品二区 | 黄色一级视频免费 | 久久精品国产v日韩v亚洲 | 国产精彩视频 | 美女天天干 | 国产精品一二三区 | 欧美中文字幕一区二区 | 日日天天 | 人人爽日日躁夜夜躁尤物 | 欧美另类日韩 | 欧美日韩一区二区在线播放 | 亚洲人成人一区二区在线观看 | 亚卅毛片 | 国产精品日本一区二区不卡视频 | 久久久久久99 | 精品一级电影 | 欧美99久久精品乱码影视 | 欧美精品国产精品 | 久久最新| 999久久 | 91一区| 天天影视网天天综合色在线播放 | 亚洲三级av | 免费在线观看h片 | 国产高清不卡 | 欧美激情视频一区二区三区在线播放 | 逼逼网| 日韩1区2区| 亚洲综合无码一区二区 | 亚洲三区视频 | 亚洲福利视频一区二区 |