📄 mytask.lst
字号:
C51 COMPILER V7.20 MYTASK 05/25/2005 03:08:55 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MYTASK
OBJECT MODULE PLACED IN mytask.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE mytask.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*----------------------------------------------*-
2 Mytask.c
3 create my own task
4 -*----------------------------------------------*/
5 #include"main.h"
6 #include"mytask.h"
7
8 #define state1 0x01
9 #define state2 0x02
10
11 uchar state;
12 bit key0_pressed_flag=0;
13 bit key1_pressed_flag=0;
14 bit key2_pressed_flag=0;
15 bit key3_pressed_flag=0;
16 uint data timeout = 0x5000;
17 uchar erect_measure_count=0;
18
19 void Mytask_Init(void)
20 {
21 1 P3=0xff;
22 1 state=state1;
23 1 }
24 void key_scan(void) //利用 state machine 进行键盘扫描
25 {
26 1 switch(state)
27 1 {
28 2 case state1:
29 2 if(!key0||!key1||!key2||!key3) //低电平时表示被按下
30 2 state=state2;
31 2
32 2 case state2:
33 2 if(!key0)
34 2 {
35 3 while(key0==0 && --timeout)
36 3 key0_pressed_flag=1;
37 3 }
38 2 else if(!key1)
39 2 {
40 3 while(key1==0 && --timeout)
41 3
42 3 key1_pressed_flag=1;
43 3 }
44 2 else if(!key2)
45 2 {
46 3 while(key2==0 && --timeout)
47 3 key2_pressed_flag=1;
48 3 }
49 2 else if(!key3)
50 2 {
51 3 while(key3==0 && --timeout)
52 3 key3_pressed_flag=1;
53 3 }
54 2 state=state1;
55 2 break;
C51 COMPILER V7.20 MYTASK 05/25/2005 03:08:55 PAGE 2
56 2 }
57 1 }
58
59
60 void Mytask(void)
61 {
62 1 if(key0_pressed_flag)
63 1 {
64 2 measure_modify=0;
65 2 delay4us();
66 2 measure_modify=1;
67 2 delay4us();
68 2 state=state1;
69 2 key0_pressed_flag=0;
70 2 }
71 1 else if(key1_pressed_flag)
72 1 {
73 2 erect_measure_count++; //通过变量的自加来达到模拟开关计数的目的
74 2 if(erect_measure_count==4)
75 2 erect_measure_count=0;
76 2 switch(erect_measure_count)
77 2 {
78 3 case 0:
79 3 P12=1;
80 3 delay4us();
81 3 P12=0;
82 3 switch_modify0=0;
83 3 delay1us();
84 3 switch_modify1=0;
85 3 delay1us();
86 3 break;
87 3 case 1:
88 3 P12=1;
89 3 delay4us();
90 3 P12=0;
91 3 switch_modify0=0;
92 3 delay1us();
93 3 switch_modify1=1;
94 3 delay1us();
95 3 break;
96 3 case 2:
97 3 P12=1;
98 3 delay4us();
99 3 P12=0;
100 3 switch_modify0=1;
101 3 delay1us();
102 3 switch_modify1=0;
103 3 delay1us();
104 3 break;
105 3 case 3:
106 3 P12=1;
107 3 delay4us();
108 3 P12=0;
109 3 switch_modify0=1;
110 3 delay1us();
111 3 switch_modify1=1;
112 3 delay1us();
113 3 break;
114 3 }
115 2 key1_pressed_flag=0;
116 2 }
117 1 }
C51 COMPILER V7.20 MYTASK 05/25/2005 03:08:55 PAGE 3
118
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 233 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -