?? saa3010.lst
字號:
C51 COMPILER V7.07 SAA3010 05/12/2007 15:07:19 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE SAA3010
OBJECT MODULE PLACED IN SAA3010.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE SAA3010.c DEBUG OBJECTEXTEND
stmt level source
1 #define SAA3010_GLOBALS
2 #include <reg51.h>
3 #include "SAA3010.h"
4 #include "main.h"
5
6
7 //========================================================================================================
-===
8 // 該函數的作用是每調用一次就在temp1-4組成的32bit長度的最低位上移入
9 // 一個0或者1,數據由bitdata確定
10 void SAA3010_cycle_data(unsigned char bitdata)
11 {
12 1 temp4=temp4<<1;
13 1 if((temp3&0x80)==1) temp4=temp4|0x01;
14 1 else temp4=temp4&0xfe;
15 1
16 1 temp3=temp3<<1;
17 1 if((temp2&0x80)==1) temp3=temp3|0x01;
18 1 else temp3=temp3&0xfe;
19 1
20 1 temp2=temp2<<1;
21 1 if((temp1&0x80)==1) temp2=temp2|0x01;
22 1 else temp2=temp2&0xfe;
23 1
24 1 temp1=temp1<<1;
25 1 if(bitdata==1) temp1=temp1|0x01;
26 1 else temp1=temp1&0xfe;
27 1 }
28
29 //========================================================================================================
-===
30 // 解碼出錯返回1,對則返回0
31 unsigned char SAA3010_decode(void)
32 {
33 1 //--------------------------------------------------------------------------------------------------------
----
34 1 unsigned char count=0;
35 1
36 1 TR1=1; // 啟動計時
37 1 while(1)
38 1 {
39 2 while(ir_receive==0); // 等待電平變高,不需要超時監測
40 2 TR1=0; // 高電平(對發射電路而言)測試結束
41 2 high_level_time=TH1*256+TL1; // 記錄高電平的數據
42 2 //--------------------------------------------------------------------------------------------------------
----
43 2 TH1=0; TL1=0; TR1=1; // 啟動對低電平的測試
44 2 //--------------------------------------------------------------------------------------------------------
----
45 2 // 處理低電平
46 2 if((high_level_time<750)||(high_level_time>1800)) return 1; // 不是合格的電平
47 2 if((high_level_time>750)&&(high_level_time<1000)){SAA3010_cycle_data(0);count+=1;} // 移入一個0
48 2 if((high_level_time>1500)&&(high_level_time<1800)) {SAA3010_cycle_data(0);SAA3010_cycle_data(0);count+=2
-;} // 移入兩個0
49 2
C51 COMPILER V7.07 SAA3010 05/12/2007 15:07:19 PAGE 2
50 2 while(ir_receive==1) // 等待電平變低
51 2 {
52 3 if(TH1>0x08) break; // 高電平超時,正常情況下是測試結束,異常時則是出錯
53 3 }
54 2
55 2 TR1=0; // 低電平(對發射電路而言)測試結束
56 2 if(TH1>0x08) {break;}
57 2 low_level_time=TH1*256+TL1; // 保存低電平的數據
58 2
59 2 TH1=0; TL1=0; TR1=1; // 為增加計時的準確性,數據的處理都是在計時過程里
60 2 //--------------------------------------------------------------------------------------------------------
----
61 2 // 處理高電平
62 2 if((low_level_time<750)||(low_level_time>1800)) return 1; // 不是合格的電平
63 2 if((low_level_time>750)&&(low_level_time<1000)) {SAA3010_cycle_data(1); count+=1;} // 移入一個0
64 2 if((low_level_time>1500)&&(low_level_time<1800)) {SAA3010_cycle_data(1); SAA3010_cycle_data(1);count+=2;
-} // 移入兩個0
65 2 }
66 1
67 1 if(count==26) {SAA3010_cycle_data(1); count++;}
68 1 if(count!=27) return 1;
69 1 led=0;
70 1
71 1 // 提取按健信息
72 1 key_code=0;
73 1 if((temp1>>1)&0x01) key_code=key_code|0x01;
74 1 else key_code=key_code&0xfe;
75 1 if((temp1>>3)&0x01) key_code=key_code|0x02;
76 1 else key_code=key_code&0xfd;
77 1 if((temp1>>5)&0x01) key_code=key_code|0x04;
78 1 else key_code=key_code&0xfb;
79 1 if((temp1>>7)&0x01) key_code=key_code|0x08;
80 1 else key_code=key_code&0xf7;
81 1 if((temp2>>1)&0x01) key_code=key_code|0x10;
82 1 else key_code=key_code&0xef;
83 1 if((temp2>>3)&0x01) key_code=key_code|0x20;
84 1 else key_code=key_code&0xdf;
85 1
86 1 // 提取系統信息
87 1 sys_code=0;
88 1 if((temp2>>5)&0x01) sys_code=sys_code|0x01;
89 1 else sys_code=sys_code&0xfe;
90 1 if((temp2>>7)&0x01) sys_code=sys_code|0x02;
91 1 else sys_code=sys_code&0xfd;
92 1
93 1 if((temp3>>1)&0x01) sys_code=sys_code|0x04;
94 1 else sys_code=sys_code&0xfb;
95 1 if((temp3>>3)&0x01) sys_code=sys_code|0x08;
96 1 else sys_code=sys_code&0xf7;
97 1 if((temp3>>5)&0x01) sys_code=sys_code|0x10;
98 1 else sys_code=sys_code&0xef;
99 1 if((temp3>>7)&0x01) sys_code=sys_code|0x20;
100 1 else sys_code=sys_code&0xdf;
101 1
102 1 data_available=1;
103 1 return 0;
104 1 }
105 //========================================================================================================
-===
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.07 SAA3010 05/12/2007 15:07:19 PAGE 3
CODE SIZE = 598 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -