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

📄 g19264.lst

📁 这是一个用STC单片机作的,带液晶显示屏的万年历程序,并有串行接收部份,大家一定要珍惜用.
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.02b   G19264                                                               04/19/2008 20:43:15 PAGE 13  

 736   2                        if(keydn==1)WDT_CONTR=WDT;//启动看门狗
 737   2                        b=keybuf;
 738   2                        Delay100ms(3);
 739   2                        col=172,row=2;
 740   2                        Putedot(10);//显示空格
 741   2                        Delay100ms(3);
 742   2                        keydn=0;
 743   2                        }
 744   1              WDT_CONTR=WDT;//启动看门狗
 745   1              ahour3=a*10+b;  
 746   1                        col=172,row=2;
 747   1          Putedot(b);//显示分的低位
 748   1              enterflg=0;
 749   1      
 750   1          a=aminute3/10;b=aminute3%10;
 751   1              keybuf=a;
 752   1          while(enterflg==0)
 753   1                      { 
 754   2                        col=150,row=2;
 755   2                        Putedot(3);//显示年的低位
 756   2      
 757   2                        col=164,row=2;
 758   2                        Putedot(a);//显示年的低位
 759   2                        readkey();
 760   2                        if(keydn==1)WDT_CONTR=WDT;//启动看门狗
 761   2                        a=keybuf;
 762   2                        Delay100ms(3);
 763   2                        col=164,row=2;
 764   2                        Putedot(10);//显示空格
 765   2                        Delay100ms(3);
 766   2                        keydn=0;
 767   2                        }
 768   1              WDT_CONTR=WDT;//启动看门狗
 769   1              enterflg=0;
 770   1                        col=164,row=2;
 771   1          Putedot(a);//显示年的高位
 772   1      
 773   1              keybuf=b;
 774   1          while(enterflg==0)
 775   1                      {                 
 776   2                        col=172,row=2;
 777   2                        Putedot(b);//显示年的低位
 778   2                        readkey();
 779   2                        if(keydn==1)WDT_CONTR=WDT;//启动看门狗
 780   2                        b=keybuf;
 781   2                        Delay100ms(3);
 782   2                        col=172,row=2;
 783   2                        Putedot(10);//显示空格
 784   2                        Delay100ms(3);
 785   2                        keydn=0;
 786   2                        }
 787   1              WDT_CONTR=WDT;//启动看门狗
 788   1              aminute3=a*10+b;  
 789   1                        col=172,row=2;
 790   1          Putedot(b);//显示分的低位
 791   1              enterflg=0;
 792   1      
 793   1              a=ahour4/10;b=ahour4%10;
 794   1              keybuf=a;
 795   1          while(enterflg==0)
 796   1                      { 
 797   2                        col=150,row=2;
C51 COMPILER V7.02b   G19264                                                               04/19/2008 20:43:15 PAGE 14  

 798   2                        Putedot(4);//显示年的低位
 799   2      
 800   2                        col=164,row=2;
 801   2                        Putedot(a);//显示年的低位
 802   2                        readkey();
 803   2                        if(keydn==1)WDT_CONTR=WDT;//启动看门狗
 804   2                        a=keybuf;
 805   2                        Delay100ms(3);
 806   2                        col=164,row=2;
 807   2                        Putedot(10);//显示空格
 808   2                        Delay100ms(3);
 809   2                        keydn=0;
 810   2                        }
 811   1              WDT_CONTR=WDT;//启动看门狗
 812   1              enterflg=0;
 813   1                        col=164,row=2;
 814   1          Putedot(a);//显示年的高位
 815   1      
 816   1              keybuf=b;
 817   1          while(enterflg==0)
 818   1                      {                 
 819   2                        col=172,row=2;
 820   2                        Putedot(b);//显示年的低位
 821   2                        readkey();
 822   2                        if(keydn==1)WDT_CONTR=WDT;//启动看门狗
 823   2                        b=keybuf;
 824   2                        Delay100ms(3);
 825   2                        col=172,row=2;
 826   2                        Putedot(10);//显示空格
 827   2                        Delay100ms(3);
 828   2                        keydn=0;
 829   2                        }
 830   1              WDT_CONTR=WDT;//启动看门狗
 831   1              ahour4=a*10+b;  
 832   1                        col=172,row=2;
 833   1          Putedot(b);//显示分的低位
 834   1              enterflg=0;
 835   1      
 836   1          a=aminute4/10;b=aminute4%10;
 837   1              keybuf=a;
 838   1          while(enterflg==0)
 839   1                      { 
 840   2                        col=150,row=2;
 841   2                        Putedot(4);//显示年的低位
 842   2      
 843   2                        col=164,row=2;
 844   2                        Putedot(a);//显示年的低位
 845   2                        readkey();
 846   2                        if(keydn==1)WDT_CONTR=WDT;//启动看门狗
 847   2                        a=keybuf;
 848   2                        Delay100ms(3);
 849   2                        col=164,row=2;
 850   2                        Putedot(10);//显示空格
 851   2                        Delay100ms(3);
 852   2                        keydn=0;
 853   2                        }
 854   1              WDT_CONTR=WDT;//启动看门狗
 855   1              enterflg=0;
 856   1                        col=164,row=2;
 857   1          Putedot(a);//显示年的高位
 858   1      
 859   1              keybuf=b;
