📄 hongwai.lst
字号:
C51 COMPILER V7.06 HONGWAI 07/30/2008 08:25:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE HONGWAI
OBJECT MODULE PLACED IN hongwai.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE hongwai.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //--------------------------------------------------
2 // 外部中断1服务程序
3 // 即红外识别程序
4 //--------------------------------------------------
5 #include "sfr.h"
6 #include "port.h"
7 //--------------------------------------------------
8 extern bit Ready;
9 extern enum State IRstate;
10 //--------------------------------------------------
11 void IRint() interrupt 2
12 {
13 1 static unchar count = 0;
14 1 static unchar recevier[9] = {0,0,0,0,0,0,0,0,0};
15 1 static unchar temp = 0;
16 1 static unchar bits = 1;
17 1 static unchar i = 0;
18 1 unint time = 0;
19 1
20 1 count++;
21 1 if( count >= 3 )
22 1 {
23 2 if( count == 3 )
24 2 {
25 3 TL1 = 0; // 第一个下降沿使能Timer1
26 3 TH1 = 0;
27 3 TR1 = 1;
28 3 }
29 2 else
30 2 {
31 3 TR1 = 0; // 禁止Timer1,准备Timer1的值
32 3 time = TH1;
33 3 time = ( time << 8 ) + TL1; // 读TIEMR1的值,看此电平的时间为多少
34 3 TL1 = 0;
35 3 TH1 = 0;
36 3 TR1 = 1;
37 3
38 3 if( time > 50 )
39 3 {
40 4 if ( ( time > 0x0460 ) && ( time < 0x0490 ) ) // 说明收到的此位为1
41 4 {
42 5 temp |= bits;
43 5 }
44 4
45 4 bits = bits << 1;
46 4 }
47 3
48 3 if( bits == 0 ) // 收到一个字节的数据了
49 3 {
50 4 recevier[i] = temp;
51 4 temp = 0;
52 4 bits = 1;
53 4 i++;
54 4 if( i == 9 ) //按一次按键产生的数据都已经收到
55 4 {
C51 COMPILER V7.06 HONGWAI 07/30/2008 08:25:21 PAGE 2
56 5 i = 0;
57 5 count = 0;
58 5 Ready = 1;
59 5 recevier[1] = recevier[1] & 0xF0;
60 5 if( recevier[0] == 0xA5 )
61 5 {
62 6 switch ( recevier[1] )
63 6 {
64 7 case 0x00: // 按下的是开关键
65 7 IRstate = IR_stop;
66 7 break;
67 7 case 0x80: // 按下的是开关键
68 7 IRstate = IR_start;
69 7 break;
70 7 case 0xC0: // 按下的是风速键
71 7 if( recevier[5] == 0x03 )
72 7 {
73 8 IRstate = IR_low; // 低风档
74 8 }
75 7 else if( recevier[5] == 0x01 )
76 7 {
77 8 IRstate = IR_middle; // 中风档
78 8 }
79 7 else if( recevier[5] == 0x02 )
80 7 {
81 8 IRstate = IR_large; // 高风档
82 8 }
83 7 else
84 7 {
85 8 IRstate = IR_error;
86 8 }
87 7 break;
88 7 case 0x40: // 按下的是模式键
89 7 if( recevier[6] == 0x04 )
90 7 {
91 8 IRstate = IR_sleep; // 睡眠模式
92 8 }
93 7 else if( recevier[6] == 0x02 )
94 7 {
95 8 IRstate = IR_clever; // 聪明模式
96 8 }
97 7 else if( recevier[6] == 0x06 )
98 7 {
99 8 IRstate = IR_simple; // 普通无模式
100 8 }
101 7 else
102 7 {
103 8 IRstate = IR_error;
104 8 }
105 7 break;
106 7 default:
107 7 IRstate = IR_error; // 收到误码
108 7 break;
109 7 }
110 6 }
111 5 else
112 5 {
113 6 IRstate = IR_error; // 收到误码
114 6 }
115 5 }
116 4 }
117 3 }
C51 COMPILER V7.06 HONGWAI 07/30/2008 08:25:21 PAGE 3
118 2 }
119 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 260 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -