<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PIC單片機C語(yǔ)言程序設計(15)

PIC單片機C語(yǔ)言程序設計(15)

作者: 時(shí)間:2013-01-26 來(lái)源:網(wǎng)絡(luò ) 收藏
  本文是講座《單片機C 語(yǔ)言》的結束篇,為了幫助大家更好地掌握前面所學(xué)的知識,我們將歸納性地介紹初學(xué)者用C 語(yǔ)言編輯PIC 單片機實(shí)用程序時(shí)應具備的思維方法和基本知識,并通過(guò)下面的實(shí)例進(jìn)行一次小結,以期對大家今后深入學(xué)習PIC 單片機C 語(yǔ)言有所幫助。

  十六、程序的組成

  一個(gè)完整的PIC 單片機C 語(yǔ)言源程序應包括:包含頭文件、變量定義、常量說(shuō)明、函數定義、主函數main( )、若干個(gè)其他功能函數、各種功能C 語(yǔ)句,以及已定義的函數和函數體、注釋等部分組成。

  說(shuō)明:對PIC 單片機中級或中級以下的產(chǎn)品,其頭文件是#includepic.h> 和#includepic1687x.h>; 對高級產(chǎn)品,如PIC18F452 器件,其頭文件是#includepic18.h> 和#include pic18fxx2.h>。

  C 程序的運行,總是從主函數main( ) 開(kāi)始(可以通過(guò)模擬仿真直接觀(guān)察到),由主函數調用其他函數,其他函數也可互相調用, 如此運行工作。而C 語(yǔ)句,又可按其執行方式的不同而分為順序結構、選擇結構和循環(huán)結構等。這里的順序結構, 是指程序按語(yǔ)句的順序逐條執行;選擇結構, 是指程序根據相關(guān)條件選擇的執行順序; 循環(huán)結構, 是指程序根據某條件的存在執行一段程序,直到條件消失為止,若該條件永遠存在,就形成無(wú)限循環(huán)。

  1. 延時(shí)函數的三種表達式

  用匯編語(yǔ)言編輯一個(gè)較大的PIC 單片機程序時(shí),一般分為多個(gè)程序模塊,每個(gè)模塊的子程序實(shí)現一個(gè)特定的功能。而用C 語(yǔ)言編輯該程序時(shí),模塊的功能是用函數實(shí)現的,即函數相當于匯編語(yǔ)言的子程序。下面我們以延時(shí)函數應用的實(shí)例,來(lái)說(shuō)明PIC 單片機C 語(yǔ)言程序的基本組成格式。

  延時(shí)函數是PIC 單片機源程序中出現頻率較高的函數,而且具有相同功能的延時(shí)函數也有多種形式,我們選擇常用的三種延時(shí)函數進(jìn)行討論。

  所引用的三種延時(shí)函數都是由循環(huán)控制語(yǔ)句——while、do_while 和for 等實(shí)現的。

 ?。?)帶形式參數的由for 語(yǔ)句組成的延時(shí)函數。

  void delay(unsigned int k)

  {

  unsigned int i, j;

  fir(i=0;i=81;i++)

  fir(j=0;j=k;j++)

  cONtinue;

  }

  該延時(shí)函數由兩個(gè)for 語(yǔ)句組成,第一個(gè)for語(yǔ)句中的81 是筆者設置的常數(可任意設定),用于使延時(shí)值增加; 第二個(gè)for 語(yǔ)句中的k 是在程序中主函數main( ) 調用delay(k) 時(shí),由用戶(hù)給定的值,k 值不同,延時(shí)時(shí)間就不等, 所以該延時(shí)函數可在一個(gè)C 程序中實(shí)現不同的多個(gè)延時(shí)量,顯然比匯編語(yǔ)言延時(shí)子程序簡(jiǎn)單多了。在延時(shí)量要求較短時(shí), 該延時(shí)函數種的兩個(gè)for 語(yǔ)句的功能可用一個(gè)for 語(yǔ)句來(lái)實(shí)現。

 ?。?)帶形式參數的由while 循環(huán)語(yǔ)句組成的延時(shí)函數。

  Void deley(unsigned long int k)

  {

  Unsigned long int d=k;

  While(--d)

  {;

  }

  {

  此延時(shí)函數簡(jiǎn)單、容易記憶。使用時(shí),在程序中主函數main( ) 調用delay(k) 時(shí),由用戶(hù)給定不同的k 值,亦可實(shí)現多種延時(shí)值。

 ?。?)帶形式參數的由do-while 語(yǔ)句組成的延時(shí)函數。

  Void delay(unsigned long int k)

  {

  Unsigned int long j=o;

  do {

  j++;

  }

  While(j =k);

  j=o;

  }

  該延時(shí)函數簡(jiǎn)單易記。使用時(shí),在程序中主函數main( ) 調用delay(k) 時(shí),由用戶(hù)給定不同的k 值,即可實(shí)現多種延時(shí)值。

  需要說(shuō)明的是,上述由while 循環(huán)語(yǔ)句和由do-while 語(yǔ)句組成的延時(shí)函數中的形式參數,不一定用長(cháng)整型(long ink)。

 ?、?電路功能相同形式不同的四種C 程序

  下面介紹利用PIC16F84A 單片機的PORTB端口外接的8 只LED, 采用四種C 程序控制端口的LED 燈,來(lái)說(shuō)明編輯C 語(yǔ)言程序時(shí)的基本格式及其靈活性。電路參見(jiàn)《電子制作》2009 年9期《單片機C 語(yǔ)言(1)》一文中的圖1,程序流程如圖64 所示,采用的是無(wú)限循環(huán)工作方式。

圖64

 ?。?)C 程序一,文件名為pic09.c, 清單如下:

  #include pic.h> // 頭文件

  void delay(unsigned long int K)

  // 延時(shí)函數開(kāi)始

  {

  unsigned int long j=0;

  // 說(shuō)明語(yǔ)句

  do

  // 由do-while 組成的延時(shí)執行語(yǔ)句

  {

  j++;

  }

  while(j=K);

  j=0;

  }

  main( ) // 主函數開(kāi)始

  {

  TRISB=0x00;

  // 設置PORTB 口全為輸出

  INTCON=0x00; // 關(guān)閉所有中斷

  PORTB=0x00; //RB 口先送低電平

  while(1) // 永久循環(huán)開(kāi)始

  {

  PORTB=0x55;

  //RB 口外接LED 其1、3、5、7 點(diǎn)亮

  delay(45000);

  // 點(diǎn)亮的LED 延時(shí)1 秒后關(guān)閉

  PORTB=0xAA;

  //RB 口外接LED 其2、4、6、8 點(diǎn)亮

  delay(98000);

  // 點(diǎn)亮的LED 延時(shí)2 秒后關(guān)閉

  PORTB=0xFF; //RB 口外接LED 全亮

  delay(155000);

  // 全亮的LED 延時(shí)3 秒后關(guān)閉

  }

  }


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>