C51 COMPILER V7.02b   G19264                                                               04/19/2008 20:43:15 PAGE 15  

 860   1          while(enterflg==0)
 861   1                      {                 
 862   2                        col=172,row=2;
 863   2                        Putedot(b);//显示年的低位
 864   2                        readkey();
 865   2                        if(keydn==1)WDT_CONTR=WDT;//启动看门狗
 866   2                        b=keybuf;
 867   2                        Delay100ms(3);
 868   2                        col=172,row=2;
 869   2                        Putedot(10);//显示空格
 870   2                        Delay100ms(3);
 871   2                        keydn=0;
 872   2                        }
 873   1              WDT_CONTR=WDT;//启动看门狗
 874   1              aminute4=a*10+b;  
 875   1                        col=172,row=2;
 876   1          Putedot(b);//显示分的低位
 877   1              enterflg=0;
 878   1      
 879   1              wr_time();                      //写时间到8563
 880   1              Lcmcls();
 881   1      
 882   1      }
 883          
 884          void main(void)
 885          {       
 886   1              Delay(30);
 887   1              col=0;  row=0;  Delay(40);              /*延时大约40Ms,等待外设准备好   */
 888   1              Lcminit();                             /*液晶模块初始化,包括全屏幕清屏*/
 889   1              Lcmcls();
 890   1              read_count=0;
 891   1              EA=1;TR1=1;ES=1;
 892   1              init_serial();
 893   1          while(1)
 894   1                      {   
 895   2                          startbell();
 896   2                          readkey();
 897   2                              if((keydn==1)&(keybuf=='*')) adj_time();
 898   2                              rd_time();      //从时间芯片中读时间到second,minute,hour,week等变量中                   
 899   2                              time_to_byt();
 900   2                              dispdata();     /*第一行字符输出our friend over the world.  24字节      */
 901   2                              disptime();
 902   2                              WDT_CONTR=WDT;//启动看门狗
 903   2                              if(read_count==3)
 904   2                                      {   EA=0;TR1=0;ES=0;
 905   3                                          dpcard();//显示卡号
 906   3                                          read_count=0;
 907   3                                              EA=1;TR1=1;ES=1;
 908   3                                      }
 909   2                              if(read_count==3)
 910   2                              {   EA=0;TR1=0;ES=0;
 911   3                                  dpcard();//显示卡号
 912   3                                  read_count=0;
 913   3                                      EA=1;TR1=1;ES=1;
 914   3                              }
 915   2      
 916   2              }
 917   1      
 918   1      
 919   1      }
 920          
 921          
C51 COMPILER V7.02b   G19264                                                               04/19/2008 20:43:15 PAGE 16  

 922          /****************************************/
 923          /*      一个字串的输出                  */
 924          /****************************************/
 925          void Putstr(Uchar *puts,Uchar i)
 926                  {
 927   1                      Uchar j,X;
 928   1                      for (j=0;j<i;j++)
 929   1                      {
 930   2                      X = puts[j];                     //X=0X80 OR 0X20
 931   2                              if (X&0x80)
 932   2                                      {
 933   3                                              Putcdot(X&0x7f);        /*只保留低7位.全角字符输出*/
 934   3                                      }
 935   2                              else Putedot(X-0x30);           /*ascii码表从0x20开始,半角字符输出*/
 936   2                      }
 937   1              }
 938          
 939          /****************************************/
 940          /*   半角字符点阵码数据输出             */
 941          /****************************************/
 942          void Putedot(Uchar Order)
 943                  {
 944   1              Uchar i,bakerx,bakery;  /*共定义4个局部变量                     */
 945   1              int x;                                  /*偏移量,字符量少的可以定义为UCHAR     */
 946   1              bakerx = col;                   /*暂存x,y坐标,已备下半个字符使用       */
 947   1              bakery = row;
 948   1              x=Order * 0x10;                 /*半角字符,每个字符16字节      */
 949   1      /*上半个字符输出,8列   */
 950   1              for(i=0;i<8;i++)
 951   1                      {
 952   2                      cbyte = Ezk[x];                         /*取点阵码,rom数组     */
 953   2                      Wrdata(cbyte);                          /*写输出一字节          */
 954   2                      x++;
 955   2                      col++;
 956   2                      if (col==LCMLIMIT){col=0;row=row+2;};   /*下一列,如果列越界换行*/
 957   2                              if (row>7) row=0;               /*如果行越界,返回首行  */
 958   2                      }                                                       /*上半个字符输出结束    */
 959   1      
 960   1              col = bakerx;                                   /*列对齐                */
 961   1              row = bakery+1;                                 /*指向下半个字符行      */
 962   1      /*下半个字符输出,8列   */
 963   1              for(i=0;i<8;i++)
 964   1                      {
 965   2                      cbyte = Ezk[x];                         /*取点阵码              */
 966   2                      Wrdata(cbyte);                          /*写输出一字节          */
 967   2                      x++;
 968   2                      col++;
 969   2                      if (col==LCMLIMIT){col=0;row=row+2;};   /*下一列,如果列越界换行*/
 970   2                              if (row>7) row=1;               /*如果行越界,返回首行  */
 971   2                      }                                       /*下半个字符输出结束    */
 972   1              row=bakery;
 973   1              }                                               /*整个字符输出结束      */
 974          
 975          void Putedotbig(Uchar Order)
 976                  {
 977   1              Uchar i,bakerx,bakery;  /*共定义4个局部变量                     */
 978   1              int x;                                  /*偏移量,字符量少的可以定义为UCHAR     */
 979   1              bakerx = col;                   /*暂存x,y坐标,已备下半个字符使用       */
 980   1              bakery = row;
 981   1              x=Order * 144;                  /*半角字符,每个字符16字节      */
 982   1      /*上半个字符输出,8列   */
 983   1              for(i=0;i<24;i++)

⌨️ 快捷键说明

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