PIC單片機C語言程序設計(6)
while(1) // while 循環(huán)語句開始
{
while(x>0)
{
display(x); // 調顯示函數
key_server(); // 調鍵值服務函數
x--; // 分自減量(倒計時)
}
if (x==0) // 如果X=0
RA0=1; // RA0 賦值1(報警信號)
display_set(x); // 調鍵值顯示函數
key_server(); // 調鍵值服務函數
}
}
void key_server()// 鍵值服務程序開始
{
unsigned int value=0; // 給存儲顯示值賦0
display_set(x); // 調鍵值顯示函數
if( PORTA_4==0 ) // 如果RA4 為0
{
while(1)
{
x++; // 鍵值X 自增
if(x>99) // 如果鍵值X>99
x=0; // 給X 賦值0
display_set(x); // 調鍵值顯示函數
delay_1m(); // 按鍵延時,以便觀察
if(PORTA_4==1) // 如果RA4 為高電平
{
sign_a=0; // 清零設定時間標志位
RA0=0; // 給RA0 賦值0
break; // 跳出循環(huán)返回
}
}
}
}
void display_set(unsigned int x)
// 鍵值顯示函數開始
{
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 的函數相似
ten_bit=x/10%10;
while(d>0)
{
PORTA=0x1e;
PORTB=SEG7[unit_bit];
RA3=0; // 顯示個位
delay(200);
RA3=1;
delay(2);
PORTB=SEG7[ten_bit];
RA2=0; // 顯示十位
delay(200);
RA2=1;
delay(2);
d--;
}
}
void delay_1m()
// 按鍵(圖6 的K1)延時函數開始
{
unsigned long int k; // 說明語句
for(k=0;k4;k++) // for 語句
{
display_set(x); // 調用鍵值顯示函數
}
}
說明: 上述C 程序經picc 編譯后生成。hex,即可用PIC 單片機編程器將。hex 燒寫到pic16F84A芯片中,再按圖6 電路制成倒計時器,即可按需要使用。
評論