PIC单片机C语言程序设计(15)
) 调用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 全亮 } 说明:a. 上述程序中,延时函数带形参数M,并由一个for 语句组成的。 b. 主函数main( ) 调用delay(M) 时, 其M 值分别是45000(1 秒)、95000(2 秒) 和145000(3 秒)。 c. LED 灯点亮时的无限循环,由while 语句完成。 d. 上述程序都以LED 的各功能函数lightl();light2( );light3( ) 完成。程序运行时,由主函数main( ) 调用各LED 的功能函数和延时函数,此方法是编辑复杂C 程序所必备的。 3. PIC 单片机端口的位定义 PIC 单片机是一种系列产品, 其端口数和端口的位与具体型号有关。如PIC16F877 的端口有PORT
- 基于PIC单片机的智能型漏电断路器设计(11-25)
- 基于PIC单片机的无线实时监控防盗系统的设计与实现(11-18)
- PIC单片机键盘矩阵扫描C语言程序(12-02)
- PIC单片机控制第一个发光管闪动程序(12-02)
- PIC单片机驱动LCD12864液晶显示闪动字体程序(12-02)
- PIC单片机控制8位流水灯C语言程序(12-02)