📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 08/04/2007 20:05:59 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "STC89C51RC.H"
2 #include "Mini51B.H"
3
4 sbit DQ = P4^3;
5 sbit SPK = P1^0;
6
7 unsigned char irm_code;
8 unsigned char code ledmap[]= //共阴LED数码管译码表
9 {
10 0x3f,0x06,0x5b,0x4f,0x66, //0,1,2,3,4,
11 0x6d,0x7d,0x07,0x7f,0x6f, //5,6,7,8,9,
12 0x77,0x7C,0x39,0x5E,0x79, //A,b,C,d,E,
13 0x71, //F,
14 };
15
16 void delay(unsigned int t)
17 {
18 1 while(t--);
19 1 }
20 void Sound(void)
21 {
22 1 SPK = 0;
23 1 delay(10000);
24 1 SPK = 1;
25 1 }
26
27 //STC单片机特有的外部中断INT2实现红外解码
28 //解码结果由数据缓冲区返回
29 void IRMint(void) interrupt 6
30 {
31 1 unsigned int temp;
32 1 unsigned char i,temp_buff[2];
33 1
34 1 EA = 0;/*解码过程禁止其它中断发生*/
35 1 temp = 0;
36 1 while(!DQ) if(temp++>0x1000) goto return_main;//防止意外死机
37 1 if (temp < 0x0400) goto return_main;//Max=0x0457
38 1 /*以上完成引导码9ms的低电平检测*/
39 1 temp = 0;
40 1 while(DQ) if(temp++>0x1000)goto return_main;
41 1 if (temp < 0x0180) goto return_main;//Max=0x0227
42 1 /*以上完成引导码4.5ms的高电平检测*/
43 1 for(i=0;i<16;i++)//跳过2字节引导码
44 1 {
45 2 temp = 0;
46 2 while(!DQ)if(temp++>0x1000) goto return_main;//通过编码低电平
47 2 temp = 0;
48 2 while(DQ) if(temp++>0x1000) goto return_main;
49 2 }
50 1
51 1 /*有效字节*/
52 1 for(i=0;i<8;i++)
53 1 {
54 2 temp_buff[0]<<=1;
55 2 temp = 0;
C51 COMPILER V8.02 MAIN 08/04/2007 20:05:59 PAGE 2
56 2 while(!DQ)if(temp++>0x1000) goto return_main;//通过编码低电平
57 2 temp = 0;
58 2 while(DQ) if(temp++>0x1000) goto return_main;
59 2 if(temp > 0x0080) temp_buff[0] |= 0x01;
60 2 }
61 1
62 1 /*校验字节*/
63 1 for(i=0;i<8;i++)
64 1 {
65 2 temp_buff[1]<<=1;
66 2 temp = 0;
67 2 while(!DQ)if(temp++>0x1000) goto return_main;//通过编码低电平
68 2 temp = 0;
69 2 while(DQ) if(temp++>0x1000) goto return_main;
70 2 if(temp > 0x0080) temp_buff[1] |= 0x01;
71 2 }
72 1
73 1 /*校验*/
74 1 if (temp_buff[0] == ~temp_buff[1])
75 1 {
76 2 irm_code = temp_buff[0];
77 2 Sound();
78 2 }
79 1 return_main:EA = 1;
80 1 }
81
82 void main()
83 {
84 1 unsigned char temp;
85 1 EA = 1;
86 1 IT2 = 1;//下降沿中断
87 1 EX2 = 1;
88 1
89 1 seg1 = 0xff;//熄灭
90 1 while(1)
91 1 {
92 2 if(irm_code!=temp)
93 2 {
94 3 temp = irm_code;
95 3 seg2 = ~ledmap[temp/100];
96 3 seg3 = ~ledmap[temp/10%10];
97 3 seg4 = ~ledmap[temp%10];
98 3 }
99 2 }
100 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 421 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 2
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 + -