?? ir6122.lst
字號:
C51 COMPILER V8.01 IR6122 06/08/2007 02:00:26 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE IR6122
OBJECT MODULE PLACED IN .\output\IR6122.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE IR\IR6122.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\IR6122.lst) OBJECT(.\out
-put\IR6122.obj)
line level source
1
2
3 #include "headfiles\headfiles.h"
4
5 /////////////////////////////////////////
6 // /////////
7 // 晶體:18.432MHz /////////
8 // /////////
9 /////////////////////////////////////////
10
11
12 void init_timer0(void) //初始化
13 {
14 1 TMOD &= 0XF0;
15 1 TMOD |= 0X1;
16 1 TL0 = 0x50;
17 1 TH0 = 0xFF;
18 1 TR0 = 1;
19 1 PT0 = 1;
20 1 ET0 = 1;
21 1 EA = 1;
22 1 P3 = 0xFF;
23 1 }
24
25
26
27
28
29 void timer_isr() interrupt 1 //中斷函數
30 {
31 1 // DISABLE;
32 1 EA = 0;
33 1 // test_IO_Flag = ~test_IO_Flag;
34 1 // P1 = test_IO_Flag;
35 1 IR_decode();
36 1
37 1 TL0 = 0x50;
38 1 TH0 = 0xFF;
39 1 // ENABLE;
40 1 EA = 1;
41 1 }
42
43
44 sbit Ir_line = P3^5;
45
46
47 bit High_Flag;
48
49 bit Rcv_OK;
50
51 #define data_code_long 12
52 #define data_code_short 4
53
54 unsigned char Ir_timer;
C51 COMPILER V8.01 IR6122 06/08/2007 02:00:26 PAGE 2
55 unsigned char Rcv_bit_cnt;
56 unsigned char Rcv_Byte_cnt;
57
58 unsigned char Rcv_Code[2];
59
60
61
62 #define data_code_long 12
63 #define data_code_short 4
64
65 void Rcv_bit_Deal(bit bt)
66 {
67 1 if((Ir_timer > data_code_short-3)&&(Ir_timer < data_code_short+4))
68 1 {
69 2 if(Rcv_bit_cnt&0x01)
70 2 {
71 3 Rcv_Code[Rcv_Byte_cnt] <<= 1;
72 3 Rcv_Code[Rcv_Byte_cnt] |= bt;
73 3 }
74 2 Rcv_bit_cnt++;
75 2 if(Rcv_bit_cnt==10)
76 2 {
77 3 Rcv_Byte_cnt++;
78 3 }
79 2 else if(Rcv_bit_cnt>25)
80 2 {
81 3 Rcv_OK = 1;
82 3 Rcv_bit_cnt = 0;
83 3 Rcv_Byte_cnt = 0;
84 3 }
85 2 else
86 2 {
87 3 }
88 2 }
89 1 else if((Ir_timer > data_code_long-4)&&(Ir_timer < data_code_long+5))
90 1 {
91 2 Rcv_Code[Rcv_Byte_cnt] <<= 1;
92 2 Rcv_Code[Rcv_Byte_cnt] |= bt;
93 2 Rcv_bit_cnt += 2;
94 2 if(Rcv_bit_cnt==11)
95 2 {
96 3 Rcv_Byte_cnt++;
97 3 }
98 2 else if(Rcv_bit_cnt>25)
99 2 {
100 3 Rcv_OK = 1;
101 3 Rcv_bit_cnt = 0;
102 3 Rcv_Byte_cnt = 0;
103 3 }
104 2 else
105 2 {
106 3
107 3 }
108 2 }
109 1 else
110 1 {
111 2 Rcv_bit_cnt = 0;
112 2 Rcv_Byte_cnt = 0;
113 2 }
114 1 }
115
116
C51 COMPILER V8.01 IR6122 06/08/2007 02:00:26 PAGE 3
117
118 void IR_decode(void)
119 {
120 1 if(Ir_line)
121 1 {
122 2 if(High_Flag)
123 2 {
124 3 Ir_timer++;
125 3 if(Ir_timer>180)
126 3 {
127 4 Ir_timer = 180;
128 4 }
129 3 }
130 2 else
131 2 {
132 3 Rcv_bit_Deal(0);
133 3 Ir_timer = 0;
134 3 }
135 2 High_Flag = 1;
136 2 }
137 1 else
138 1 {
139 2 if(High_Flag)
140 2 {
141 3 Rcv_bit_Deal(1);
142 3 Ir_timer = 0;
143 3 }
144 2 else
145 2 {
146 3 Ir_timer++;
147 3 }
148 2 High_Flag = 0;
149 2 }
150 1 }
151
152
153 void Rcv_IRKey(void)
154 {
155 1 if(Rcv_OK == 1)
156 1 {
157 2 Send_Str("Head code: \0");
158 2 Send_HEX_char(Rcv_Code[0]);
159 2 Send_Str(" \0");
160 2 Send_Str("Key code: \0");
161 2 Send_HEX_char(Rcv_Code[1]);
162 2 Send_Str("\r\n\0");
163 2 Rcv_OK = 0;
164 2 }
165 1 }
166
167
168
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 325 ----
CONSTANT SIZE = 38 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 1
C51 COMPILER V8.01 IR6122 06/08/2007 02:00:26 PAGE 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -