📄 ir.lst
字号:
C51 COMPILER V7.20 IR 07/13/2007 10:18:23 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE IR
OBJECT MODULE PLACED IN ir.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ir.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG52.H>
2
3 #define CNT 36
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define NOP(); {_nop_(); _nop_(); _nop_(); _nop_();} /* 定义空操作指令 */
7
8 bit time_out=0;
9 bit receive_ok=0;
10 bit receive_err=0;
11 bit key_continue=0;
12
13 uchar idata recode_dat[CNT];
14 uchar idata counter=0;
15
16 void INT0_irq(void) interrupt 0 using 3
17 {
18 1 if((TH0==TL0)&&(TL0==0)&&(counter==0)) {TR0 = 1;counter=0;}
19 1 else
20 1 {
21 2 TR0 = 0;
22 2 if((TH0>=0x0f)&&(TH0<=0x10)&&(counter==0)) receive_err=1;
23 2 if((receive_err==1)&&(counter<=36))
24 2 {
25 3 recode_dat[counter]=TH0;
26 3 TH0 = 0;
27 3 TL0 = 0;
28 3 TR0 = 1;
29 3 counter++;
30 3 }
31 2 else {TR0 = 0;TH0 = 0; TL0 = 0; counter=0; TR0 = 1;}
32 2 if((recode_dat[counter-2]==0x8f)&&(recode_dat[counter-1]>=0x07)&&(recode_dat[counter]==0x00))
33 2 {
34 3 //TR0 = 0;
35 3 receive_ok=1;
36 3 counter=0;
37 3 receive_err=0;
38 3 }
39 2 }
40 1 }
41
42
43
44
45 /*------定时器中断-----------*/
46 void T0_irq(void) interrupt 1 using 3
47 {
48 1 TR0=0;
49 1 time_out=1;
50 1 counter=0;
51 1 TH0=TL0=0;
52 1 }
53
54 /*------系统设置程序-----------*/
55 void system_setup(void)
C51 COMPILER V7.20 IR 07/13/2007 10:18:23 PAGE 2
56 {
57 1 IE=0x83; //使能INT0 EX0=1,ET0=1,EA=1;
58 1 IT0 = 1; //INT0负跳变触发
59 1 TMOD=0x29; //定时器0工作在定时方式1,带INT0输入触发
60 1 TH0 = 0;
61 1 TL0 = 0;
62 1 }
63
64 uint key_process()
65 {
66 1 uint key_value=0x0;
67 1 uchar i;
68 1 if(receive_ok )
69 1 {
70 2 for(i=0;i<=15;i++)
71 2 {
72 3 key_value<<=1;
73 3 if((recode_dat[i+17]>=0x05)&&(recode_dat[i+17]<=0x07)) key_value=key_value|0x0001;
74 3 if((recode_dat[i+17]<=0x02)&&(recode_dat[i+17]>=0x00)) key_value=key_value|0x0000;
75 3 }
76 2 receive_ok = 0;
77 2 }
78 1 return(key_value);
79 1 }
80
81 void main(void)
82 {
83 1 idata uint kk;
84 1 idata uchar dd,dd1;
85 1 TMOD = 0x29;
86 1 TL1 = 0xFD;
87 1 TH1 = 0xFD;
88 1 SCON = 0x40;
89 1 PCON = 0x80;
90 1 PX0=1;
91 1 TR1 = 1;
92 1 system_setup();
93 1 while(1)
94 1 {
95 2 if(receive_ok )
96 2 {
97 3 kk=key_process();
98 3 dd=(kk>>8);
99 3 dd1=(kk&0x00ff);
100 3 SBUF = dd;
101 3 while (TI == 0);
102 3 TI = 0;
103 3 SBUF = dd1;
104 3 while (TI == 0);
105 3 TI = 0;
106 3 }
107 2 }
108 1 }
109
110
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 292 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V7.20 IR 07/13/2007 10:18:23 PAGE 3
DATA SIZE = ---- ----
IDATA SIZE = 37 4
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -