📄 irm.lst
字号:
C51 COMPILER V8.02 IRM 01/15/2009 20:17:46 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE IRM
OBJECT MODULE PLACED IN irm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE irm.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "irm.h"
2
3 unsigned char irm_code;//红外解码键值返回全局变量
4 bit flag ;// 上一位编码位
5
6 void int2_init(void)
7 {
8 1 EA = 1;
9 1 IT2 = 1; //下降沿中断
10 1 EX2 = 1;
11 1 }
12
13 static unsigned char check_bit(unsigned char bit_num)
14 {
15 1 //最大检测7位
16 1 unsigned char irm_code0 = 0;
17 1 unsigned char i ;
18 1 unsigned int count ;
19 1 #define ERROR 0x10;
20 1 for(i=0;i<bit_num;i++)
21 1 {
22 2 count = 0 ;
23 2 irm_code0 = irm_code0<<1 ;
24 2 if(flag)
25 2 {
26 3 while(IRM_DQ)if(count++>10000) return ERROR;
27 3 if(count>150)
28 3 {
29 4 flag = 0 ;// 结束码为 10
30 4 }
31 3 else
32 3 {
33 4 flag = 1 ;// 结束码为 01
34 4 irm_code0 |= 0x01;
35 4 while(!IRM_DQ)if(count++>10000) return ERROR;
36 4 }
37 3 }
38 2 else // 结束码为 10
39 2 {
40 3 while(!IRM_DQ)if(count++>10000) return ERROR;
41 3 if(count>150)
42 3 {
43 4 flag = 1 ;// 结束码为 01
44 4 irm_code0 |= 0x01;
45 4 }
46 3 else
47 3 {
48 4 flag = 0 ;// 结束码为 10
49 4 while(IRM_DQ)if(count++>10000) return ERROR;
50 4 }
51 3 }
52 2 }
53 1 return irm_code0 ; //解码成功 !!
54 1 }
55
C51 COMPILER V8.02 IRM 01/15/2009 20:17:46 PAGE 2
56
57 //STC单片机特有的外部中断INT2实现红外解码
58 //解码结果由数据缓冲区返回
59 void IRMint(void) interrupt 6
60 {
61 1 unsigned int count;
62 1 unsigned char temp_code[2];
63 1
64 1 EA = 0;/*解码过程禁止其它中断发生*/
65 1 IRM_DQ = 1 ;
66 1 {/*跳过1.5bit 起始码*/
67 2 count = 0;
68 2 while(!IRM_DQ)if(count++>1000) goto return_main;
69 2 count = 0;
70 2 while(IRM_DQ)if(count++>1000) goto return_main;
71 2 }
72 1 {/*跳过1bit控制码和5bit用户码*/
73 2 flag = 0 ; //起始码以10结束
74 2 temp_code[0] = check_bit(6);
75 2 }
76 1 /*数据码*/
77 1 temp_code[1] = check_bit(6);
78 1 irm_code = temp_code[1] ; //返回键值
79 1 return_main:
80 1 IE2 = 0 ;//清除中断标志位
81 1 EA = 1;
82 1 }
83
84
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 271 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 2
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -