📄 timer0.lst
字号:
C51 COMPILER V7.06 TIMER0 09/26/2008 13:35:50 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TIMER0
OBJECT MODULE PLACED IN ..\OUT\Timer0.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\Source\Timer0.C BROWSE DEBUG OBJECTEXTEND PRINT(..\OUT\Timer0.lst) OBJEC
-T(..\OUT\Timer0.obj)
stmt level source
1 /*
2 *****************************************************************************************************
3 *
4 * File name: timer.c
5 *****************************************************************************************************
6 */
7
8 #include "..\head\includes.h"
9
10
11
12 data struct timer D10ms,D1s;
13 unsigned char xdata ConnectNum;
14 unsigned char xdata bConnect;
15 unsigned int xdata TimerSec[T_SEC_NUM];
16 unsigned int xdata TimerMil[T_MIL_NUM];
17
18
19
20 /*
21 *****************************************************************************************************
22 * FUNC: 1ms中断一次 = 1000 32M晶振
23 * NOTE: onecycle = 12/xtal=12/32=0.375 1000/0.375 = 2667 (65536-2667)/256=245 (65536-2667)%256=149
24 onecycle = 12/xtal=12/40=0.3 1000/0.3 = 3333 (65536-3333)/256=242 (65536-3333)%256=251
25 onecycle = 12/22.1184= 0.5425 1000/0.5425 = 1843.3179~=1844 =248 =204
26 *****************************************************************************************************
27 */
28
29 #define TIMEH1ms 248 //定时1MS FOSC=22.1184M
30 #define TIMEL1ms 204
31
32
33 void timer0() interrupt 1
34 {
35 1
36 1 if (TimerMil[T_FRAME_END]) {
37 2 TimerMil[T_FRAME_END]--;
38 2 }
39 1
40 1 if (TimerMil[T_DELAY_NUM]) {
41 2 TimerMil[T_DELAY_NUM]--;
42 2 }
43 1
44 1 D10ms.count--;
45 1
46 1 if(0 == D10ms.count) {
47 2 D10ms.arrived=TRUE;
48 2 D10ms.count=10;
49 2 D1s.count--;
50 2 if(0 == D1s.count) {
51 3 D1s.count=100;
52 3 D1s.arrived=TRUE;
53 3 }
54 2 }
C51 COMPILER V7.06 TIMER0 09/26/2008 13:35:50 PAGE 2
55 1
56 1 TH0=TIMEH1ms;
57 1 TL0=TIMEL1ms;
58 1 TR0=1;
59 1 }
60
61 /*
62 *****************************************************************************************************
63 *FUNC:初始化定时器,设置波特率
64 *NOTE:
65 *****************************************************************************************************
66 */
67 void Timer0Init(void)
68 {
69 1 unsigned char i;
70 1
71 1 IE=0x00;
72 1 ET0=1; // timer0 interrupt enable
73 1 ES=1; // RS-232 interrupt enable
74 1 EA=1; // all interrupt enable
75 1
76 1 TMOD=0x21; //定时器1用于波特率发生器,定时器0用于定时
77 1 TH0=TIMEH1ms;
78 1 TL0=TIMEL1ms;
79 1
80 1 D10ms.arrived=FALSE;
81 1 D1s.arrived=FALSE;
82 1 D1s.count=100;
83 1 D10ms.count=10;
84 1
85 1 for (i=0; i<T_MIL_NUM; i++) {
86 2 TimerMil[i] = 0;
87 2 }
88 1 for (i=0; i<T_SEC_NUM; i++) {
89 2 TimerSec[i] = 0;
90 2 }
91 1
92 1 TR0=1; //启动定时器
93 1 }
94
95 /*
96 *****************************************************************************************************
97 *Func: 延时
98 *Note:
99 * 1: 入参: 小时 分钟 秒 毫秒
100 * 2:
101 *****************************************************************************************************
102 */
103 void TimeDly(unsigned int ticks)
104 {
105 1 TimerMil[T_DELAY_NUM] = ticks;
106 1 while(TimerMil[T_DELAY_NUM]) {
107 2 ;
108 2 }
109 1 }
110
111 unsigned char DelayHMSM(unsigned char hours,unsigned char minutes,\
112 unsigned char seconds, unsigned int milli)
113 {
114 1 unsigned long xdata ticks;
115 1 unsigned int xdata loops;
116 1
C51 COMPILER V7.06 TIMER0 09/26/2008 13:35:50 PAGE 3
117 1
118 1 if (hours > 0 || minutes > 0 || seconds > 0 || milli > 0) {
119 2 if (minutes > 59) {
120 3 return FALSE;
121 3 }
122 2 if (seconds > 59) {
123 3 return FALSE;
124 3 }
125 2 if (milli > 999) {
126 3 return FALSE;
127 3 }
128 2
129 2 ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * TICKS_PER_SEC
130 2 + TICKS_PER_SEC * ((INT32U)milli + 500L / TICKS_PER_SEC) / 1000L;
131 2 loops = ticks / 65536L;
132 2 ticks = ticks % 65536L;
133 2 TimeDly(ticks);
134 2 while (loops > 0) {
135 3 TimeDly(32768);
136 3 TimeDly(32768);
137 3 loops--;
138 3 }
139 2 return TRUE;
140 2 } else {
141 2 return FALSE;
142 2 }
143 1 }
144
145
146 /*
147 *****************************************************************************************************
148 *FUNC:
149 *NOTE:
150 如果处于配置状态下,3分钟分强制退出
151 //WriteFlash(ConfigReg.bytes,FLASH_DATA_NUM); //进入运行状态前把参数写入到FLASH
152 *****************************************************************************************************
153 */
154 void Updata_Model_Statu(void)
155 {
156 1 if (ModelStatu == MODEL_RUN_STATU) {
157 2 return;
158 2 }
159 1 if (TimerSec[T_EXIT_CONFIG]) {
160 2 TimerSec[T_EXIT_CONFIG]--;
161 2 } else {
162 2 ModelStatu = MODEL_RUN_STATU;
163 2 NetConfigInit(); //强制退出参数以原来的为主,当前没保存的数据放弃!
164 2 HintMsg(4,NULL);
165 2 }
166 1 }
167
168
169 /*
170 *****************************************************************************************************
171 *FUNC:
172 *NOTE:
173 客户端连接,如果连上以后等待发送心跳包
174 //InitPingTable(); //如果还没连上的时候,PING不成功会被清掉
175 *****************************************************************************************************
176 */
177 void Client_Connect(void)
178 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -