新聞中心

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

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

        作者: 時間:2013-02-05 來源:網絡 收藏

        (3)倒計時的C 程序。

          根據圖7~ 圖9 編寫的的倒計時C 程序(命名為pic06.c)清單如下:

          #includepic.h>

          #define PORTAIT(add,bit)((unsigned)(add)*8+(bit))

          static bit PORTA_0 @PORTAIT(PORTA,0);

          //pic16F84A

          static bit PORTA_1 @PORTAIT(PORTA,1);

          static bit PORTA_2 @PORTAIT(PORTA,2);

          //A 口的位定義

          static bit PORTA_3 @PORTAIT(PORTA,3);

          static bit PORTA_4 @PORTAIT(PORTA,4);

          unsigned int ttr=0;

          // 無符號整形變量ttr,并賦值0

          unsigned char x=0,sign_a=0;

          // 字符變量X,標志位并賦值0

          void key_server(); // 鍵值服務函數

          void display(unsigned int x);

          // 帶形參X 的顯示函數

          void display_set(unsigned int x);

          // 帶形參X 的鍵值顯示函數

          void delay_1m(); // 按鍵延時函數

          void delay(unsigned long int k ) // 延時函數

          {

          unsigned long int i; // 無符號整形變量i

          for(i=0;i=k;i++) // for 語句

          continue; // 繼續循環

          }

          void display(unsigned int x) // 顯示函數開始

          {

          unsigned int d=5800,unit_bit,ten_bit,

          // 整型變量d 并賦值,個、十位

          unsigned char SEG7[10]={0xc0,0xf9,0xa4,

          0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

          // 引用數組字符段碼

          unit_bit=x%10; //picc 編譯器可識別的個位

          ten_bit=x/10%10; // picc 可識別的十位

          while(d>0) // while 語句

          {

          PORTA|=0x1E; // 關顯示

          PORTB=SEG7[unit_bit];

          // 個位字段碼送B 口

          RA3=0; // 顯示個位

          delay(200); // 延時以便觀察

          RA3=1;  // 關個位顯示

          delay(2); // 延時

          PORTB=SEG7[ten_bit];

          // 十位字段碼送B 口

          RA2=0; // 顯示十位

          delay(200); // 延時以便觀察

          RA2=1; // 關十位顯示

          delay(2); // 延時

          d--; // d 從5800 開始自減量

          if( PORTA_4==0) // K1 未按下

          {

          while(1) // 執行while 語句

          {

          if( PORTA_4==1) // K1 按下,執行以下程序

          {

          sign_a=1;

          x=0;

          d=0;

          RA0=0;

          break; // 跳出循環

          }

          }

          }

          }

          }

          void main( ) // 主程序開始

          {

          TRISB=0x00;

          // 16F84A 口初始化,B 為輸入

          TRISA=0x10; // A4 輸入,其余輸出

          PORTB=0xFF;

          INTCON=0x00;

          PORTA=0xFF; 關顯示

          RA0=0; 關報警

          x=0; // 給整型變量X 賦值0



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 三都| 龙南县| 肥东县| 望都县| 隆化县| 剑川县| 大渡口区| 嵩明县| 桓台县| 吉隆县| 鄂伦春自治旗| 宁城县| 峡江县| 岳阳县| 旺苍县| 页游| 襄垣县| 娱乐| 土默特右旗| 桂平市| 云阳县| 年辖:市辖区| 澳门| 新野县| 湟中县| 保定市| 栾城县| 大理市| 青阳县| 尼玛县| 周至县| 商都县| 延边| 罗田县| 靖州| 黄山市| 临清市| 卓尼县| 游戏| 客服| 德令哈市|