📄 init_comm.lst
字号:
C51 COMPILER V7.06 INIT_COMM 02/05/2005 09:08:14 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE INIT_COMM
OBJECT MODULE PLACED IN init_comm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE init_comm.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <ctype.h>
3 #include <stdlib.h>
4 #include <stdio.h>
5 #include <math.h>
6 #include <intrins.h>
7 #include "define.h"
8 //#include "val.h"
9 #include "function.h"
10 //unsigned char ram_wr24c02;
11 //unsigned char pt_write_24c02;
12 #define TRRE_GAP_MAX 5
13
14 bit second_bit;
15 bit sec_bit,bReceOK;
16 unsigned char dms1,dms10,dms100,sec,key_dms10,comm_time;
17 unsigned char wel_time;
18 //unsigned char ram_373;
19 unsigned char idata cReceBuffer[30],cSendBuffer[30];
20 unsigned char cSendLen,cReceLen,cSendPosi,cReceTimeOut;
21
22 extern unsigned char upDataTime,cReceLen;
23 unsigned char rece_gap_time,speed_time;
24 unsigned char rece_pt;
25
26 /**************************************************/
27 // 系统进行初始化程序
28 /**************************************************/
29 //------------------------------------------------
30 // 对定时器0进行初始化
31 //------------------------------------------------
32 void init_t0(void)
33 {
34 1 TH0=0xf8;
35 1 TL0=0x2f;
36 1 ET0=1;
37 1 TR0=1;
38 1 }
39
40 //------------------------------------------------
41 // 串口进行初始化
42 //------------------------------------------------
43 void init_com(void)
44 {
45 1 SCON=0x40; // mode 1 tx/re
46 1 PCON=0x80; // smod=0 fosc
47 1 TMOD=0x21; // t0 16b/count t1 auto load
48 1 TH1=0xfa; // 19.2 kbit/s 1.2kbyte/s
49 1 TL1=0xfa;
50 1 RI=0;
51 1 TI=0;
52 1 REN=1; // enable ren
53 1 TR1=1; // enable time1 count
54 1 ES=1;
55 1 }
C51 COMPILER V7.06 INIT_COMM 02/05/2005 09:08:14 PAGE 2
56
57 //------------------------------------------------
58 // 对存储的数据进行初始化
59 //------------------------------------------------
60 /*void init_setup(void)
61 {
62 EA=0;
63 Read24c02(ram_wr24c02,0,5);
64 EA=1;
65 }
66
67 void init_24c02(void)
68 {
69 EA=0;
70 // 读取 24C02 的读写指针
71 // Read24c02(&pt_write_24c02,PT_WRITE24C02_ADDRESS,1);
72 EA=1;
73
74 }*/
75
76 //------------------------------------------------
77 // 对液晶显示屏进行初始化,并进行时间的延迟,保证外部信号的有效性
78 //------------------------------------------------
79 void init_lcd(void)
80 {
81 1 unsigned char i;
82 1 GROUND_LED=0; // 背景灯亮
83 1 STATUS_LED=1; // 错误状态灯灭
84 1 BUZZER=1;
85 1 for(i=0;i<8;i=i+2) {
86 2 display_l_black(i,0,64);
87 2 display_r_black(i,0,64);
88 2 }
89 1 }
90 /**************************************************/
91 // 初始化程序结束
92 /**************************************************/
93
94
95
96 void init_sub(void)
97 {
98 1 init_com();
99 1 init_lcd();
100 1 init_t0();
101 1 // init_24c02();
102 1 open_display();
103 1 }
104 //---------------------
105 void time_add(void)
106 {
107 1 second_bit=0;
108 1 sec_bit=1;
109 1 wel_time++;
110 1
111 1
112 1 }
113
114
115 void t0_int(void) interrupt 1 // using 0
116 {
117 1 // TH0=0xfc; //
C51 COMPILER V7.06 INIT_COMM 02/05/2005 09:08:14 PAGE 3
118 1 // TL0=0x18; //
119 1 TH0=0xf8; // 定时器中断中需要的数据初始化
120 1 TL0=0x2f; // 定时器中断中需要的数据初始化
121 1 clr_wdt=1;
122 1 // 计时过程的开始
123 1 dms1++;
124 1 if(dms1==10) {
125 2 dms1=0;
126 2 dms10++;
127 2 key_dms10++;
128 2 comm_time++;
129 2 if(dms10==10){
130 3 dms10=0;
131 3 dms100++;
132 3
133 3 upDataTime++;
134 3 speed_time++;
135 3 if(dms100==10) {
136 4 dms100=0;
137 4 second_bit=1;
138 4
139 4 }
140 3 }
141 2 }
142 1
143 1 if(cReceLen) {
144 2 rece_gap_time++;
145 2 if(rece_gap_time>TRRE_GAP_MAX) {
146 3 cReceLen=0; // 两个数据之间的时间超过了5MS,接收出错
147 3 // 接收的数据必须在5MS内处理完,否则接收缓冲器的指针会复位
148 3 // 或是长时间接收不到数据,接收缓冲器清空
149 3 // rece_bit_success=0; // 清除正确接收标志
150 3 // rece_bit_fail=0; // 清除错误接收标志
151 3 rece_gap_time=0; // 清除接收间隔时间
152 3 // REN=1; // enable rece
153 3 }
154 2 }
155 1
156 1 }
157
158
159 void uart_int(void) interrupt 4
160 {
161 1 if(TI)
162 1 {
163 2 TI = 0;
164 2 if(cSendLen > 0)
165 2 {
166 3 SBUF = cSendBuffer[cSendPosi++]|0x80;
167 3 cSendLen--;
168 3 }
169 2 else
170 2 {
171 3 // 使能485接收
172 3 tran_en = 0;
173 3 cReceLen = 0;
174 3 }
175 2 }
176 1 else if(RI)
177 1 {
178 2 RI = 0;
179 2 rece_gap_time=0;
C51 COMPILER V7.06 INIT_COMM 02/05/2005 09:08:14 PAGE 4
180 2 cReceTimeOut = 5;
181 2 cReceBuffer[cReceLen] = SBUF&0x7f;
182 2 if(cReceLen > 5) {
183 3 if((cReceBuffer[cReceLen-1] == 0x0d) && (cReceBuffer[cReceLen] == 0x0a))
184 3 bReceOK = 1;
185 3 }
186 2 cReceLen++;
187 2 rece_pt=cReceLen;
188 2 if(cReceLen>28) cReceLen=0;
189 2 // cReceBuffer[cReceLen]=cReceLen;
190 2 // CheckCommData();
191 2 }
192 1
193 1 }
194
195
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 291 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 1
IDATA SIZE = 60 ----
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 + -