⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init_systerm.lst

📁 单片机C语言最小系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -