📄 2262.lst
字号:
C51 COMPILER V7.06 2262 08/01/2006 22:20:06 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 2262
OBJECT MODULE PLACED IN 2262.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 2262.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*------------------------------------------------------------------------------
2 ; Copyright (C) 2006 WangChanghong INTEGRATED PRODUCTS, INC.
3 ; All rights reserved.
4 ; MCU:AT89s52 ,晶体频率:12MHz
5 : 作者:汪长洪
6 : 时间:2006年08月01日
7 ; 地点:威海
8 ;----------------------------315M无线遥控解码程序------------------------------*/
9 #include <AT89X52.H>
10 #define uchar unsigned char
11 #define uint unsigned int
12
13 /*---------------------------------变量列表------------------------------------*/
14 uchar ReadCode[3],GetCode;
15
16 /*---------------------------------函数列表------------------------------------*/
17 void delay_200(void); //200us精确延时
18 void delay_250(void); //250us精确延时
19 void delay_131(void); //131ms精确延时
20 void init(void); //初始化子程序
21 void INT0_intrupt(); //中断处理子程序(解码程序)
22
23 /*-----------------------------主程序入口--------------------------------------*/
24 main()
25 {
26 1 init();
27 1 while(1)
28 1 {
29 2 P2=~GetCode|0xf0;
30 2 }
31 1 }
32
33 /*---------------------------------初始化子程序--------------------------------*/
34 void init(void)
35 {
36 1 EA=1; //打开CPU总中断请求
37 1 EX0=1; //打开INT0中断请求
38 1 IT0=1; //设定INT0的触发方式为脉冲负边沿触发
39 1 }
40
41 /*-------------------------------200us精确延时---------------------------------*/
42 void delay_200(void)
43 {
44 1 uchar i,j;
45 1 for(i=0x05;i>0;i--)
46 1 for(j=0x12;j>0;j--);
47 1 }
48
49 /*-------------------------------250us精确延时---------------------------------*/
50 void delay_250(void)
51 {
52 1 uchar i,j;
53 1 for(i=0x05;i>0;i--)
54 1 for(j=0x17;j>0;j--);
55 1 }
C51 COMPILER V7.06 2262 08/01/2006 22:20:06 PAGE 2
56
57 /*-------------------------------131ms精确延时--------------------------------*/
58 void delay_131(void)
59 {
60 1 uchar i,j;
61 1 for(i=0xfe;i>0;i--)
62 1 for(j=0xfe;j>0;j--);
63 1 }
64
65 /*-------------------------外部中断0子程序(解码程序)---------------------------*/
66 void INT0_intrupt(void) interrupt 0 using 1
67 {
68 1 uchar i,j;
69 1 bit BitState_2;
70 1 EX0=0;
71 1 //////////////////////////////找起始位//////////////////////////////////////////
72 1 for(i=0;i<50;i++);
73 1 if(P3_2==1) goto kk;
74 1
75 1 while(P3_2==0);
76 1 for(i=0;i<50;i++);
77 1 if(P3_2==0) goto kk;
78 1
79 1 delay_200();
80 1 if(P3_2==1) goto kk;
81 1
82 1 for(i=15;i>0;i--) //重复20次,检测在3750微秒内出现高电平就退出解码程序
83 1 {
84 2 delay_200();
85 2 if(P3_2==1) goto kk;
86 2 }
87 1
88 1 while(P3_2==0);
89 1
90 1 ///////////////////////////////接收数据///////////////////////////////////////////
91 1
92 1
93 1 for(j=0;j<3;j++)
94 1 {
95 2 for(i=0;i<8;i++)
96 2 {
97 3 delay_250();
98 3 BitState_2=P3_2;
99 3 ReadCode[j]=ReadCode[j]<<1;
100 3 ReadCode[j]=ReadCode[j]|BitState_2;
101 3 if(P3_2==1) while(P3_2==1);
102 3 while(P3_2==0);
103 3
104 3 }
105 2 }
106 1 ////////////////////////////////校验及运算数据/////////////////////////////////////
107 1 for(i=0;i<3;i++)
108 1 {
109 2 if((~(ReadCode[i]|0x55))&((ReadCode[i]&0x55)<<1)!=0x00) goto kk; //校验
110 2 }
111 1 GetCode=0x00;
112 1 for(i=0;i<8;i++)
113 1 {
114 2 GetCode |=((ReadCode[2]>>i)&(ReadCode[2]>>(i+1))&0x01<<i); //运算
115 2 }
116 1 //////////////////////////////////////////////////////////////////////////////////
117 1 delay_131();
C51 COMPILER V7.06 2262 08/01/2006 22:20:06 PAGE 3
118 1 delay_131();
119 1 delay_131();
120 1 delay_131();
121 1 kk: EX0=1;
122 1 }
123
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 252 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 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 + -