C51 COMPILER V7.01 SHIFT1602 04/21/2010 11:25:48 PAGE 1 C51 COMPILER V7.01, COMPILATION OF MODULE SHIFT1602 OBJECT MODULE PLACED IN SHIFT1602.OBJ COMPILER INVOKED BY: C:\Keil\C51\Bin\c51.exe SHIFT1602.c DB OE stmt level source 1 #define _SHIFT1602_C_ 2 #include 3 #include 4 #include "shift1602.h" 5 #include "8LED.H" 6 #include "LCD1602.H" 7 void TIME2_ROUTING() interrupt 5 8 { 9 1 //输入程序代码 10 1 TF2=0; 11 1 Led(); 12 1 } 13 14 void INIT_TIME2() 15 { 16 1 RCAP2H=0XF8; 17 1 RCAP2L=0XCC;//2MS 18 1 // ET2=1; 19 1 // TR2=1; 20 1 } 21 22 23 void move() 24 { 25 1 unsigned char i=0,j=3,k; 26 1 27 1 for(k=0;k<30;k++) 28 1 { 29 2 LCD_Write_CMD(LCD_CLEAR_SCREEN); //清屏 30 2 GotoXY(i,0); 31 2 Print("Welcome"); 32 2 GotoXY(j--,1); 33 2 Print("LCD_1602_DEMO"); 34 2 35 2 if(i++>10)i=0; 36 2 if(j>3)j=3; 37 2 38 2 os_wait(K_TMO,33,0); 39 2 } 40 1 } 41 void InitInterrupt() 42 { 43 1 INIT_TIME2(); 44 1 LCD_Initial(); 45 1 GotoXY(0,0); 46 1 Print("Welcome"); 47 1 GotoXY(3,1); 48 1 Print("LCD_1602_DEMO"); 49 1 50 1 os_wait(K_TMO,100,0); 51 1 // move(); 52 1 LCD_Write_CMD(LCD_CLEAR_SCREEN); //清屏 53 1 LCD_SetDisplay(LCD_SHOW|LCD_CURSOR); //开启显示, 无光标 54 1 GotoXY(0,0); 55 1 } C51 COMPILER V7.01 SHIFT1602 04/21/2010 11:25:48 PAGE 2 56 57 58 #define INIT 0 59 #define KEY 1 60 #define KEY2 2 61 #define FLASH 3 62 #define CLOCK 4 63 64 void Init_task()_task_ INIT 65 { 66 1 InitInterrupt(); 67 1 68 1 os_create_task(KEY); 69 1 // os_create_task(FLASH); 70 1 // os_create_task(CLOCK); 71 1 os_delete_task(INIT); 72 1 } 73 unsigned char AC_temp=0; 74 void INPUT(unsigned char ZF) 75 { 76 1 if(AC_temp<31) 77 1 { 78 2 if(AC_temp<16)GotoXY(AC_temp,0); 79 2 else GotoXY(AC_temp-16,1); 80 2 81 2 LCD_Write_Date(ZF); 82 2 AC_temp++; 83 2 } 84 1 } 85 #define KEY_IO P1 86 void Key_Task(void) _task_ KEY 87 { 88 1 unsigned int keytime=0; 89 1 unsigned char temp; 90 1 GotoXY(15,1);LCD_Write_Date(' '); 91 1 if(AC_temp<16)GotoXY(AC_temp,0); 92 1 else GotoXY(AC_temp-16,1); 93 1 while (1) 94 1 { 95 2 KEY_IO=0xf0; 96 2 97 2 if (KEY_IO!=0xf0) 98 2 { 99 3 if (++keytime==2) 100 3 { 101 4 temp=KEY_IO; 102 4 KEY_IO=temp|0x0f; 103 4 switch (KEY_IO) 104 4 { 105 5 case 0X77:INPUT('0'); break; 106 5 case 0X7b:INPUT('1'); break; 107 5 case 0X7d:INPUT('2'); break; 108 5 case 0X7e:INPUT('3'); break; 109 5 110 5 case 0Xb7:INPUT('4'); break; 111 5 case 0Xbb:INPUT('5'); break; 112 5 case 0Xbd:INPUT('6'); break; 113 5 case 0Xbe:INPUT('7'); break; 114 5 115 5 case 0Xd7:INPUT('8'); break; 116 5 case 0Xdb:INPUT('9'); break; 117 5 case 0Xdd:INPUT('a'); break; C51 COMPILER V7.01 SHIFT1602 04/21/2010 11:25:48 PAGE 3 118 5 case 0Xde:INPUT('b'); break; 119 5 120 5 case 0Xe7:INPUT('c'); break; 121 5 case 0Xeb:INPUT('d'); break; 122 5 case 0Xed:INPUT('e'); break; 123 5 case 0Xee:os_create_task(KEY2),os_delete_task(KEY); break; 124 5 default: break; 125 5 } 126 4 } 127 3 } 128 2 else 129 2 keytime=0; 130 2 os_wait(K_TMO,1,0); 131 2 } 132 1 } 133 134 void Key2_Task(void) _task_ KEY2 135 { 136 1 unsigned int keytime=0; 137 1 unsigned char temp; 138 1 GotoXY(15,1);LCD_Write_Date(255); 139 1 if(AC_temp<16)GotoXY(AC_temp,0); 140 1 else GotoXY(AC_temp-16,1); 141 1 while (1) 142 1 { 143 2 KEY_IO=0xf0; 144 2 temp=KEY_IO; 145 2 KEY_IO=temp|0x0f; 146 2 147 2 if(KEY_IO==0XFF)os_create_task(KEY),os_delete_task(KEY2); 148 2 else if (KEY_IO!=0xee) 149 2 { 150 3 if (++keytime==2) 151 3 { 152 4 switch (KEY_IO) 153 4 { 154 5 case 0X66:INPUT('!'); break; 155 5 case 0X6a:INPUT('@'); break; 156 5 case 0X6c:INPUT('#'); break; 157 5 case 0X6e:INPUT('$'); break; 158 5 159 5 case 0Xa6:INPUT('%'); break; 160 5 case 0Xaa:INPUT('^'); break; 161 5 case 0Xac:INPUT('&'); break; 162 5 case 0Xae:INPUT('*'); break; 163 5 164 5 case 0Xc6:INPUT('('); break; 165 5 case 0Xca:INPUT(')'); break; 166 5 case 0Xcc:INPUT('A'); break; 167 5 case 0Xce:INPUT('B'); break; 168 5 169 5 case 0Xe6:INPUT('C'); break; 170 5 case 0Xea:INPUT('D'); break; 171 5 case 0Xec: 172 5 LCD_Write_CMD(LCD_CLEAR_SCREEN); 173 5 GotoXY(0,0); AC_temp=0; 174 5 break; 175 5 default: break; 176 5 } 177 4 } 178 3 } 179 2 else C51 COMPILER V7.01 SHIFT1602 04/21/2010 11:25:48 PAGE 4 180 2 keytime=0; 181 2 os_wait(K_TMO,1,0); 182 2 } 183 1 } 184 185 186 187 188 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 1008 ---- CONSTANT SIZE = 40 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 10 15 IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)