📄 init_systerm.lst
字号:
134 1 // TF2 |EXF2 |RCLK |TCLK |EXEN2| TR2 |C/T2 |CP/RL2|
135 1 //-----|-----|-----|-----|-----|-----|-----|------|
136 1 //TF2:定时器2溢出标志位,必须软件清零,RCLK=1或TCLK=1时,TF2不用置位
137 1 //EXF2:定时器2外部标志位,EXEN2=1 时,T2EX 上的负跳变而出现捕捉或重
138 1 // 载时,EXF2 会被硬件置位。定时器2打开,EXF2=1 时,将引导CPU
139 1 // 执行定时器2中断程序。EXF2必须软件清0,在向上/向下计数模式
140 1 // (DCEN=1)下EXF2不能引起中断
141 1 //RCLK:串行口接收数据时钟标志位。若RCLK=1,串行口将使用定时器2 溢出
142 1 // 脉冲作为串行口工作模式1 和3的串口接收时钟;RCLK=0,将使用定
143 1 // 时器1计数溢出作为串口接收时钟。
144 1 //TCLK:串行口发送数据时钟标志位。若TCLK=1,串行口将使用定时器2 溢出
145 1 // 脉冲作为串行口工作模式1 和3 的串口发送时钟;TCLK=0,将使用定
146 1 // 时器1计数溢出作为串口发送时钟。
147 1 //EXEN2:定时器2外部允许标志位。当EXEN2=1时,如果定时器2没有用作串行
148 1 // 时钟,T2EX(P1.1)的负跳变引起定时器2 捕捉和重载.若EXEN2=0,
149 1 // 定时器2将视T2EX端的信号无效
150 1 //TR2:开始/停止控制定时器2。TR2=1,定时器2开始工作
151 1 //C/T2:定时器2 定时/计数选择标志位。CT2=0,定时; CT2=1,外部事件计数
152 1 // (下降沿触发)
153 1 //CP/RL2:捕捉/重载选择标志位。当EXEN2=1时,CP/RL2=1,T2EX出现负脉冲,
154 1 // 会引起捕捉操作;当定时器2溢出或EXEN2=1时T2EX出现负跳变,都
155 1 // 会出现自动重载操作。
156 1 }
157 /******************************************************************************/
158 /* 初始化串口 */
159 /******************************************************************************/
160 void Init_Com(void)
161 {
162 1 SCON = 0x50;//缺省模式为8位波特率可变,不允许多机通信
163 1 //-----|-----|-----|-----|-----|-----|-----|------|
164 1 // SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
165 1 //-----|-----|-----|-----|-----|-----|-----|------|
166 1 //SM0、SM1串口工作方式选择位
167 1 //-----|-----|-----|--------------------------------------------|
168 1 // SM0 | SM1 | 方式| 功能 |
169 1 //-----|-----|-----|--------------------------------------------|
170 1 // 0 | 0 | 0 |移位寄存器方式(用于IO扩展,波特率F/12) |
171 1 //-----|-----|-----|--------------------------------------------|
172 1 // 0 | 1 | 1 |8位UART,波特率可变(由T1溢出率决定) |
173 1 //-----|-----|-----|--------------------------------------------|
C51 COMPILER V8.08 INIT_SYSTERM 04/17/2008 09:50:30 PAGE 4
174 1 // 1 | 0 | 2 |9位UART,波特率为F/64或F/32 |
175 1 //-----|-----|-----|--------------------------------------------|
176 1 // 1 | 1 | 3 |9位UART,波特率可变(由T1溢出率决定) |
177 1 //-----|-----|-----|--------------------------------------------|
178 1 //SM2:允许方式2、3多机通信控制位。在方式2或方式3种,如SM2=1,则接
179 1 //受到的第9位数据(RB8)为0时,不启动接受中断标志RI,当接受到的第
180 1 //9位数据为1时,则启动接受中断RI。如果SM2=0,则接受的第9位数据无论
181 1 //为1或者0均启动RI。在方式1时,如果SM2=1。则只有在接受到有效的停止
182 1 //位时才启动RI,若没有接受到有效停止位,则RI=0,如果不是多机通信,
183 1 //则无un串行口工作何种方式,SM2一般都置为0
184 1 //REN:允许接受位,由软件置1
185 1 //TB8:在方式2和方式3种要发送的第9位数据,由软件置位
186 1 //RB8:在方式2和方式3种要接收的第9位数据,在方式1时,如SM2=0,RB8是
187 1 //接收到的停止位。在方式0中,不使用RB8
188 1 PCON &= 0x7f; //缺省模式波特率不加倍
189 1 //SMOD = 0波特率不加倍,SMOD = 1波特率加倍
190 1 RCAP2H = 0xff;//在12M晶体时,波特率为9600
191 1 RCAP2L = 0xd9;// F(晶体频率)
192 1 // 波特率 = ---------------------------
193 1 // 32*(65536-(RCAP2H,RCAP2L)
194 1 ES = 1; // ES = 0禁止串口中断,ES = 1允许串口中断
195 1 }
196 /******************************************************************************/
197 /* 初始化外部中断0 */
198 /******************************************************************************/
199 void Init_Int0(void)
200 {
201 1 IE1 = 0;//外部INT0中断请求标志,该位在TCON的第2位
202 1 IT0 = 1;//IT0:外部中断INT0触发方式选择位,缺省为1
203 1 //可由指令设置为0或者1,当IT0=0时,INT0被指定为电平触发方式,即低电平
204 1 //有效,CPU在每一机器周期的S5P2采样INT0的输入电平,当采样值为低电平时,
205 1 //IE0置1。当IT0=1时,INT0被指定为边沿触发方式,即INT0下降沿有效,CPU在
206 1 //每一机器周期的S5P2采样INT0的输入电平,若一次采样值为高电平,而下一机
207 1 //器周期采样值为低电平,IE1置1。
208 1 EX0 = 0;//EX0 = 0禁止INT0中断,EX0 = 1开INT0中断,缺省不允许
209 1 }
210 /******************************************************************************/
211 /* 初始化外部中断1 */
212 /******************************************************************************/
213 void Init_Int1(void)
214 {
215 1 IE1 = 0;//外部INT1中断请求标志,该位在TCON的第4位
216 1 IT1 = 1;//IT1:外部中断INT1触发方式选择位,缺省为1
217 1 //可由指令设置为0或者1,当IT1=0时,INT1被指定为电平触发方式,即低电平
218 1 //有效,CPU在每一机器周期的S5P2采样INT1的输入电平,当采样值为低电平时,
219 1 //IE1置1。当IT1=1时,INT1被指定为边沿触发方式,即INT1下降沿有效,CPU在
220 1 //每一机器周期的S5P2采样INT0的输入电平,若一次采样值为高电平,而下一机
221 1 //器周期采样值为低电平,IE1置1。
222 1 EX1 = 0;//EX0 = 0禁止INT0中断,EX0 = 1开INT0中断,缺省不允许
223 1 }
224
225 /******************************************************************************/
226 /* 初始化CPU中断和优先级 */
227 /******************************************************************************/
228 void Init_Cpu_IEIP(void)
229 {
230 1 EA = 1;//EA = 1允许全局中断。EA = 0禁止全局中断
231 1 IP = 0;//缺省都为低优先级中断
232 1 //IP:51的中断分为两个优先级,实现两级中断嵌套
233 1 //-----|-----|-----|-----|-----|-----|-----|------|
234 1 // | | | PS | PT1 | PX1 | PT0 | PX0 |
235 1 //-----|-----|-----|-----|-----|-----|-----|------|
C51 COMPILER V8.08 INIT_SYSTERM 04/17/2008 09:50:30 PAGE 5
236 1 //PS:串行口优先级设定位
237 1 //PS=1,串行口设为高优先级,PS=0串行口设为低优先级
238 1 //PT1:定时器1优先级设定位
239 1 //PT1=1,定时器1设为高优先级,PT1=0定时器1设为低优先级
240 1 //PX1:外部中断INT1优先级设定位
241 1 //PX1=1,外部中断INT1设为高优先级,PX1=0外部中断INT1设为低优先级
242 1 //PT0:定时器0优先级设定位
243 1 //PT0=1,定时器0设为高优先级,PT0=0定时器0设为低优先级
244 1 //PX0:外部中断INT1优先级设定位
245 1 //PX0=1,外部中断INT0设为高优先级,PX0=0外部中断INT0设为低优先级
246 1 }
247 /******************************************************************************/
248 /* 初始化看门狗定时器 */
249 /******************************************************************************/
250 void Init_Wd(void)
251 {
252 1 // WD = 0x1e;//WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器
253 1 //WD = 0xe1;//中的看门狗定时器复位存储器(WDTRST)构成。WDT 在默认情况下无法工作
254 1 //为了激活WDT,户用必须往WDTRST 寄存器(地址:0A6H)中依次写入01EH和
255 1 //0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周
256 1 //期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法
257 1 //停止WDT工作。当WDT溢出,它将驱动RSR引脚一个高个电平输出。
258 1 //为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H
259 1 //和0E1H。当WDT激活后,用户必须向WDTRST写入01EH和0E1H喂狗来避免WDT
260 1 //溢出。当计数达到8191(1FFFH)时,13 位计数器将会溢出,这将会复位器件。
261 1 //晶振正常工作、WDT激活后,每一个机器周期WDT 都会增加。为了复位WDT,
262 1 //用户必须向WDTRST 写入01EH 和0E1H(WDTRST 是只读寄存器)。WDT 计数器
263 1 //不能读或写。当WDT 计数器溢出时,将给RST 引脚产生一个复位脉冲输出,
264 1 //这个复位脉冲持续96个晶振周期(TOSC),其中TOSC=1/FOSC。为了很好地使
265 1 //用WDT,应该在一定时间内周期性写入那部分代码,以避免WDT复位。
266 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 84 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
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 + -