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

📄 main.lst

📁 温湿度变送器程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 185          {
 186   1       ES = 0;    //关串行通讯中断
 187   1       TMOD=0X11; //则T1,与T0 都设为16位定时器
 188   1       IE=0x8a;   //开t1,t0中断
 189   1       TCON=0x55; //开定时器
 190   1       P3M1=0x30; //设P3.4,P3.5推挽输出
 191   1      
 192   1       #pragma asm
 193   1         CLR P3.4
 194   1         CLR P3.5
 195   1       #pragma endasm
 196   1      
 197   1       TH0 = 0xFB;
 198   1       TL0 = 0xC8;
 199   1       TH1 = 0xFB;
 200   1       TL1 = 0xC8;
 201   1       temp_h_h = 0xFB;
 202   1       temp_h_l = 0xC8;
 203   1       temp_l_h = 0xCF;
 204   1       temp_l_l = 0x7C;
 205   1       rh_h_h = 0xFB;
 206   1       rh_h_l = 0xC8;
 207   1       rh_l_h = 0xCF;
 208   1       rh_l_l = 0x7C;
 209   1      
 210   1       /*   TMOD=0x21;// SET T1  8 BYTE TIMR MODE  如果  TMOD=0X11 //则T1,与T0 都设为16位定时器
 211   1          TCON=0x5 ;// SET T0  16 BYTE  TIMR MODE 
 212   1          SCON=0x50;// SET SCON 1   ren on          IE=0x8a   //开t1,t0中断
 213   1          PCON=0x80;// SMOD=0  XTAL= 18.432         TCON=0x55 //开定时器
 214   1          TH1=0xF6;// SET T1  9600 bit  band 
 215   1          TL1=0xF6;// new value fah old fdh 
 216   1          TR1=1;// on T1 
 217   1          EA =1   ;   // on intrrupt 
 218   1          ES =1   ;
 219   1          ET0 =1  ;
 220   1          TR0 =1  ; */
 221   1       }
 222          /**********************************************************************************
 223              定时器 0
 224              温度pwm脉宽输出中断服务程序
 225              温度的脉宽值高电平在;temp_h_h+temp_h_l中
 226              温度的脉宽值低电平在;temp_l_h+temp_l_l中
 227              转换频率100赫兹
 228          ***********************************************************************************/
 229          void pwm_out(void) interrupt 1  using 0 
 230          {
 231   1       #pragma asm
 232   1       PWM:
 233   1         Jb p3.4,pwm1_L
 234   1         CPL P3.4
 235   1         CLR TR0
 236   1         MOV TH0,temp_h_h
 237   1         MOV TL0,temp_h_l
 238   1         SETB TR0
 239   1         RETI
 240   1      pwm1_L: CPL  p3.4
C51 COMPILER V7.50   MAIN                                                                  02/20/2009 14:03:12 PAGE 5   

 241   1         CLR  TR0
 242   1         MOV  TH0,temp_l_h  
 243   1         MOV  TL0,temp_l_l 
 244   1         SETB TR0
 245   1         RETI
 246   1       #pragma endasm
 247   1      }
 248          /**********************************************************************************
 249              定时器1
 250              湿度pwm脉宽输出中断服务程序
 251              湿度的脉宽值高电平在;rh_h_h+rh_h_l中
 252              湿度的脉宽值低电平在;rh_l_h+rh_l_l中
 253              转换频率100赫兹
 254          ***********************************************************************************/
 255          void pwm_rh_out(void) interrupt 3 using 0 
 256          {
 257   1       #pragma asm
 258   1        PWM_rh:
 259   1         Jb p3.5,pwm2_L
 260   1         CPL P3.5
 261   1         CLR TR1
 262   1         MOV TH1,rh_h_h
 263   1         MOV TL1,rh_h_l
 264   1         SETB TR1
 265   1         RETI
 266   1      pwm2_L: CPL  p3.5
 267   1         CLR  TR1
 268   1         MOV  TH1,rh_l_h
 269   1         MOV  TL1,rh_l_l
 270   1         SETB TR1
 271   1         RETI
 272   1       #pragma endasm
 273   1      }
 274          
 275           void PCA_Initiate(void)
 276          /******************************************************************************
 277                PCA定时器模块初始化程序
 278          *******************************************************************************/   
 279          {
 280   1        //TMOD=0X11 //则T1,与T0 都设为16位定时器
 281   1        //IE=0x8a   //开t1,t0中断
 282   1        //TCON=0x55 //开定时器
 283   1       #pragma asm
 284   1          MOV CMOD,#10000000B      //;PCA空闲模式下记数器停止工作
 285   1                                   //;PCA fosc/12
 286   1                                   //;禁止PCA记数溢出中断
 287   1         MOV CCON,#0   //;CF=0 清记数中断标志
 288   1                       //CR=0 停记数器
 289   1                       //;清 PCA 各模块中断标志 CCF1=0 CCF0=0
 290   1         MOV CL,#0
 291   1         MOV CH,#0     //;清PCA记数器
 292   1         MOV CCAP0L,#0
 293   1         MOV CCAP0H,#3CH
 294   1         MOV CCAPM0,#49H //;设置pca 模块0为16位定时器 ECCF0=1,允许pca模块0中断
 295   1                        //;当[CCAP0H,CCAP0L]=[CH,CL]中断发生
 296   1         SETB EPCA_LVD  //;开中断
 297   1         SETB CR        //;开PCA 记数(CH,CL)
 298   1         
 299   1       #pragma endasm 
 300   1      }
 301          
 302          /*****************************************************************************
C51 COMPILER V7.50   MAIN                                                                  02/20/2009 14:03:12 PAGE 6   

 303                PCA定时器模块中断服务程序
 304                设定10ms中断一次,中断100次1秒钟
 305                Counter存中断记数值
 306                18.432/12=15360=3C00h
 307                Channe_10mS_H=3CH
 308                Channe_10mS_L=0
 309          ******************************************************************************/
 310          void pca_temr(void) interrupt 6 using 0
 311          {
 312   1       #pragma asm
 313   1      
 314   1         PUSH ACC
 315   1         PUSH PSW
 316   1                         //;18.432/12=15360=3C00h
 317   1                         // ;Channe_10mS_H=3CH
 318   1         MOV A,#24H      //MOV A,#3CH       //;Channe_10mS_L=0
 319   1         ADD A,CCAP0H
 320   1         MOV CCAP0H,A
 321   1         CLR CCF0
 322   1         INC Counter
 323   1         MOV A,Counter
 324   1         CLR C
 325   1         SUBB A,#100
 326   1         JC PCA_Interrupt_Exit
 327   1         MOV Counter,#0
 328   1         SETB time_1s_flag
 329   1         SETB read_sht_flag
 330   1         CLR P1.2
 331   1      PCA_Interrupt_Exit:
 332   1         POP PSW
 333   1         POP ACC
 334   1         RETI
 335   1       #pragma endasm
 336   1      }
 337          
 338          /*void uart_isr(void)  interrupt 4  using 3
 339          {
 340              uchar tmp;
 341              if (RI)
 342              {
 343                  RI = 0;
 344                  tmp = SBUF;
 345                  if (tmp == 0)                      //帧头
 346                  {
 347                      start_flag = 1;
 348                      uart_rcv_flag = 0;
 349                  }
 350                  else if (start_flag)
 351                  {
 352                              switch (uart_rcv_flag)
 353                      {
 354                          case 0:temp_h_h = 65536 - tmp * 3;
 355                                 uart_rcv_flag = 1;
 356                                 break;
 357                                      case 1:temp_l_h = 65536 - tmp;
 358                                 start_flag = 0;
 359                                 break;
 360                                  }
 361                           }
 362                   }
 363          }*/

C51 COMPILER V7.50   MAIN                                                                  02/20/2009 14:03:12 PAGE 7   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    517    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -