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)
|