📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 06/23/2008 10:50:23 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <lcd1602.h>
3
4 void DelayA(void);
5 void DelayB(void);
6
7 sbit P32=P3^2;
8
9 sbit P00=P0^0;
10 void main(void)
11 {
12 1 unsigned int TempCyc;
13 1 InitLCD();
14 1 Write_Instruction(0x01);
15 1 // Write_Instruction(0x81);
16 1 // Write_Data(0x30);
17 1 // InitCom();//初始化串口
18 1 EA=1;//允许CPU中断
19 1 IT0=1;//INT0下降沿有效
20 1 EX0=1;//开INT0中断
21 1 do
22 1 {
23 2 for(TempCyc=0;TempCyc<35000;TempCyc++);
24 2 for(TempCyc=0;TempCyc<30000;TempCyc++);
25 2 }
26 1 while(1);
27 1 }
28
29 //INT0中断
30 void INT0FUN(void)interrupt 0 using 2
31 {
32 1 unsigned char IRCode[2],IROK;
33 1 unsigned int TempCyc,TempCycB,TempCycA;
34 1 EX0=0;//关闭中断0
35 1 IROK=0;
36 1 DelayA();//延时等待引导码的前半部结束
37 1 DelayA();
38 1 if(!P32)//检验前半部是否过早结束,仿干扰
39 1 {
40 2 for(TempCycA=0;TempCycA<2;TempCycA++)
41 2 {
42 3 DelayA();
43 3 if(P32)//检验前半部是否过早,防干扰
44 3 {
45 4 for(TempCyc=0;TempCyc<300;TempCyc++)
46 4 if(!P32)break;//等待第一个位
47 4 if(TempCyc<300)//超时检验
48 4 {
49 5 for(TempCyc=0;TempCyc<8;TempCyc++)
50 5 {
51 6 while(!P32);//等待P32拉高,开始位的下部分
52 6 DelayB();//这里没社超时,实际应用在多功能的设计时应设超时
53 6 IRCode[TempCycA]=IRCode[TempCycA]>>1;
54 6 if(P32)//当延时750us后P32仍为高则当前位为1
55 6 {
C51 COMPILER V8.02 MAIN 06/23/2008 10:50:23 PAGE 2
56 7 IRCode[TempCycA]=IRCode[TempCycA]|0x80;
57 7 for(TempCycB=0;TempCycB<100;TempCycB++)
58 7 if(!P32)break;
59 7 if(TempCycB>99)
60 7 goto endchk;
61 7 }
62 6 }
63 5 }
64 4 else
65 4 goto endchk;
66 4 }
67 3 else
68 3 goto endchk;
69 3 IROK++;
70 3 }
71 2 }
72 1 endchk:
73 1 if(IROK==2)
74 1 {
75 2 if(IRCode[1]==0x10)//1号键
76 2 {
77 3 // P00=~P00;
78 3 // InitLCD();
79 3 // Write_Instruction(0x01);
80 3 // Write_Instruction(0x81);
81 3 // Write_Data(0x30);
82 3 InitLCD();
83 3 Write_Instruction(0x01);
84 3 Write_Instruction(0x81);
85 3 Write_Data(0x30);
86 3 }
87 2 /*
88 2 if(IRCode[1]==0x11)//2
89 2 // P00=~P00;
90 2 if(IRCode[1]==0x12)//3
91 2 // P12=~P12;
92 2 if(IRCode[1]==0x13)//4
93 2 // P13=~P13;
94 2 if(IRCode[1]==0x14)//5
95 2 // P14=~P14;
96 2 if(IRCode[1]==0x15)//6
97 2 // P15=~P15;
98 2 if(IRCode[1]==0x16)//7
99 2 // P16=~P16;
100 2 if(IRCode[1]==0x17)//8
101 2 // P17=~P17;
102 2 if(IRCode[1]==0x0e)//8
103 2 // P1=~P1;
104 2 */
105 2 for(TempCyc=0;TempCyc<300;TempCyc++)
106 2 DelayA();
107 2 }
108 1 EX0=1;
109 1 }
110
111 void DelayA(void)
112 {
113 1 unsigned int TempCyc;
114 1 for(TempCyc=0;TempCyc<650;TempCyc++);//3.5
115 1 }
116
117 void DelayB(void)
C51 COMPILER V8.02 MAIN 06/23/2008 10:50:23 PAGE 3
118 {
119 1 unsigned int TempCyc;
120 1 for (TempCyc=0;TempCyc<93;TempCyc++);//0.75ms
121 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 340 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
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 + -