📄 timer_rev1_7.lst
字号:
C51 COMPILER V7.06 TIMER_REV1_7 08/22/2004 21:22:04 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TIMER_REV1_7
OBJECT MODULE PLACED IN TIMER_rev1_7.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TIMER_rev1_7.c LARGE OPTIMIZE(7,SIZE) MODA2 DEBUG OBJECTEXTEND
stmt level source
1 // module title: timer_rev1_7.c
2 // revision: 1.7
3 // date: 6/1/2004
4
5 #include <..\atmel\at89s53.h>
6 #include <absacc.h>
7 #include <dom12a.h>
8
9 //#define XTAL12MHz
10 //#define XTAL22_1184MHz
11 #define XTAL24MHz
12
13 #define ACTIVATE 1
14 #define DEACTIVATE 0
15 #define Flashing_ON 1
16 #define Flashing_OFF 0
17
18 #define Out_Port XBYTE[0x2000]
19 #define PanelSW XBYTE[0x2002]
20
21 //#define debug
22 //External Idefinition
23 extern char output_buf;
24
25
26 sbit Flashing = P1^3; //uP running status
27 sbit ctrlBuzz = P1^5;
28
29 /************************************************
30 * Local Data : Create software timer *
31 ************************************************/
32 unsigned int data tmr0, tmr1, tmr2;
33 unsigned int data Flash_CNT = 250; // flashing at 2Hz
34
35 uchar data keySTAGE[8]; //public variables, keys pressed if >= 6
36 uchar data idxKey;
37 uchar data durationBuzzON;
38
39 /************************************************
40 * Local Data : Create Bit Addressable Data *
41 *************************************************/
42 bit Timer0State =0;
43 bit Timer1State =0;
44 bit Timer2State =0;
45 bit stFlashing = 0;
46 bit keyDetectEnable = 1;
47
48 /************************************
49 * Local Function Prototype *
50 ************************************/
51 void Enable_Timer(char timer_name, unsigned int timer_count);
52 void Disable_Timer(char timer_name);
53 void Init_Sys_Timer(void);
54 void Timer_ISR(void);
55 void msDelay(unsigned int timer_count);
C51 COMPILER V7.06 TIMER_REV1_7 08/22/2004 21:22:04 PAGE 2
56 void flashMODE_update(unsigned char modeFlashing, unsigned int Flash_count);
57 uchar Turn1LEDon(uchar turnon, uchar ledIndex);
58 uchar STimerStillCounting(uchar idxStimer);
59 void Mask_Key_Detect(uchar flagClear_nDisable, uchar keyMask);
60
61 //**************************************************************************
62 void Enable_Timer(char timer_name, unsigned int timer_count)
63 {
64 1 EA=0; // Disable 8051 Interrupt
65 1 switch (timer_name)
66 1 { case 0 : tmr0 = timer_count;
67 2 Timer0State=ACTIVATE;
68 2 break;
69 2 case 1 : tmr1 = timer_count;
70 2 Timer1State=ACTIVATE;
71 2 break;
72 2 case 2 : tmr2 = timer_count;
73 2 Timer2State=ACTIVATE;
74 2 break;
75 2 }
76 1 EA=1; // Enable 8051 Interrupt
77 1 }
78
79 //**************************************************************************
80 void Disable_Timer (char timer_name)
81 {
82 1 EA=0; /* Disable 8051 Interrupt */
83 1 switch (timer_name)
84 1 { case 0 : Timer0State=DEACTIVATE;
85 2 break;
86 2 case 1 : Timer1State=DEACTIVATE;
87 2 break;
88 2 case 2 : Timer2State=DEACTIVATE;
89 2 break;
90 2 }
91 1 EA=1; // Enable 8051 Interrupt
92 1 } // end func.
93
94 //***********************************************************************************
95 void Init_Sys_Timer (void)
96 {
97 1 uchar i;
98 1
99 1 TMOD = 1; // TIMER MODE
100 1
101 1 #ifdef XTAL12MHz
TH0 = -1000/256; // 1 msec with 12 MHz clock
TL0 = -1000%256;
#endif
105 1 #ifdef XTAL22_1184MHz
TH0 = -1843/256; // 1 msec with 12 MHz clock
TL0 = -1843%256;
#endif
109 1 #ifdef XTAL24MHz
110 1 TH0 = -2000/256; // 1 msec with 12 MHz clock
111 1 TL0 = -2000%256;
112 1 #endif
113 1
114 1 tmr0 = tmr1 = tmr2 = 0;
115 1 ET0 = 1; // Enable HW Timer0's Interrupt
116 1 Enable_Timer(0, Flash_CNT); // Enable Flashing of the running LED
117 1 EA = 1; // Enable 8051 Interrupt
C51 COMPILER V7.06 TIMER_REV1_7 08/22/2004 21:22:04 PAGE 3
118 1 TR0 = 1; // Start HW Timer0 to count
119 1 keyDetectEnable = 1;
120 1 for (i=0; i<8; i++)
121 1 keySTAGE[i] = 0;
122 1 idxKey = 0;
123 1 } // end func.
124
125 //***********************************************************************************
126 void msDelay(unsigned int timer_count)
127 {
128 1 Enable_Timer(2, timer_count); // delay for sometime specified by timer_cnt
129 1 while( Timer2State );
130 1 Disable_Timer(2);
131 1 } // end func.
132
133 //**********************************************************************************
134 uchar code keyMask[8] = {0x01,0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
135 void Timer_ISR (void) interrupt 1 using 1
136 {
137 1 uchar keyStatus;
138 1
139 1 #ifdef XTAL12MHz
TH0 = -1000/256; /* 1 msec with 12 MHz clock */
TL0 = -1000%256; /* */
#endif
143 1 #ifdef XTAL22_1184MHz
TH0 = -1843/256; // 1 msec with 12 MHz clock
TL0 = -1843%256;
#endif
147 1 #ifdef XTAL24MHz
148 1 TH0 = -2000/256; // 1 msec with 12 MHz clock
149 1 TL0 = -2000%256;
150 1 #endif
151 1
152 1
153 1 ET0 = 1; /* Enable HW Timer0's Interrupt */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -