新闻中心

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



评论


相关推荐

技术专区

关闭