📄 time.lst
字号:
C51 COMPILER V8.16 TIME 12/10/2009 11:19:18 PAGE 1
C51 COMPILER V8.16, COMPILATION OF MODULE TIME
OBJECT MODULE PLACED IN time.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE time.c LARGE BROWSE INTVECTOR(0X1000) DEBUG OBJECTEXTEND
line level source
1 #include "global.h"
2
3
4 /******************************************************************************
5 ** 函数: Timer0_Init ()
6 ** 入参: 无
7 ** 返回: 无
8 ** 说明: 查询wiegand溢出,每5ms溢出中断,10ms溢出,手工装载
9 ******************************************************************************/
10 void Timer0_Init ()
11 {
12 1 CKCON |= 0x04;
13 1 TMOD &= ~0x0f;
14 1 TMOD |= 0x01; //16位手工载入
15 1
16 1 RE_LOAD_TIME0;
17 1
18 1 TR0=1;
19 1 ET0=1;
20 1
21 1
22 1 }
23
24
25
26 /******************************************************************************
27 ** 函数: Timer2_Init ()
28 ** 入参: int counts
29 ** 返回:
30 ** 说明:
31 ** Timer2_Init SYSCLK no Interrupt
32 ** Configure Timer2 to auto-reload at interval specified by <counts> (no
33 ** interrupt generated) using SYSCLK as its time base.
34 ******************************************************************************/
35 void Timer2_Init (int counts)
36 {
37 1 TMR2CN = 0x00; // STOP Timer2; Clear TF2H and TF2L;
38 1 // disable low-byte interrupt; disable
39 1 // split mode; select internal timebase
40 1 CKCON |= 0x10;
41 1
42 1 TMR2RL = -counts; // Init reload values
43 1 TMR2 = TMR2RL; // Init Timer2 with reload value
44 1 ET2 = 1; // disable Timer2 interrupts
45 1 TR2 = 1; // start Timer2
46 1 }
47
48 /******************************************************************************
49 ** 函数: Timer0_ISR (void) interrupt
50 ** 入参:
51 ** 返回:
52 ** 说明: 5ms 中断
53 ******************************************************************************/
54 void Timer0_ISR (void) interrupt 1
55 {
C51 COMPILER V8.16 TIME 12/10/2009 11:19:18 PAGE 2
56 1
57 1 PCA0CPH4 =255; //32.1ms 喂狗
58 1
59 1 if(wie_str)
60 1 {
61 2 event_word |=event_wie_arrived; //当脉冲捕获开始,每次都会重载初值
62 2 } //一旦溢出进入中断说明超过2ms
63 1 //没有脉冲,此时认为一帧wiegand收完
64 1
65 1 RE_LOAD_TIME0;
66 1
67 1 }
68
69 /******************************************************************************
70 ** 函数: Timer2_ISR (void) interrupt
71 ** 入参:
72 ** 返回:
73 ** 说明: 1ms 中断
74 ******************************************************************************/
75 void Timer2_ISR (void) interrupt 5
76 {
77 1 static unsigned int count1=0;
78 1 static unsigned int count2=0;
79 1 static unsigned int count3=0;
80 1
81 1
82 1 TF2H = 0;
83 1 count1++;
84 1 count2++;
85 1 count3++;
86 1
87 1 PCA0CPH4 =255; //32.1ms 喂狗
88 1 if(count1==10)
89 1 {
90 2 count1=0;
91 2 event_word |=event_uart_arrived; //50ms 查串口缓冲
92 2
93 2 }
94 1
95 1 if(count2==100)
96 1 {
97 2 count2=0;
98 2 event_word |=event_time_100ms; //100ms 搜索无线
99 2 }
100 1
101 1 if(count3==1000) //1000ms 做长时间基准
102 1 {
103 2 count3=0;
104 2 event_word |=event_time_1000ms;
105 2 }
106 1
107 1 CountSysTimer(); //倒计数组
108 1 }
109
110
111
112
113
114 /******************************************************************************
115 ** 函数: InitSysTimer
116 ** 入参:
117 ** 返回:
C51 COMPILER V8.16 TIME 12/10/2009 11:19:18 PAGE 3
118 ** 说明: 初始化计数器
119 ******************************************************************************/
120 void InitSysTimer(void)
121 {
122 1 unsigned char i;
123 1 for(i = 0; i < MAX_SYSTIMER_COUNT; i++)
124 1 {
125 2 sysTimer[i] = 0;
126 2 }
127 1 }
128
129 /******************************************************************************
130 ** 函数: CountSysTimer
131 ** 入参:
132 ** 返回:
133 ** 说明: 计数减1
134 ******************************************************************************/
135 void CountSysTimer(void)
136 {
137 1 unsigned char i;
138 1 for(i = 0; i < MAX_SYSTIMER_COUNT; i++)
139 1 {
140 2 if(sysTimer[i] > 0)
141 2 sysTimer[i]--;
142 2 }
143 1 }
144
145 /******************************************************************************
146 ** 函数: SetSysTimer
147 ** 入参: id value
148 ** 返回:
149 ** 说明: 设置认为号 和时间
150 ******************************************************************************/
151 unsigned char SetSysTimer(unsigned char id,unsigned int value)
152 {
153 1 if(id < MAX_SYSTIMER_COUNT)
154 1 {
155 2 sysTimer[id] = value;
156 2 return 1;
157 2 }
158 1 else
159 1 return 0;
160 1 }
161
162 /******************************************************************************
163 ** 函数: GetSysTimer
164 ** 入参: id
165 ** 返回:
166 ** 说明: 取任务状态
167 ******************************************************************************/
168 unsigned char GetSysTimer(unsigned char id)
169 {
170 1 if(sysTimer[id] == 0)
171 1 return 1;
172 1 else
173 1 return 0;
174 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 376 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.16 TIME 12/10/2009 11:19:18 PAGE 4
XDATA SIZE = 6 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -