PIC單片機(jī)C語言程序設(shè)計(jì)(6)
while(1) // while 循環(huán)語句開始
{
while(x>0)
{
display(x); // 調(diào)顯示函數(shù)
key_server(); // 調(diào)鍵值服務(wù)函數(shù)
x--; // 分自減量(倒計(jì)時(shí))
}
if (x==0) // 如果X=0
RA0=1; // RA0 賦值1(報(bào)警信號(hào))
display_set(x); // 調(diào)鍵值顯示函數(shù)
key_server(); // 調(diào)鍵值服務(wù)函數(shù)
}
}
void key_server()// 鍵值服務(wù)程序開始
{
unsigned int value=0; // 給存儲(chǔ)顯示值賦0
display_set(x); // 調(diào)鍵值顯示函數(shù)
if( PORTA_4==0 ) // 如果RA4 為0
{
while(1)
{
x++; // 鍵值X 自增
if(x>99) // 如果鍵值X>99
x=0; // 給X 賦值0
display_set(x); // 調(diào)鍵值顯示函數(shù)
delay_1m(); // 按鍵延時(shí),以便觀察
if(PORTA_4==1) // 如果RA4 為高電平
{
sign_a=0; // 清零設(shè)定時(shí)間標(biāo)志位
RA0=0; // 給RA0 賦值0
break; // 跳出循環(huán)返回
}
}
}
}
void display_set(unsigned int x)
// 鍵值顯示函數(shù)開始
{
unsigned int d=20,unit_bit,ten_bit,unsigned char SEG7[10]={0xc0,0xf9,0xa4,
0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unit_bit=x%10;
// 這里的注釋與display 的函數(shù)相似
ten_bit=x/10%10;
while(d>0)
{
PORTA=0x1e;
PORTB=SEG7[unit_bit];
RA3=0; // 顯示個(gè)位
delay(200);
RA3=1;
delay(2);
PORTB=SEG7[ten_bit];
RA2=0; // 顯示十位
delay(200);
RA2=1;
delay(2);
d--;
}
}
void delay_1m()
// 按鍵(圖6 的K1)延時(shí)函數(shù)開始
{
unsigned long int k; // 說明語句
for(k=0;k4;k++) // for 語句
{
display_set(x); // 調(diào)用鍵值顯示函數(shù)
}
}
說明: 上述C 程序經(jīng)picc 編譯后生成。hex,即可用PIC 單片機(jī)編程器將。hex 燒寫到pic16F84A芯片中,再按圖6 電路制成倒計(jì)時(shí)器,即可按需要使用。
評(píng)論