C51 COMPILER V6.23a KEY4X4 05/24/2009 21:40:07 PAGE 1 C51 COMPILER V6.23a, COMPILATION OF MODULE KEY4X4 OBJECT MODULE PLACED IN KEY4X4.OBJ COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe KEY4X4.C DB OE stmt level source 1 #include 2 #include "8LED.H" 3 #include "12864_j.h" 4 #define KEY_IO P1 5 #define CP P3_0 6 #define DIR P3_1 7 #define RIGHT P3_2 8 #define ONESTEP CP=1;CP=0;CP=0;CP=0;CP=0;CP=0;CP=0;CP=1 9 #define BJDJ_DELAY for(j=0;j<50;j++) 10 11 #define ZZ P3_3=1,P3_4=0 12 #define FZ P3_3=0,P3_4=1 13 #define STOP P3_3=1,P3_4=1 14 15 void LCM_ALL(void); 16 void Change_LCM_Mode(void); 17 unsigned char key (void); 18 void get_LINE(unsigned char ,unsigned char ); 19 void fw(void); 20 void bjdj(void); 21 22 unsigned char LCM_STR[4][5]= 23 { 24 1,2,3,4, 1, 25 5,6,0,0, 0, 26 0,0,0,0, 0, 27 0,0,0,0, 0, 28 }; 29 30 31 32 33 unsigned char code LINE_code[][4]= 34 { 35 0,0,0,0, //无显示LINE[0] 36 37 1,2,3,4, //参数设置line[1] 38 5,6,0,0, //打印line[2] 39 40 7,8,0,0, //页数LINE[3] 41 9,10,0,0, //速度LINE[4] 42 11,12,0,0, //纸张LINE[5] 43 44 21,0,0,0, //1 LINE[6] 45 46 17,16,0,0, //低速line[7] 47 15,16,0,0, //高速line[8] 48 49 13,24,0,0, //A4line[9] 50 21,26,14,0, //16Kline[10] 51 52 18,21,19,0, //第1页【11】 53 32,11,0,0, //缺纸【12】 54 55 5,6,33,34, //打印完成【13】 C51 COMPILER V6.23a KEY4X4 05/24/2009 21:40:07 PAGE 2 56 5,6,35,0, //打印中【14】 57 }; 58 59 unsigned int key_time,MS_wait,second_wait=0,MS; 60 61 unsigned char second=0,LCM_LINE_NUM=1,num=0,mode=0,Page_Num=1,A4_16K=8,SPEED=2; 62 63 bit time_flag=0; 64 65 66 67 68 69 void main(void) 70 { 71 1 EA=1; 72 1 ET0=1; 73 1 TMOD=0x01; 74 1 TH0=0XFC; 75 1 TL0=0X18; 76 1 SetOnOff(1); 77 1 SetStartLine(0); 78 1 ClearScreE(0); 79 1 LCM_ALL(); 80 1 TR0=1; 81 1 while(1) 82 1 { 83 2 if(key()!=0xff) 84 2 { 85 3 LCM_ALL(); 86 3 if(mode==20) 87 3 { 88 4 bjdj(); 89 4 } 90 3 } 91 2 } 92 1 } 93 94 void LCM_ALL(void) 95 { 96 1 unsigned char i,j; 97 1 for (j=0;j<4;j++) 98 1 { 99 2 for (i=0;i<4;i++) 100 2 { 101 3 ShowChina(j*2,i*16,LCM_STR[j][i],LCM_STR[j][4]); 102 3 } 103 2 for (;i<8;i++) 104 2 { 105 3 ShowChina(j*2,i*16,0,LCM_STR[j][4]); 106 3 } 107 2 } 108 1 } 109 110 void get_LINE(unsigned char witch_line,unsigned char line_num) 111 { 112 1 unsigned char i; 113 1 for (i=0;i<4;i++) 114 1 { 115 2 LCM_STR[witch_line][i]=LINE_code[line_num][i]; 116 2 } 117 1 } C51 COMPILER V6.23a KEY4X4 05/24/2009 21:40:07 PAGE 3 118 unsigned char key (void) 119 { 120 1 unsigned char temp; 121 1 KEY_IO=0X0F; 122 1 if((KEY_IO&0X0F)!=0X0F) 123 1 { 124 2 if(++key_time==500) 125 2 { 126 3 temp=KEY_IO|0XF0; 127 3 switch(temp) 128 3 { 129 4 case 0xF7: if (LCM_LINE_NUM!=0) 130 4 { 131 5 LCM_STR[num][4]=0; 132 5 if(++num>LCM_LINE_NUM)num=0; 133 5 LCM_STR[num][4]=1; 134 5 } 135 4 return 10; 136 4 case 0xFb: switch (mode) 137 4 { 138 5 case 0: if(num==0)mode=1; 139 5 else mode=20; 140 5 break; 141 5 case 1: switch (num) 142 5 { 143 6 case 0:mode=10; break; 144 6 case 1:mode=11; break; 145 6 case 2:mode=12; break; 146 6 default: break; 147 6 } 148 5 break; 149 5 case 10:if(++Page_Num>9)Page_Num=9;LCM_STR[0][0]=Page_Num+20;return 11; 150 5 default: break; 151 5 } 152 4 num=0; 153 4 Change_LCM_Mode(); 154 4 return 11; 155 4 case 0xFd: if(mode==10) 156 4 { 157 5 if(--Page_Num==0)Page_Num=1; 158 5 LCM_STR[0][0]=Page_Num+20; 159 5 }return 12; 160 4 case 0xFe: switch (mode) 161 4 { 162 5 case 1: 163 5 case 20:mode=0;break; 164 5 case 10:mode=1;break; 165 5 case 11:if(num==0)SPEED=2;else SPEED=1;mode=1;break; 166 5 case 12:if(num==0)A4_16K=8;else A4_16K=6;mode=1;break; 167 5 168 5 default: break; 169 5 } 170 4 num=0; 171 4 Change_LCM_Mode(); 172 4 return 13; 173 4 174 4 default:return 0XFF; 175 4 } 176 3 } 177 2 } 178 1 else 179 1 key_time=0; C51 COMPILER V6.23a KEY4X4 05/24/2009 21:40:07 PAGE 4 180 1 return 0XFF; 181 1 } 182 183 void Change_LCM_Mode(void) 184 { 185 1 char i; 186 1 switch (mode) 187 1 { 188 2 case 0: get_LINE(0,1); 189 2 get_LINE(1,2); 190 2 get_LINE(2,0); 191 2 get_LINE(3,0); 192 2 LCM_LINE_NUM=1; 193 2 break; 194 2 //页数,速度,纸张 195 2 case 1: get_LINE(0,3); 196 2 get_LINE(1,4); 197 2 get_LINE(2,5); 198 2 get_LINE(3,0); 199 2 LCM_LINE_NUM=2; 200 2 break; 201 2 //多少页 202 2 case 10: get_LINE(0,6); 203 2 get_LINE(1,0); 204 2 get_LINE(2,0); 205 2 get_LINE(3,0); 206 2 LCM_LINE_NUM=0; 207 2 break; 208 2 //高低速 209 2 case 11: get_LINE(0,7); 210 2 get_LINE(1,8); 211 2 get_LINE(2,0); 212 2 get_LINE(3,0); 213 2 LCM_LINE_NUM=1; 214 2 break; 215 2 //a4~16k 216 2 case 12: get_LINE(0,9); 217 2 get_LINE(1,10); 218 2 get_LINE(2,0); 219 2 get_LINE(3,0); 220 2 LCM_LINE_NUM=1; 221 2 break; 222 2 //打印 223 2 case 20: get_LINE(0,11); 224 2 if(SPEED==2) get_LINE(1,7); 225 2 else get_LINE(1,8); 226 2 if(A4_16K==8) get_LINE(2,9); 227 2 else get_LINE(2,10); 228 2 get_LINE(3,14); 229 2 LCM_LINE_NUM=0; 230 2 break; 231 2 default: break; 232 2 } 233 1 /******默认选中第一行***********/ 234 1 if(LCM_LINE_NUM!=0) LCM_STR[0][4]=1; 235 1 else LCM_STR[0][4]=0; 236 1 for (i=1;i<4;i++) 237 1 { 238 2 LCM_STR[i][4]=0; 239 2 } 240 1 } 241 C51 COMPILER V6.23a KEY4X4 05/24/2009 21:40:07 PAGE 5 242 void fw(void) 243 { 244 1 unsigned int i,j; 245 1 DIR=1; 246 1 if(RIGHT) 247 1 { 248 2 while(RIGHT) 249 2 { 250 3 ONESTEP; 251 3 BJDJ_DELAY; 252 3 } 253 2 DIR=1; 254 2 for(i=0;i<250;i++) 255 2 { 256 3 ONESTEP; 257 3 BJDJ_DELAY; 258 3 } 259 2 } 260 1 } 261 262 void wait_n_s(unsigned char n)//等待N个1秒 263 { 264 1 MS_wait=0; 265 1 second_wait=0; 266 1 time_flag=1; 267 1 while(second_wait=1000) 331 1 { 332 2 MS=0; 333 2 if(++second>=60) 334 2 second=0; 335 2 str[7]=second%10; 336 2 str[6]=second/10; 337 2 338 2 } 339 1 if(time_flag==1) 340 1 { 341 2 MS_wait++; 342 2 if(MS_wait>=(1000*SPEED)) 343 2 { 344 3 MS_wait=0; 345 3 second_wait++; 346 3 } 347 2 } 348 1 LED8_Display(); 349 1 } 350 351 352 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 1625 ---- CONSTANT SIZE = 2766 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 44 6 IDATA SIZE = ---- ---- BIT SIZE = 1 2 END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)