1 /*************************************************************************************
2
3 *
4 實驗現象:下載程序后按下K1按鍵可以對D1小燈狀態取反
5 接線說明: (具體接線圖可見開發攻略對應實驗的“實驗現象”章節)
6
7 注意事項:
8
9
10 **************************************************************************************
11
12 */
13
14 #include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
15
16 typedef unsigned int u16; //對數據類型進行聲明定義
17 typedef unsigned char u8;
18
19 sbit k1=P3^1; //定義P31口是k1
20 sbit led=P2^0; //定義P20口是led
21
22 /*******************************************************************************
23 * 函 數 名 : delay
24 * 函數功能 : 延時函數,i=1時,大約延時10us
25 *******************************************************************************/
26 void delay(u16 i)
27 {
28 1 while(i--);
29 1 }
30
31 /*******************************************************************************
32 * 函 數 名 : keypros
33 * 函數功能 : 按鍵處理函數,判斷按鍵K1是否按下
34 *******************************************************************************/
35 void keypros()
36 {
37 1 if(k1==0) //檢測按鍵K1是否按下
38 1 {
39 2 delay(1000); //消除抖動 一般大約10ms
40 2 if(k1==0) //再次判斷按鍵是否按下
41 2 {
42 3 led=~led; //led狀態取反
43 3 }
44 2 while(!k1); //檢測按鍵是否松開
45 2 }
46 1 }
47
48 /*******************************************************************************
49 * 函 數 名 : main
50 * 函數功能 : 主函數
51 * 輸 入 : 無
52 * 輸 出 : 無
53 *******************************************************************************/
54 void main()
55 {
C51 COMPILER V9.01 MAIN 04/10/2019 10:55:27 PAGE 2
56 1 led=1;
57 1 while(1)
58 1 {
59 2 keypros(); //按鍵處理函數
60 2 }
61 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 37 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|