新闻中心

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 全亮

  }



评论


相关推荐

技术专区

关闭