新聞中心

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

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

        作者: 時間:2013-01-26 來源:網絡 收藏

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

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

          c.LED 燈點亮時的無限循環,由while(1) 語句完成。

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

          #include pic.h> // 頭文件

          void delay( K ) // 延時函數

          unsigned long int K;

          // 形參數(k) 說明

          {

          unsigned long int d=K;

          // 說明語句

          while(--d)

          // 由while 組成的延時執行語句

          {;

          }

          }

          main( ) // 主函數開始

          {

          TRISB=0x00

          // 設置PORTB 口全為輸出

          INTCON=0x00; // 關閉所有中斷

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

          loop: // 語句標號(無限循環)

          PORTB=0x55;

          //RB 口外接LED 其1、3、5、7 點亮

          delay(37000);

          // 點亮的LED 延時1 秒后關閉

          PORTB=0xAA;

          //RB 口外接LED 其2、4、6、8 點亮

          delay(74000 );

          // 點亮的LED 延時2 秒后關閉

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

          delay(111000);

          // 全亮的LED 延時3 秒后關閉

          goto loop; // 跳轉到loop 處循環

          }

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

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

          c. LED 燈點亮時的無限循環,由goto 無條件轉移執行語句完成。其中loop 為語句標號。對goto 語句使用時應慎重,在簡單的C 程序中使用goto 語句是必要的,但編輯復雜的C 程序結構,會使程序的可讀性變差。

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

          #include pic.h> // 頭文件

          unsigned int h; // 無符號的整型變量

          void delay(unsigned long int M)

          // 延時函數開始

          {

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

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

          // 由兩個for 語句組成的

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

          continue; // 繼續循環

          }

          main( ) // 主函數開始

          {

          TRISB=0x00;

          // 設置PORTB 口全為輸出

          INTCON=0x00; // 關閉所有中斷

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

          h=0; // 給h 賦置0

          do

          // do-while 語句開始循環

          {

          PORTB=0x55;

          //RB 口外接LED 其1、3、5、7 點亮

          delay(500);

          // 點亮的LED 延時1 秒后關閉

          PORTB=0xAA;

          //RB 口外接LED 其2、4、6、8 點亮

          delay(1000);

          // 點亮的LED 延時2 秒后關閉

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

          delay(1500);

          // 全亮的LED 延時3 秒后 關閉

          h++; // h 自增量

          }

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

          h=0; // 給h 賦值0

          return; // 返回

          }

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

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

          c. LED 燈點亮時的無限循環由do_while 語句完成,其while(h =100) 中的100 可任意選取大于0 的其他值。

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

          #include pic.h> // 頭文件

          void delay(unsigned long int M)

          // 延時函數開始

          {

          unsigned int long j; // 說明語句

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

          // 由一個for 語句組成的延時語句

          continue; //for 條件滿足繼續循環

          }

          void light1( );

          // 聲明RB 口點LED 燈函數1

          void light2( );

          // 聲明RB 口點LED 燈函數2

          void light3( );

          // 聲明RB 口點LED 燈函數3

          main( ) // 主函數開始

          {

          TRISB=0x00;

          // 設置PORTB 口全為輸出

          INTCON=0x00; // 關閉所有中斷

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

          while(1) // 永久循環開始

          {

          light1( ); // 調用LED 燈函數

          delay(45000); // 調用延時函數(1 秒)

          light2( ); // 調用LED 燈函數2

          delay(95000); // 調用延時函數(2 秒)

          light3( ); // 調用LED 燈函數3

          delay(145000); // 調用延時函數(3 秒)

          }

          }

          void light1( ) //LED 燈函數1

          {

          PORTB=0x55;

          // RB 口外接LED 其1、3、5、7 點亮

          }

          void light2( ) //LED 燈函數2

          {

          PORTB=0xAA;

          //RB 口外接LED 其2、4、6、8 點亮

          }

          void light3( ) //LED 燈函數3

          {

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

          }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大城县| 黔西县| 张家港市| 白山市| 色达县| 涿鹿县| 文昌市| 山东省| 开远市| 东乡族自治县| 罗山县| 岑溪市| 青河县| 巢湖市| 南投县| 格尔木市| 黄龙县| 永平县| 县级市| 保山市| 保靖县| 霍林郭勒市| 永兴县| 黄冈市| 大石桥市| 克拉玛依市| 集贤县| 城口县| 东山县| 祁连县| 闸北区| 桑日县| 凌海市| 三台县| 彰化县| 霍山县| 鄂州市| 河池市| 丰都县| 越西县| 阿合奇县|