📄 timer.lst
字号:
C51 COMPILER V7.50 TIMER 12/14/2006 10:36:34 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN .\Timer.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\Source\Timer.c LARGE DEBUG OBJECTEXTEND PRINT(.\Timer.lst) OBJECT(.\Time
-r.obj)
line level source
1 #include "..\inc\public2.h"
2
3 #define IR_CusCode 0x04
4
5 code BYTE Key_Table[64] =
6 {
7 00,00,00,00,00,01,01,01,
8 01,01,01,01,01,01,01,01,
9 02,02,02,02,02,02,02,02,
10 02,02,03,03,03,03,03,03,
11 03,04,04,04,04,04,04,04,
12 04,04,04,04,05,05,05,05,
13 05,05,05,05,05,06,06,06,
14 06,0x6,0x6,0x6,0xF,0xF,0xF,0xF,
15 };
16
17 data unsigned char DLYTimer;
18 data unsigned int OSDTimer;
19 data unsigned int SleepTimer;
20
21 data BYTE KeyTimer;
22 data BYTE KeyFlag;
23 data BYTE Key;
24
25 data bit IR_INT0,IR_INT=1;
26
27 data BYTE IR_RevCusCode;
28 data BYTE IR_RevCusCode_B;
29
30 data BYTE IR_Value = 0xFF,IR_NUM = 0xFF;
31
32 data BYTE Key_Input0,Key_Input =0x77,Key_Value = 0xFF;
33
34 data BYTE Key_AD1,Key_AD2;
35
36 data BYTE IR_RevDataCode = 0xFF;
37 data BYTE TMR0_CNT = 0;
38
39 data BYTE SecTimer;
40 data unsigned int NoSigTimer;
41
42 data BYTE IR_Snd;
43
44 data BYTE IR_Rev_CNT;
45 data BYTE IR_RevCode;
46 data BYTE IR_SndDataCode;
47
48 data unsigned int IR_TMR = 0xFFFF;
49
50 data BYTE IR_TMP = 0;
51 data BYTE IR_SndStatus = 0, IR_Snd_CNT = 0xFF, IR_SndCode_CNT, IR_SndBit_CNT;
52 data BYTE TEST = 0;
53 data BYTE IR_OUT = 1;
54
C51 COMPILER V7.50 TIMER 12/14/2006 10:36:34 PAGE 2
55 data bit IR_Pressed = 0, Key_Pressed = 0;
56
57 void IR_Send_Code();
58
59 /**--------------------------------------------------------------------------
60 * Name void Timer_Init(void)
61 *
62 * Description Init Timer,
63 * Timer2 for UART setting Baud rate=38400 in 27MHz
64 *
65 * Return
66 * DATE Author Description
67 * ===========================================================================
68 * 2004/06/24 Eson W.
69 * 2005/09/11 Microntek Modified
70 **/
71 void Timer_Init(void)
72 {
73 1 SCON = 0x50;
74 1
75 1 TI = 0; //Clear UART Tx and Rx
76 1 RI = 0;
77 1
78 1 //************************************************
79 1 //****** Set Timer0 /Timer1 ******
80 1 //************************************************
81 1
82 1 TMOD=0x21; //Timer0 in Mode 1, and Timer1 in Mode 2
83 1
84 1 TR0 = 0; //Stop timer 0
85 1 TH0=0xD8; //Timer0 working in Mode 1 and set 5m sec.
86 1 TL0=0xF0; //Working Cry=24MHz 1/24M * 12 = 0.5us
87 1 //10ms = 0.5 * 10000
88 1 //TH0 = (65536 - 10000) / 256 = 0xD8
89 1 //TL0 = (65536 - 10000) % 256 = 0xF0
90 1 TR0 = 1; //Enable Timer 0
91 1
92 1 // ETimer For IR Receiving and Sending
93 1 ETMOD = 0x00; // Count Up
94 1 ETCTR = 0x00; // TR2 = 0
95 1 RCAPETH = 0xFF;
96 1 RCAPETL = 0x8F;
97 1 THET = 0xFF;
98 1 TLET = 0x8F;
99 1
100 1 ETCTR |= 0x04; // TR2 = 1
101 1
102 1 ETCTR &= 0x7F; // TF2 = 0
103 1
104 1 EINT1PEN = 0x40; // Enable ETimer Interrupt
105 1
106 1 // Timer1 for BAUD RATE GENERATOR
107 1 TR1 = 0; // Stop timer 1
108 1 TH1 = 243; // 243 for Baud Rate 9600 bps
109 1 TL1 = 243; //
110 1 //
111 1 TR1 = 1;
112 1 // Start count Timer1
113 1 TF1 = 0;
114 1
115 1 PCON = 0x80; // SMOD1 = 1 for Baud Rate Generator
116 1
C51 COMPILER V7.50 TIMER 12/14/2006 10:36:34 PAGE 3
117 1 IT0 = 1;
118 1 IE0 = 0;
119 1
120 1 IP = 0x14; //14 // Interrupt Priority // |
121 1 // bit7:Reserved // |
122 1 // bit6:TIMER2 IRQ // |
123 1 // bit5:IIC // |
124 1 // bit4:UART 1st Priority // |
125 1 // bit3:TIMER1 IRQ // |
126 1 // bit2:External/INT1 // |
127 1 // bit1:TIMER0 IRQ // |
128 1 // bit0:Enable External/INT0 // |
129 1
130 1 IE = 0x97; //8051 Interrupt IRQ setting // |
131 1 // bit7:All IRQ setting,EA=1 // |
132 1 // bit6:TIMER2 IRQ // |
133 1 // bit5:IIC // |
134 1 // bit4:UART // |
135 1 // bit3:TIMER1 IRQ // |
136 1 // bit2:External/INT1 // |
137 1 // bit1:TIMER0 IRQ // |
138 1 // bit0:Enable External/INT0 // |
139 1 }
140
141 /**--------------------------------------------------------------------------
142 * Name void interrupt Timer0()
143 *
144 * Description This is a timer interrupt. It will entry when every 10ms.
145 * It will Dec. Interval counter when Service flag setting
146 *
147 * Flow Chart
148 *
149 * Return
150 *
151 * DATE Author Description
152 * ===========================================================================
153 * 2003-02-20 KM Ho This is first time implement
154 * 2005-09-11 Microntek Modified
155 **/
156 void Timer0(void) interrupt 1 using 3
157 {
158 1 TR0 = 0; //STOP COUNT Timer0
159 1
160 1 if ( DLYTimer ) DLYTimer --;
161 1
162 1 TMR0_CNT = (TMR0_CNT+1)&0x1;
163 1
164 1 if ( IR_TMR > 900 )
165 1 {
166 2 IR_Pressed = 0;
167 2 }
168 1
169 1 Key_Input0 = Key_Input;
170 1
171 1 /*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -