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

📄 main.lst

📁 信号发生器界面菜单程序,有串和并口两种源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 223   1      }
 224          /********************************以下为键盘子程序*******************************************/
 225               void key_delay(void)                        //按键延时25Ms
 226               {
 227   1            uchar i; uint j;
 228   1                for(i=0;i<50;i++)
 229   1                {
 230   2                 for(j=0;j<2000;j++)
 231   2                 {
 232   3                  _nop_();
 233   3                 }
 234   2                }
 235   1           }
 236          //-----------------------------------------按键功能;
 237               void key_1(void){line[p++]='1';lcd_write_da('1');have_data=1;}
 238                   void key_2(void){line[p++]='2';lcd_write_da('2');have_data=1;}
 239                   void key_3(void){line[p++]='3';lcd_write_da('3');have_data=1;}
 240                   void key_4(void){line[p++]='4';lcd_write_da('4');have_data=1;}
 241                   void key_5(void){line[p++]='5';lcd_write_da('5');have_data=1;}
C51 COMPILER V8.01   MAIN                                                                  12/07/2007 20:43:05 PAGE 5   

 242                   void key_6(void){line[p++]='6';lcd_write_da('6');have_data=1;}
 243                   void key_7(void){line[p++]='7';lcd_write_da('7');have_data=1;}
 244                   void key_8(void){line[p++]='8';lcd_write_da('8');have_data=1;}
 245                   void key_9(void){line[p++]='9';lcd_write_da('9');have_data=1;}
 246                   void key_0(void){line[p++]='0';lcd_write_da('0');have_data=1;}
 247                   void key_up(void)
 248                   {
 249   1            lcd_write_ins(0x0c);
 250   1                up_down=up_down-1;
 251   1                if(up_down==0){up_down=4;}
 252   1                switch(up_down)
 253   1                {
 254   2                 case 1:{fan(1,1,16);}break;
 255   2                 case 2:{fan(1,2,16);}break;
 256   2                 case 3:{fan(1,3,16);}break;
 257   2                 case 4:{fan(1,4,16);}break;
 258   2             default:{}
 259   2                }
 260   1               }
 261          
 262                   void key_point(void){line[p++]='.';lcd_write_da('.');have_data=1;}
 263                   void key_13(void){}
 264                   void key_right(void){}
 265                   void key_enter(void)
 266                   {
 267   1                 if(up_down==1)
 268   1                 {
 269   2                          if(have_data==0)
 270   2                              {
 271   3                   lcd_write_ins(0x01);
 272   3                   lcd_show(1,1,fre_mode_tab1);
 273   3                   lcd_show(1,2,fre_mode_tab2);
 274   3                   lcd_show(1,3,fre_mode_tab3);
 275   3                   lcd_show(1,4,fre_mode_tab4);
 276   3                   lcd_write_ins(0x98);
 277   3                              }
 278   2                               else
 279   2                               {
 280   3                                send_dds_data();
 281   3                               }
 282   2                 }
 283   1                 else if(up_down==2)
 284   1                 {
 285   2                  lcd_write_ins(0x01);
 286   2                  lcd_show(1,1,am_mode_tab1);
 287   2                  lcd_write_ins(0x88);
 288   2                 }
 289   1                 else if(up_down==3)
 290   1                 {
 291   2                 lcd_write_ins(0x01);
 292   2                 lcd_show(1,1,pa_sk_mode_tab1);
 293   2                 lcd_show(1,2,pa_sk_mode_tab2);
 294   2                 lcd_write_ins(0x90);
 295   2                 }
 296   1                 else if(up_down==4)
 297   1                 {
 298   2                 lcd_write_ins(0x01);
 299   2                 lcd_show(1,1,fm_mode_tab1);
 300   2                 lcd_write_ins(0x88);
 301   2                 }
 302   1               }
 303                   void key_left(void){}
C51 COMPILER V8.01   MAIN                                                                  12/07/2007 20:43:05 PAGE 6   

 304                   void key_17(void){}
 305                   void key_18(void){}
 306                   void key_down(void)
 307                   {
 308   1            lcd_write_ins(0x0c);
 309   1                up_down=up_down+1;
 310   1                if(up_down==5){up_down=1;}
 311   1                switch(up_down)
 312   1                {
 313   2                 case 1:{fan(1,1,16);}break;
 314   2                 case 2:{fan(1,2,16);}break;
 315   2                 case 3:{fan(1,3,16);}break;
 316   2                 case 4:{fan(1,4,16);}break;
 317   2             default:{}
 318   2                }
 319   1               }
 320                   void key_return(void)
 321                   {
 322   1                lcd_write_ins(0x01);
 323   1                lcd_show(1,1,fre);
 324   1                lcd_show(1,2,am);
 325   1                lcd_show(1,3,pa_sk);
 326   1                lcd_show(1,4,fm);
 327   1                fan(1,up_down,16);
 328   1               }
 329          //-------------------------------------------按键辩别;
 330               void argue(uchar num)
 331                   {
 332   1                 if(num!=0xff)
 333   1                 {
 334   2                   switch(num)
 335   2                       {
 336   3                         case 1:{key_1();}break;
 337   3                         case 2:{key_2();}break;
 338   3                         case 3:{key_3();}break;
 339   3                         case 4:{key_4();}break;
 340   3                         case 5:{key_5();}break;
 341   3                         case 6:{key_6();}break;
 342   3                         case 7:{key_7();}break;
 343   3                         case 8:{key_8();}break;
 344   3                         case 9:{key_9();}break;
 345   3                         case 10:{key_0();}break;
 346   3                         case 11:{key_up();}break;
 347   3                         case 12:{key_point();}break;
 348   3                         case 13:{key_13();}break;
 349   3                         case 14:{key_right();}break;
 350   3                         case 15:{key_enter();}break;
 351   3                         case 16:{key_left();}break;
 352   3                         case 17:{key_17();}break;
 353   3                         case 18:{key_18();}break;
 354   3                         case 19:{key_down();}break;
 355   3                         case 20:{key_return();}break;
 356   3                         default:{}
 357   3                       }
 358   2                 }
 359   1               }
 360          //-------------------------------------------------按键扫描;
 361               uchar first_line(void)              //扫描第一行;
 362                   {
 363   1                 if(key_port0|key_port1==0)        {key_delay();return(1);}
 364   1                   else if(key_port0|key_port2==0) {key_delay();return(2);}
 365   1                   else if(key_port0|key_port3==0) {key_delay();return(3);}
C51 COMPILER V8.01   MAIN                                                                  12/07/2007 20:43:05 PAGE 7   

 366   1                   else if(key_port0|key_port4==0) {key_delay();return(4);}
 367   1                   else return(0xff);
 368   1           }
 369                   uchar second_line(void)             //扫描第二行;
 370                   {
 371   1             if(key_port1|key_port0==0)        {key_delay();return(5);}
 372   1                   else if(key_port1|key_port2==0) {key_delay();return(6);}
 373   1                   else if(key_port1|key_port3==0) {key_delay();return(7);}
 374   1                   else if(key_port1|key_port4==0) {key_delay();return(8);}
 375   1                   else return(0xff);
 376   1               }
 377                   uchar third_line(void)              //扫描第三行;
 378                   {
 379   1                 if(key_port2| key_port0==0)       {key_delay();return(9);}
 380   1                   else if(key_port2|key_port1==0) {key_delay();return(10);}
 381   1                   else if(key_port2|key_port3==0) {key_delay();return(11);}
 382   1                   else if(key_port2|key_port4==0) {key_delay();return(12);}
 383   1                   else return(0xff);
 384   1               }
 385                   uchar four_line(void)               //扫描第四行;
 386                   {
 387   1                 if(key_port3|key_port0==0)        {key_delay();return(13);}
 388   1                   else if(key_port3|key_port1==0) {key_delay();return(14);}
 389   1                   else if(key_port3|key_port2==0) {key_delay();return(15);}
 390   1                   else if(key_port3|key_port4==0) {key_delay();return(16);}
 391   1                   else return(0xff);
 392   1               }
 393                   uchar five_line(void)               //扫描第五行;
 394                   {
 395   1                 if(key_port4|key_port0==0)        {key_delay();return(17);}
 396   1                   else if(key_port4|key_port1==0) {key_delay();return(18);}
 397   1                   else if(key_port4|key_port2==0) {key_delay();return(19);}
 398   1                   else if(key_port4|key_port3==0) {key_delay();return(20);}
 399   1                   else return(0xff);
 400   1               }
 401          //-------------------------------------------键盘入口;
 402               void key_board(void)
 403               {
 404   1                 uchar num;
 405   1                 while(1)
 406   1                 {
 407   2             key_port0=0;
 408   2                 num=first_line();
 409   2                 argue(num);
 410   2                 key_port0=1;key_port1=0;
 411   2                 num=second_line();
 412   2                 argue(num);
 413   2                 key_port1=1;key_port2=0;
 414   2                 num=third_line();
 415   2                 argue(num);
 416   2                 key_port2=1;key_port3=0;
 417   2                 num=four_line();
 418   2                 argue(num);
 419   2                 key_port3=1;key_port4=0;
 420   2                 num=five_line();
 421   2                 argue(num);
 422   2                 key_port4=1;
 423   2                 }
 424   1               }
 425          //-------------------------------------
 426          main()
 427          {
C51 COMPILER V8.01   MAIN                                                                  12/07/2007 20:43:05 PAGE 8   

 428   1       lcd_begin();
 429   1       lcd_show(1,1,fre);
 430   1       lcd_show(1,2,am);
 431   1       lcd_show(1,3,pa_sk);
 432   1       lcd_show(1,4,fm);
 433   1       fan(1,1,16);
 434   1       key_board();
 435   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1858    ----
   CONSTANT SIZE    =    213    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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