📄 acus.lst
字号:
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 + -