C51 COMPILER V6.23a HUITU 11/06/2009 17:24:31 PAGE 1 C51 COMPILER V6.23a, COMPILATION OF MODULE HUITU OBJECT MODULE PLACED IN HUITU.OBJ COMPILER INVOKED BY: C:\Keil\C51\Bin\c51.exe HUITU.c DB OE stmt level source 1 #define _HUITU_C_ 2 #include 3 #include 4 #include "huitu.h" 5 #include "8LED.H" 6 #include "12864.h" 7 8 void TIME2_ROUTING() interrupt 5 9 { 10 1 //输入程序代码 11 1 TF2=0; 12 1 LED8_DSP(); 13 1 X_Move(); 14 1 Y_Move(); 15 1 } 16 17 void INIT_TIME2() 18 { 19 1 // RCAP2H=0XFA; 20 1 // RCAP2L=0XBE;//1.46MS 21 1 RCAP2H=0XFC; 22 1 RCAP2L=0X66;//1MS 23 1 ET2=1; 24 1 TR2=1; 25 1 } 26 27 void InitInterrupt() 28 { 29 1 INIT_TIME2(); 30 1 EA=1; 31 1 } 32 33 #define INIT 0 34 #define CLOCK 1 35 #define KEY 2 36 #define SJ 3 37 #define CFX 4 38 #define DRAW 5 39 40 41 42 void Init(void) _task_ INIT 43 { 44 1 InitInterrupt(); 45 1 SetOnOff(1); 46 1 ClearScreE(0); 47 1 SetOnOff(1); 48 1 X_RST(); 49 1 os_create_task(CLOCK); 50 1 os_create_task(KEY); 51 1 52 1 // os_create_task(HUITU); 53 1 54 1 os_delete_task (INIT); 55 1 } C51 COMPILER V6.23a HUITU 11/06/2009 17:24:31 PAGE 2 56 57 void Clock(void) _task_ CLOCK 58 { 59 1 unsigned char second=0; 60 1 while(1) 61 1 { 62 2 os_wait(K_IVL,50,0);//等待0.5秒 63 2 str[7]=17; 64 2 os_wait(K_IVL,50,0);//等待0.5秒 65 2 if(++second>=10)second=0; 66 2 str[7]=second; 67 2 } 68 1 } 69 70 #define KEY_IO P1 71 void Key_Task(void) _task_ KEY 72 { 73 1 unsigned int keytime=0; 74 1 unsigned char temp; 75 1 while (1) 76 1 { 77 2 KEY_IO=0xf0; 78 2 if (KEY_IO!=0xf0) 79 2 { 80 3 if (++keytime==1000) 81 3 { 82 4 temp=KEY_IO; 83 4 KEY_IO=temp|0x0f; 84 4 switch (KEY_IO) 85 4 { 86 5 case 0X77: X_mm+=10;break; 87 5 case 0X7b: X_mm-=10;break; 88 5 case 0X7d: Y_mm+=10;break; 89 5 case 0X7e: Y_mm-=10;break; 90 5 91 5 case 0Xb7:os_create_task(SJ); break; 92 5 case 0Xbb:os_create_task(CFX); break; 93 5 case 0Xbd: break; 94 5 case 0Xbe: break; 95 5 96 5 default: break; 97 5 } 98 4 } 99 3 } 100 2 else 101 2 keytime=0; 102 2 } 103 1 } 104 105 void HuiTu_SJ(void) _task_ SJ 106 { 107 1 unsigned char num=0; 108 1 X_mm=SJX[num][0]; 109 1 Y_mm=SJX[num][1]; 110 1 111 1 while (1) 112 1 { 113 2 if (Now_X_mm==SJX[num][0]&&Now_Y_mm==SJX[num][1]) 114 2 { 115 3 num++; 116 3 X_mm=SJX[num][0]; 117 3 Y_mm=SJX[num][1]; C51 COMPILER V6.23a HUITU 11/06/2009 17:24:31 PAGE 3 118 3 switch (num) 119 3 { 120 4 case 3: Speed=205;break; 121 4 case 1: P2_5=0;os_create_task(DRAW);break; 122 4 case 4: P2_5=1;Speed=137;os_delete_task (DRAW);break; 123 4 default: break; 124 4 } 125 3 } 126 2 os_wait(K_TMO,200,0);//等待1秒 127 2 if(SJX[num][0]==0&&Now_X_mm==0) 128 2 break; 129 2 } 130 1 os_delete_task (SJ); 131 1 } 132 133 void HuiTu_CFX(void) _task_ CFX 134 { 135 1 unsigned char num=0; 136 1 X_mm=JX[num][0]; 137 1 Y_mm=JX[num][1]; 138 1 139 1 while (1) 140 1 { 141 2 if (Now_X_mm==JX[num][0]&&Now_Y_mm==JX[num][1]) 142 2 { 143 3 num++; 144 3 X_mm=JX[num][0]; 145 3 Y_mm=JX[num][1]; 146 3 switch (num) 147 3 { 148 4 case 1: P2_5=0;os_create_task(DRAW);break; 149 4 case 5: P2_5=1;os_delete_task (DRAW);break; 150 4 default: break; 151 4 } 152 3 } 153 2 os_wait(K_TMO,200,0);//等待1秒 154 2 if(JX[num][0]==0&&Now_X_mm==0) 155 2 break; 156 2 } 157 1 os_delete_task (CFX); 158 1 } 159 160 161 void Draw(void) _task_ DRAW 162 { 163 1 unsigned char x,y; 164 1 ClearScreE(0); 165 1 SetPoint(Now_X_mm,Now_Y_mm,1); 166 1 x=Now_X_mm; 167 1 y=Now_Y_mm; 168 1 while (1) 169 1 { 170 2 if (x!=Now_X_mm) 171 2 { 172 3 SetPoint(Now_Y_mm,Now_X_mm,1); 173 3 x=Now_X_mm; 174 3 } 175 2 if (y!=Now_Y_mm) 176 2 { 177 3 SetPoint(Now_Y_mm,Now_X_mm,1); 178 3 y=Now_Y_mm; 179 3 } C51 COMPILER V6.23a HUITU 11/06/2009 17:24:31 PAGE 4 180 2 } 181 1 } 182 183 void X_RST(void) 184 { 185 1 unsigned int i; 186 1 DIR=1; 187 1 while (RL==0) 188 1 { 189 2 STEP; 190 2 os_wait(K_TMO,0,0); 191 2 } 192 1 DIR=0; 193 1 for (i=0;i<1330;i++) 194 1 { 195 2 STEP; 196 2 os_wait(K_TMO,0,0); 197 2 } 198 1 FZ; 199 1 os_wait(K_TMO,100,0); 200 1 STOP; 201 1 } 202 203 void X_Move(void) 204 { 205 1 static unsigned char i; 206 1 if (X_mm!=Now_X_mm) 207 1 { 208 2 if(X_mm>Now_X_mm) 209 2 DIR=0; 210 2 else 211 2 DIR=1; 212 2 STEP; 213 2 if (++i>=137) 214 2 { 215 3 i=0; 216 3 if (DIR) 217 3 Now_X_mm--; 218 3 else 219 3 Now_X_mm++; 220 3 str[0]=Now_X_mm/10; 221 3 str[1]=Now_X_mm%10; 222 3 } 223 2 } 224 1 } 225 226 void Y_Move(void) 227 { 228 1 static unsigned char i; 229 1 if (Y_mm!=Now_Y_mm) 230 1 { 231 2 if(Y_mm>Now_Y_mm) 232 2 ZZ; 233 2 else 234 2 FZ; 235 2 if (++i>=Speed) 236 2 { 237 3 i=0; 238 3 if (P2_0==0) 239 3 Now_Y_mm--; 240 3 else 241 3 Now_Y_mm++; C51 COMPILER V6.23a HUITU 11/06/2009 17:24:31 PAGE 5 242 3 str[3]=Now_Y_mm/10; 243 3 str[4]=Now_Y_mm%10; 244 3 if (Y_mm==Now_Y_mm) 245 3 STOP; 246 3 } 247 2 } 248 1 } 249 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 1285 ---- CONSTANT SIZE = 40 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 16 14 IDATA SIZE = ---- ---- BIT SIZE = ---- 1 END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)