PIC单片机C语言程序设计(15)
说明: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 全亮
}
评论