📄 rem.lst
字号:
C51 COMPILER V7.08 REM 03/10/2006 07:53:15 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE REM
OBJECT MODULE PLACED IN rem.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE rem.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include "define.h"
3 #include "global.h"
4 #include <AT89X52.H>
5 #include <intrins.h>
6
7 extern void Initial_16311(void);
8 extern void Validate_Key(uchar,uchar);
9 //---------------------------------------------------------------------------
10 // Delay
11 //---------------------------------------------------------------------------
12 uchar REM_value;
13 bit BZ_rem;
14 uchar REM_add;
15
16 static void Delay100us(void) //24MHz(LJMP:CLR A;MOV R7 A;INC A;CNJE R6 65)
17 {
18 1 uchar data i;
19 1 for(i=0; i<65; i++);
20 1 }
21
22 //------------------------------------------------------------------
23 void REM_KEY(void)
24 {
25 1 uchar count, i, j;
26 1 uchar aIRCodes[4]; //接收32位代码
27 1 uchar bByte;//做数剧接收时的移位寄存器
28 1 if(PIN_IR)return;
29 1 // --------------- Leader signal (low 9ms + high 4.5 ms) -----------------
30 1 for (count=0; !PIN_IR; count++)
31 1 Delay100us(); // 接收9mS的低电平头码;
32 1 if ((count < 80) || (count > 100)) {
33 2 BZ_rem=0;
34 2 return;} //判别是否是9mS,如果不是就反回;并清除标志变量。
35 1
36 1 for (count=0; (PIN_IR) && (count < 54) ; count++) Delay100us(); //接收4.5ms的高电平信号。
37 1
38 1
39 1 if ((count >= 19) && (count <= 24)) //如果连续按住了同一个按键则只发送开始码和结束码, low (9ms) , high (
-2.25), low (0.56)
40 1 {
41 2 for (count=0; !PIN_IR ; count++)
42 2 Delay100us();
43 2 if ((count >= 4) && (count <= 7))
44 2 {
45 3 BZ_rem=1;
46 3 return;
47 3 }}
48 1
49 1 else if ((count > 35) || (count < 54))//读遥控代码, logic 0 = low (0.56) + high (0.56), logic 1= l
-ow (0.56) + high (1.68)
50 1 {
51 2 for(i=0; i<4; i++)
52 2 {
53 3 bByte = 0;
C51 COMPILER V7.08 REM 03/10/2006 07:53:15 PAGE 2
54 3 for (j=0; j<8; j++)
55 3 {
56 4 for (count=0; (!PIN_IR); count++)
57 4 Delay100us(); //经过底电平
58 4 for (count=0; PIN_IR && (count < 30); count++)
59 4 Delay100us();
60 4 if (count == 0)
61 4 {
62 5 j--;
63 5 continue; // 考虑有信号噪声
64 5 }
65 4 bByte >>= 1; // shift right one bit
66 4 if (count >= 9)
67 4 { // bit=0 => count<9; bit=1 => count>9
68 5 // > 0.9 ms==> logic 1
69 5 // else ==> logic 0
70 5 if (count >= 30){ BZ_rem=0; return; } // count>30 => error
71 5 bByte |= 0x80;
72 5 }
73 4 }
74 3 aIRCodes[i] = bByte;
75 3 }
76 2 }
77 1
78 1 //------------------
79 1 // if (aIRCodes[0] != IR_CUSTOMER_CODE) return; // 测试用户码是否能对应
80 1 // if ((aIRCodes[0]==0) && (aIRCodes[1]==0) && (aIRCodes[2]==0) && (aIRCodes[3]==0))
81 1 // {
82 1 // BZ_rem=0;return;
83 1 // }
84 1 // else
85 1 // {
86 1 if (aIRCodes[2] == ~aIRCodes[3])
87 1 {
88 2 REM_value = aIRCodes[2];
89 2 REM_add=aIRCodes[0];
90 2 BZ_rem=1;//return;//"0x00"表示遥控用户码,"0x01"表示遥控键值,"0x02"表示16311键值.
91 2 }
92 1 // else
93 1 // {BZ_rem=0;return;}
94 1 // }
95 1 }
96
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 198 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 4
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 + -