📄 main.lst
字号:
C51 COMPILER V7.01 MAIN 04/01/2006 15:49:43 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2
3 typedef unsigned char uchar;
4 typedef unsigned short ushort;
5
6 sbit dKeyPort1=P1^7;
7 sbit dKeyPort2=P1^5;
8 sbit dKeyPort3=P1^4;
9 sbit dIrPort=P1^6;
10
11 void SysInit(void)
12 {
13 1 TMOD=0x10;
14 1 TH1=0xf8;
15 1 TL1=0x30;
16 1 ET1=1;
17 1 EA=1;
18 1 TR1=1;
19 1 }
20
21 void Delay100Us(uchar tInputCnt)
22 {
23 1 uchar i;
24 1 uchar j;
25 1
26 1 for(i=0;i<tInputCnt;i++)
27 1 {
28 2 for(j=96;j;j--);
29 2 }
30 1 }
31
32 #define dSendDelay \
33 dIrPort=0; \
34 Delay100Us(7); \
35 dIrPort=1;
36
37 void SendChar(uchar tInputVal)
38 {
39 1 const uchar pTempBitMap[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
40 1 uchar i,j;
41 1
42 1 for(i=0;i<8;i++)
43 1 {
44 2 dSendDelay;
45 2 if( pTempBitMap[i]&tInputVal )
46 2 Delay100Us(17);
47 2 else
48 2 {
49 3 Delay100Us(6);
50 3 for(j=50;j;j--);
51 3 }
52 2 }
53 1 }
54
55 void SendData(uchar tInputKeyVal)
C51 COMPILER V7.01 MAIN 04/01/2006 15:49:43 PAGE 2
56 {
57 1 #define dIrCustHi 0x89
58 1 #define dIrCustLo 0xd3
59 1
60 1 dIrPort=0;
61 1 Delay100Us(90);
62 1 dIrPort=1;
63 1 Delay100Us(45);
64 1 SendChar(dIrCustHi); //Send Ir Customer Code.
65 1 SendChar(dIrCustLo);
66 1 SendChar(tInputKeyVal); //Send Key Val.
67 1 SendChar(~tInputKeyVal); //Send Key Val's Inv .
68 1 dSendDelay;
69 1 }
70
71
72 uchar tUpKeyPressedCnt=0,tDownKeyPressedCnt=0,tSndKeyPressedCnt=0;
73 bit bUpKeyPressedFlag=0,bDownKeyPressedFlag=0,bSndKeyPressedFlag=0;
74
75 void main(void)
76 {
77 1 uchar tTempVal=1;// The Speed.
78 1
79 1 SysInit();
80 1
81 1 while(1)
82 1 {
83 2 if( bUpKeyPressedFlag )
84 2 {
85 3 if( tTempVal<20 )
86 3 tTempVal++;
87 3 bUpKeyPressedFlag=0;
88 3 }
89 2 if( bDownKeyPressedFlag )
90 2 {
91 3 if( tTempVal>1 )
92 3 tTempVal--;
93 3 bDownKeyPressedFlag=0;
94 3 }
95 2 if( bSndKeyPressedFlag )
96 2 { // Send Speed, In case Value Lost, I Send Twice.
97 3 // The Interval about 20 ms.
98 3 SendData(0xa0+tTempVal);
99 3 Delay100Us(200);
100 3 SendData(0xa0+tTempVal);
101 3
102 3 bSndKeyPressedFlag=0;
103 3 }
104 2 }
105 1 }
106
107 //1ms Timer Interrupt. Mainly capture Key Pressed.
108 void Timer1()interrupt 3
109 {
110 1 TH1=0XF8;
111 1 if( dKeyPort1==0 )
112 1 {
113 2 if( ++tUpKeyPressedCnt==4 )
114 2 bUpKeyPressedFlag=1;
115 2 }else
116 1 tUpKeyPressedCnt=0;
117 1 if( dKeyPort2==0 )
C51 COMPILER V7.01 MAIN 04/01/2006 15:49:43 PAGE 3
118 1 {
119 2 if( ++tDownKeyPressedCnt==4 )
120 2 bDownKeyPressedFlag=1;
121 2 }else
122 1 tDownKeyPressedCnt=0;
123 1 if( dKeyPort3==0 )
124 1 {
125 2 if( ++tSndKeyPressedCnt==4 )
126 2 bSndKeyPressedFlag=1;
127 2 }else
128 1 tSndKeyPressedCnt=0;
129 1
130 1
131 1
132 1 // dIrPort=~dIrPort;
133 1 }
134
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 266 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 11
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -