PIC單片機C語言程序設(shè)計(15)
說明:a. 上述程序中,延時函數(shù)帶形式參數(shù)K,并由do-while 語句組成。
b. 主函數(shù)main() 調(diào)用delay(k) 時,其K 分別是45000(1 秒)、98000(2 秒)、和155000(3秒)。
c.LED 燈點亮?xí)r的無限循環(huán),由while(1) 語句完成。
?。?)C 程序二,文件名為pic10.c, 清單如下:
#include pic.h> // 頭文件
void delay( K ) // 延時函數(shù)
unsigned long int K;
// 形參數(shù)(k) 說明
{
unsigned long int d=K;
// 說明語句
while(--d)
// 由while 組成的延時執(zhí)行語句
{;
}
}
main( ) // 主函數(shù)開始
{
TRISB=0x00
// 設(shè)置PORTB 口全為輸出
INTCON=0x00; // 關(guān)閉所有中斷
PORTB=0x00; //RB 口先送低電平
loop: // 語句標(biāo)號(無限循環(huán))
PORTB=0x55;
//RB 口外接LED 其1、3、5、7 點亮
delay(37000);
// 點亮的LED 延時1 秒后關(guān)閉
PORTB=0xAA;
//RB 口外接LED 其2、4、6、8 點亮
delay(74000 );
// 點亮的LED 延時2 秒后關(guān)閉
PORTB=0xFF; //RB 口外接LED 全亮
delay(111000);
// 全亮的LED 延時3 秒后關(guān)閉
goto loop; // 跳轉(zhuǎn)到loop 處循環(huán)
}
說明:a. 上述程序中,延時函數(shù)帶形參數(shù)k,且由while 語句組成。
b. 主函數(shù)main( ) 調(diào)用delay(k) 時,其k 分別是37000(1 秒)、74000(2 秒)和1110000(3 秒)。
c. LED 燈點亮?xí)r的無限循環(huán),由goto 無條件轉(zhuǎn)移執(zhí)行語句完成。其中l(wèi)oop 為語句標(biāo)號。對goto 語句使用時應(yīng)慎重,在簡單的C 程序中使用goto 語句是必要的,但編輯復(fù)雜的C 程序結(jié)構(gòu),會使程序的可讀性變差。
?。?) C 程序三,文件名為pic11.c, 清單如下:
#include pic.h> // 頭文件
unsigned int h; // 無符號的整型變量
void delay(unsigned long int M)
// 延時函數(shù)開始
{
unsigned int long i,j; // 說明語句
for(i=0;i=81;i++)
// 由兩個for 語句組成的
for(j=0;j=M;j++) // 延時執(zhí)行語句
continue; // 繼續(xù)循環(huán)
}
main( ) // 主函數(shù)開始
{
TRISB=0x00;
// 設(shè)置PORTB 口全為輸出
INTCON=0x00; // 關(guān)閉所有中斷
PORTB=0x00; //RB 口先送低電平
h=0; // 給h 賦置0
do
// do-while 語句開始循環(huán)
{
PORTB=0x55;
//RB 口外接LED 其1、3、5、7 點亮
delay(500);
// 點亮的LED 延時1 秒后關(guān)閉
PORTB=0xAA;
//RB 口外接LED 其2、4、6、8 點亮
delay(1000);
// 點亮的LED 延時2 秒后關(guān)閉
PORTB=0xFF; // RB 口外接LED 全亮
delay(1500);
// 全亮的LED 延時3 秒后 關(guān)閉
h++; // h 自增量
}
while(h=100); //h 自增不滿足條件時
h=0; // 給h 賦值0
return; // 返回
}
說明:a. 上述程序中,延時函數(shù)帶形參數(shù)M,并由二個for 語句組成(可以是多個for 語句或一個for 語句)。
b. 主函數(shù)main( ) 調(diào)用delay(M) 時,M 值分別是500(1 秒)、1000(2 秒)和1500(3 秒)。
c. LED 燈點亮?xí)r的無限循環(huán)由do_while 語句完成,其while(h =100) 中的100 可任意選取大于0 的其他值。
?。?)C 程序四,文件名為pic12.c,清單如下:
#include pic.h> // 頭文件
void delay(unsigned long int M)
// 延時函數(shù)開始
{
unsigned int long j; // 說明語句
for(j=0;j=M;j++)
// 由一個for 語句組成的延時語句
continue; //for 條件滿足繼續(xù)循環(huán)
}
void light1( );
// 聲明RB 口點LED 燈函數(shù)1
void light2( );
// 聲明RB 口點LED 燈函數(shù)2
void light3( );
// 聲明RB 口點LED 燈函數(shù)3
main( ) // 主函數(shù)開始
{
TRISB=0x00;
// 設(shè)置PORTB 口全為輸出
INTCON=0x00; // 關(guān)閉所有中斷
PORTB=0x00; //RB 口先送低電平
while(1) // 永久循環(huán)開始
{
light1( ); // 調(diào)用LED 燈函數(shù)
delay(45000); // 調(diào)用延時函數(shù)(1 秒)
light2( ); // 調(diào)用LED 燈函數(shù)2
delay(95000); // 調(diào)用延時函數(shù)(2 秒)
light3( ); // 調(diào)用LED 燈函數(shù)3
delay(145000); // 調(diào)用延時函數(shù)(3 秒)
}
}
void light1( ) //LED 燈函數(shù)1
{
PORTB=0x55;
// RB 口外接LED 其1、3、5、7 點亮
}
void light2( ) //LED 燈函數(shù)2
{
PORTB=0xAA;
//RB 口外接LED 其2、4、6、8 點亮
}
void light3( ) //LED 燈函數(shù)3
{
PORTB=0xFF; //RB 口外接LED 全亮
}
評論