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

📄 acus.lst

📁 一个针灸治疗仪源代码,包括记时,显示AD采样程序,开发环境keil.使用的芯片PLC89C935
💻 LST
📖 第 1 页 / 共 5 页
字号:
 954   2                        deca=Temperature/10;
 955   2                                first=Temperature%10;
 956   2                                        if(P13==0) //如果P13为0显示温度控制
 957   2                            {WriteDisp(2,deca);
 958   3                                         WriteDisp(3,first);}                 
 959   2                               if(TempLimit<Temperature)
 960   2                                         { templed=CLOSE;
 961   3                           watchdog();}
 962   2                       else if(TaskStart) 
 963   2                            {templed=OPEN ;
 964   3                               watchdog();}                
 965   2                                   
 966   2              
 967   2              os_wait (K_TMO, 100, 0);           
 968   2          
 969   2        }
 970   1      }
 971          
 972           
 973          /*********************************************************
 974          *名称:TempSetup()
 975          *功能:温度设置任务
 976          *入口参数:no
 977          *出口参数:无
 978          *********************************************************/
 979          TempSetup()              _task_ TEMPSET
 980          { uchar deca,first,ad1=30,ad2=30;
 981   1                
 982   1        while (1)  {  //ad1= MeilanFilter(CHANNEL1);
 983   2                       
 984   2                       ad1=AD_start(CHANNEL1);
 985   2                       TempLimit=ad1;
C51 COMPILER V7.01  ACUS                                                                   11/24/2004 13:33:22 PAGE 17  

 986   2                                       if(TempLimit>=70)TempLimit=70;
 987   2                                       if(TempLimit<2)TempLimit=0;
 988   2                       deca=TempLimit/10;
 989   2                               first=TempLimit%10; 
 990   2                                       if(P13)//如果P13为1显示温度设置
 991   2                          {WriteDisp(2,deca);
 992   3                                       WriteDisp(3,first);
 993   3                                               templed=CLOSE;}                    
 994   2                       watchdog();
 995   2                                   os_wait (K_TMO, 50, 0);
 996   2                                
 997   2                               }
 998   1        }
 999          /*********************************************************
1000          *名称:PWMControl()
1001          *功能:脉冲控制任务
1002          *入口参数:no
1003          *出口参数:无
1004          *********************************************************/
1005          void  PWMControl(void)            _task_ PWMCON
1006          { static uint idata freq,i;
1007   1        static uchar idata PWMStop;
1008   1        while(1)
1009   1              { PWMChang++;
1010   2               if(pwmkey) 
1011   2                        { if(PWMChang>=6)
1012   3                                {   // HLTRN=~HLTRN;
1013   4                                     HLTRN=0;
1014   4                                         PWMChang=0;
1015   4                                     i+=1;
1016   4                                         i&=0x07;
1017   4                                         freq=PWM128HZ>>i;
1018   4                                         PWM_start(freq,4);
1019   4                                     PWMStop=0;
1020   4                                         
1021   4                            }
1022   3                         }    
1023   2                       else   { HLTRN=0; 
1024   3                          if(PWMChang>=2)
1025   3                            { 
1026   4                              PWM_start(PWM1024HZ,2);
1027   4                                                  PWMChang=0;
1028   4                            }
1029   3                         else
1030   3                                                  PWM_start(PWM2048HZ-12,2);
1031   3                      }
1032   2              os_wait(K_TMO,30,0);}  //8秒变化一次
1033   1          
1034   1        }
1035          
1036          
1037            
1038          
1039          
1040          /*********************************************************
1041          *名称:TempSetup()
1042          *功能:时间设置任务
1043          *入口参数:no
1044          *出口参数:无
1045          *********************************************************/
1046          TimeSetup()              _task_ TIMESET
1047          { uchar deca,first;
C51 COMPILER V7.01  ACUS                                                                   11/24/2004 13:33:22 PAGE 18  

1048   1        
1049   1                
1050   1        while (1)  {   
1051   2                       os_wait (K_SIG, 40, 0); 
1052   2                       TimeLimit+=10; 
1053   2                       if(TimeLimit>60)
1054   2                          TimeLimit=0;
1055   2                       end.hour=TimeLimit/60+ctime.hour;   //记录结束时间
1056   2                                       end.min= TimeLimit%60+ctime.min;
1057   2                                       end.sec= 0;
1058   2                                       ctime.sec=0;
1059   2                                       deca =TimeLimit/10;
1060   2                                       first=TimeLimit%10;
1061   2                                       WriteDisp(0,deca);
1062   2                                   WriteDisp(1,first);
1063   2                                       TimeCounter=0;
1064   2                       if(TIMECONRUN==0)
1065   2                                       os_create_task (TIMECON);
1066   2                                       watchdog();
1067   2                               }
1068   1      
1069   1        }
1070          /*********************************************************
1071          *名称:TimeCon()
1072          *功能:温度控制任务
1073          *入口参数:no
1074          *出口参数:无
1075          *********************************************************/
1076          TimeCon()  _task_      TIMECON
1077          {uchar deca,first;
1078   1       while(1)
1079   1            {TimeCounter++;
1080   2                 TimeCounter&=0x1f;
1081   2             if(TimeCounter>10&&TaskStart==0)                 //如果3秒后没有按键或调整电压则开始治疗任务
1082   2                                         {
1083   3                                          if(P13==0)
1084   3                                          os_create_task (TEMPCON);       //创建温度控制任务
1085   3                          os_create_task (PWMCON);        //创建脉冲控制任务
1086   3                                              EEPROMwrite(TIMEADDR, TimeLimit);
1087   3                          EEPROMwrite(TEMPADDR, TempLimit);//保存工作状态
1088   3                                              start.hour=ctime.hour;              //记录开始时间
1089   3                          start.min=ctime.min;
1090   3                          start.sec=ctime.sec;
1091   3                          timeled=OPEN;  
1092   3                          templed=OPEN;
1093   3                                              ALAMECON=CLOSE;                   
1094   3                                              TaskStart=1;
1095   3                                              TimeCounter=0;  
1096   3                                              TIMECONRUN=1;
1097   3                         }
1098   2              if(TaskStart==1) 
1099   2                {  TimeLimit=(end.hour-ctime.hour)*60;
1100   3                           TimeLimit+=end.min-ctime.min ;
1101   3                               if(TimeLimit>60)TimeLimit=60;
1102   3                               deca =TimeLimit/10;
1103   3                               first=TimeLimit%10;
1104   3                               WriteDisp(0,deca);
1105   3                               WriteDisp(1,first);
1106   3                                watchdog();
1107   3                           if(TimeLimit==0)                        //如果任务开始检查时间是否
1108   3                              {TimeCounter=0;
1109   4                                               TaskStart=0;
C51 COMPILER V7.01  ACUS                                                                   11/24/2004 13:33:22 PAGE 19  

1110   4                           TimeLimit=0;
1111   4                           HLTEN=1;
1112   4                           HLTRN=1;                         //禁止PWM输出
1113   4                                               ALAMECON=OPEN;
1114   4                           timeled=CLOSE;  
1115   4                           templed=CLOSE;
1116   4                           TIMECONRUN=0;
1117   4                                               os_delete_task (TEMPCON);
1118   4                                               os_delete_task (PWMCON);
1119   4                                               os_delete_task (TIMECON);
1120   4                           
1121   4                                               }
1122   3                   
1123   3                              }
1124   2                       
1125   2                              os_wait (K_TMO, 100, 0);
1126   2                              }
1127   1         }
1128             /*********************************************************
1129          *名称:Blinking()
1130          *功能:闪烁任务
1131          *入口参数:no
1132          *出口参数:无
1133          *********************************************************/
1134          /*Blinking()             _task_ BLINKING
1135          { uchar i;
1136            uchar tempdisp[4];
1137            timeled=0;
1138            templed=0;
1139            for(i=0;i<=4;i++)
1140                 {tempdisp[i]=dispbuff[i];}
1141            while(1) {
1142                           if(TempCounter==1)  
1143                        { os_wait(K_TMO,30,0);
1144                      templed=0;
1145                              WriteDisp(0,0xff);
1146                                  WriteDisp(1,0xff);
1147                                  os_wait(K_TMO,100,0);
1148                      templed=1;
1149                      WriteDisp(0,tempdisp[0]);
1150                                  WriteDisp(1,tempdisp[1]);
1151                                  os_wait(K_TMO,100,0);
1152                                  }
1153                     if(TempCounter==2)
1154                     {timeled=0;
1155                      WriteDisp(2,0xff);
1156                                  WriteDisp(3,0xff);
1157                                  os_wait(K_TMO,100,0);
1158                      timeled=1;
1159                              WriteDisp(2,tempdisp[2]);
1160                                  WriteDisp(3,tempdisp[3]);
1161                                  os_wait(K_TMO,100,0);
1162                                  }
1163                   if(TempCounter==0)
1164                     {WriteDisp(0,0x00);
1165                              WriteDisp(1,0x00);
1166                                  WriteDisp(2,0x00);
1167                                  WriteDisp(3,0x00); 
1168                              os_delete_task (BLINKING);}
1169                        } 
1170                                  
1171                           }                   
C51 COMPILER V7.01  ACUS                                                                   11/24/2004 13:33:22 PAGE 20  

1172                                          */
1173               
1174            
1175            


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2459    ----
   CONSTANT SIZE    =    256    ----
   XDATA SIZE       =     37      13
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     15    ----
   BIT SIZE         =      5    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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