新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)C語言程序設(shè)計(jì)(15)

PIC單片機(jī)C語言程序設(shè)計(jì)(15)

作者: 時(shí)間:2013-01-26 來源:網(wǎng)絡(luò) 收藏

說明:a. 上述程序中,延時(shí)函數(shù)帶形式參數(shù)K,并由do-while 語句組成。

  b. 主函數(shù)main() 調(diào)用delay(k) 時(shí),其K 分別是45000(1 秒)、98000(2 秒)、和155000(3秒)。

  c.LED 燈點(diǎn)亮?xí)r的無限循環(huán),由while(1) 語句完成。

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

  #include pic.h> // 頭文件

  void delay( K ) // 延時(shí)函數(shù)

  unsigned long int K;

  // 形參數(shù)(k) 說明

  {

  unsigned long int d=K;

  // 說明語句

  while(--d)

  // 由while 組成的延時(shí)執(zhí)行語句

  {;

  }

  }

  main( ) // 主函數(shù)開始

  {

  TRISB=0x00

  // 設(shè)置PORTB 口全為輸出

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

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

  loop: // 語句標(biāo)號(hào)(無限循環(huán))

  PORTB=0x55;

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

  delay(37000);

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

  PORTB=0xAA;

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

  delay(74000 );

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

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

  delay(111000);

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

  goto loop; // 跳轉(zhuǎn)到loop 處循環(huán)

  }

  說明:a. 上述程序中,延時(shí)函數(shù)帶形參數(shù)k,且由while 語句組成。

  b. 主函數(shù)main( ) 調(diào)用delay(k) 時(shí),其k 分別是37000(1 秒)、74000(2 秒)和1110000(3 秒)。

  c. LED 燈點(diǎn)亮?xí)r的無限循環(huán),由goto 無條件轉(zhuǎn)移執(zhí)行語句完成。其中l(wèi)oop 為語句標(biāo)號(hào)。對(duì)goto 語句使用時(shí)應(yīng)慎重,在簡(jiǎn)單的C 程序中使用goto 語句是必要的,但編輯復(fù)雜的C 程序結(jié)構(gòu),會(huì)使程序的可讀性變差。

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

  #include pic.h> // 頭文件

  unsigned int h; // 無符號(hào)的整型變量

  void delay(unsigned long int M)

  // 延時(shí)函數(shù)開始

  {

  unsigned int long i,j; // 說明語句

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

  // 由兩個(gè)for 語句組成的

  for(j=0;j=M;j++) // 延時(shí)執(zhí)行語句

  continue; // 繼續(xù)循環(huán)

  }

  main( ) // 主函數(shù)開始

  {

  TRISB=0x00;

  // 設(shè)置PORTB 口全為輸出

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

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

  h=0; // 給h 賦置0

  do

  // do-while 語句開始循環(huán)

  {

  PORTB=0x55;

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

  delay(500);

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

  PORTB=0xAA;

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

  delay(1000);

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

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

  delay(1500);

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

  h++; // h 自增量

  }

  while(h=100); //h 自增不滿足條件時(shí)

  h=0; // 給h 賦值0

  return; // 返回

  }

  說明:a. 上述程序中,延時(shí)函數(shù)帶形參數(shù)M,并由二個(gè)for 語句組成(可以是多個(gè)for 語句或一個(gè)for 語句)。

  b. 主函數(shù)main( ) 調(diào)用delay(M) 時(shí),M 值分別是500(1 秒)、1000(2 秒)和1500(3 秒)。

  c. LED 燈點(diǎn)亮?xí)r的無限循環(huán)由do_while 語句完成,其while(h =100) 中的100 可任意選取大于0 的其他值。

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

  #include pic.h> // 頭文件

  void delay(unsigned long int M)

  // 延時(shí)函數(shù)開始

  {

  unsigned int long j; // 說明語句

  for(j=0;j=M;j++)

  // 由一個(gè)for 語句組成的延時(shí)語句

  continue; //for 條件滿足繼續(xù)循環(huán)

  }

  void light1( );

  // 聲明RB 口點(diǎn)LED 燈函數(shù)1

  void light2( );

  // 聲明RB 口點(diǎn)LED 燈函數(shù)2

  void light3( );

  // 聲明RB 口點(diǎn)LED 燈函數(shù)3

  main( ) // 主函數(shù)開始

  {

  TRISB=0x00;

  // 設(shè)置PORTB 口全為輸出

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

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

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

  {

  light1( ); // 調(diào)用LED 燈函數(shù)

  delay(45000); // 調(diào)用延時(shí)函數(shù)(1 秒)

  light2( ); // 調(diào)用LED 燈函數(shù)2

  delay(95000); // 調(diào)用延時(shí)函數(shù)(2 秒)

  light3( ); // 調(diào)用LED 燈函數(shù)3

  delay(145000); // 調(diào)用延時(shí)函數(shù)(3 秒)

  }

  }

  void light1( ) //LED 燈函數(shù)1

  {

  PORTB=0x55;

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

  }

  void light2( ) //LED 燈函數(shù)2

  {

  PORTB=0xAA;

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

  }

  void light3( ) //LED 燈函數(shù)3

  {

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

  }



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