新聞中心

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

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

作者: 時間:2013-02-05 來源:網(wǎng)絡(luò) 收藏

(3)倒計(jì)時的C 程序。

  根據(jù)圖7~ 圖9 編寫的的倒計(jì)時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,標(biāo)志位并賦值0

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

  void display(unsigned int x);

  // 帶形參X 的顯示函數(shù)

  void display_set(unsigned int x);

  // 帶形參X 的鍵值顯示函數(shù)

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

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

  {

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

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

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

  }

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

  {

  unsigned int d=5800,unit_bit,ten_bit,

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

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

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

  // 引用數(shù)組字符段碼

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

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

  while(d>0) // while 語句

  {

  PORTA|=0x1E; // 關(guān)顯示

  PORTB=SEG7[unit_bit];

  // 個位字段碼送B 口

  RA3=0; // 顯示個位

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

  RA3=1;  // 關(guān)個位顯示

  delay(2); // 延時

  PORTB=SEG7[ten_bit];

  // 十位字段碼送B 口

  RA2=0; // 顯示十位

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

  RA2=1; // 關(guān)十位顯示

  delay(2); // 延時

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

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

  {

  while(1) // 執(zhí)行while 語句

  {

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

  {

  sign_a=1;

  x=0;

  d=0;

  RA0=0;

  break; // 跳出循環(huán)

  }

  }

  }

  }

  }

  void main( ) // 主程序開始

  {

  TRISB=0x00;

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

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

  PORTB=0xFF;

  INTCON=0x00;

  PORTA=0xFF; 關(guān)顯示

  RA0=0; 關(guān)報警

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



評論


相關(guān)推薦

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

關(guān)閉