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

📄 ledfution.lst

📁 多字节汉字屏显示控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   LEDFUTION                                                             11/12/2007 21:01:48 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LEDFUTION
OBJECT MODULE PLACED IN E:\XLED\SOURCE\LEDFUTION.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\XLED\SOURCE\LEDFUTION.C DB SB OE

line level    source

   1          #include        "config.h"
   2          extern  data    struct PRINTLED PRINT_INFOR;
   3          extern  set_data_l(uchar xdata *pt, uchar xdata *ptr_d, uchar j);
   4          extern  movedata(uchar xdata *pt, uchar xdata *i, uchar xdata *j);
   5          extern  adddata(uchar xdata *pt, uchar xdata *i, uchar xdata *j);
   6          extern  movedata_l(uchar xdata *pt, uchar xdata *i,uchar lie,uchar hang);
   7          extern  movedata_r(uchar xdata *pt, uchar xdata *i, uchar xdata *j);
   8          
   9          uint    system_run;                                     //系统运行监视
  10          extern  bit             rell_print;             //可以更新显存标记
  11          extern uchar    comtimeout;
  12          
  13          #ifdef  STATIC
                      uchar   xdata static_print[HANGDIP][LIEDIP/8];  //静态应用的
              #endif
  16          /*********************************************************************************************************
             -********************************************
  17          *宏结实,下面是函数开始
  18          **********************************************************************************************************
             -*******************************************/
  19          
  20          
  21          static void changpage(struct windows xdata *pt) //new
  22          {
  23   1              
  24   1                              /*扫描的*/
  25   1                  CS_RAM=0;
  26   1                              if(PRINT_INFOR.SWAP == SWAP_PRINT1)
  27   1                              {
  28   2                      PRINT_INFOR.PRINTBUF2_R1 =(uchar xdata *)&pt->PRINT2_R[0][0];
  29   2                                      #ifndef ALONE
  30   2                                              PRINT_INFOR.PRINTBUF2_R2 =(uchar xdata *)&pt->PRINT2_R[16][0];
  31   2                                      #endif
  32   2                                      while(PRINT_INFOR.CHANG < pt->movsize[pt->plan]) REBOOT;
  33   2                                      while(!rell_print);
  34   2                                      PRINT_INFOR.CHANG = 0;
  35   2                                      PRINT_INFOR.SWAP = SWAP_PRINT2;
  36   2                              }
  37   1                              else
  38   1                              {
  39   2                                      PRINT_INFOR.PRINTBUF1_R1 =(uchar xdata *)&pt->PRINT1_R[0][0];
  40   2                                      #ifndef ALONE
  41   2                                         PRINT_INFOR.PRINTBUF1_R2 =(uchar xdata *)&pt->PRINT1_R[16][0];
  42   2                                      #endif
  43   2                                      while(PRINT_INFOR.CHANG < pt->movsize[pt->plan]) REBOOT;
  44   2                                      while(!rell_print);
  45   2                                      PRINT_INFOR.CHANG = 0;
  46   2                                      PRINT_INFOR.SWAP = SWAP_PRINT1;
  47   2                              } 
  48   1      }
  49          /*********************************************************************************************************
             -********************************************
  50          *LED屏从上到下添加行=逐行显示
  51          **********************************************************************************************************
             -*******************************************/
C51 COMPILER V7.50   LEDFUTION                                                             11/12/2007 21:01:48 PAGE 2   

  52          #ifdef  PRINT_UP_HANG
              void print_up_hang(struct windows xdata *pt) //new
              {
                  uchar xdata  *data ptr_s, *ptr_d;
                      while(1)
                      {
                              if(comtimeout != 0) break;
                              /*数据搬家开始*/
                      CS_RAM=0;
                              if(PRINT_INFOR.SWAP == SWAP_PRINT1)
                              {
                                      ptr_s = &pt->PRINT1_R[0][0];
                                      ptr_d = &pt->PRINT2_R[0][0];
                                      movedata(ptr_s,ptr_d,&pt->PRINT2_R[HANGDIP][0]);        //调用汇编拷贝全屏数据
                              }
                              else
                              {
                                      ptr_s = &pt->PRINT2_R[0][0];
                                      ptr_d = &pt->PRINT1_R[0][0];
                                      movedata(ptr_s,ptr_d,&pt->PRINT1_R[HANGDIP][0]);        //调用汇编拷贝全屏数据
                              }
                              if(PRINT_INFOR.SWAP == SWAP_PRINT1)
                              {
                                      ptr_d = &pt->PRINT2_R[pt->hang][0];
                          }
                              else
                              {
                                      ptr_d = &pt->PRINT1_R[pt->hang][0];
                              }
                              /*数据搬家结束*/
                              ptr_s = &pt->printbuf[pt->plan][pt->hang*(LIEDIP/8)];
                              adddata(ptr_s,ptr_d,ptr_d+LIEDIP/8);
                              //通知打印换页
                              changpage(pt);
              
                              if(++pt->hang == HANGDIP)
                              {
                                PRINT_INFOR.CHANG = 0;
                                while(PRINT_INFOR.CHANG < pt->showtime[pt->plan]);
                                break;
                              }
                      }
              }
              #endif
  96          /*********************************************************************************************************
             -********************************************
  97          *LED屏上移动扫描方式    ok
  98          **********************************************************************************************************
             -*******************************************/
  99          #ifdef  PRINT_UP
 100          void print_up(struct windows xdata *pt) //new
 101          {
 102   1              uchar xdata  *data ptr_s, *ptr_d;
 103   1              while(1)
 104   1              {
 105   2                      if(comtimeout != 0) break;
 106   2                      /*数据搬家开始*/
 107   2              if(PRINT_INFOR.SWAP == SWAP_PRINT1)
 108   2                      {
 109   3                              ptr_s = &pt->PRINT1_R[1][0];
 110   3                              ptr_d = &pt->PRINT2_R[0][0];
 111   3                              movedata(ptr_s,ptr_d,&pt->PRINT2_R[HANGDIP-1][0]);      //调用汇编上移动数据
C51 COMPILER V7.50   LEDFUTION                                                             11/12/2007 21:01:48 PAGE 3   

 112   3                              ptr_d = &pt->PRINT2_R[HANGDIP-1][0];
 113   3                      }
 114   2                      else
 115   2                      {
 116   3                              ptr_s = &pt->PRINT2_R[1][0];
 117   3                              ptr_d = &pt->PRINT1_R[0][0];
 118   3                              movedata(ptr_s,ptr_d,&pt->PRINT1_R[HANGDIP-1][0]);      //调用汇编上移动数据
 119   3                              ptr_d = &pt->PRINT1_R[HANGDIP-1][0];
 120   3                      } 
 121   2      
 122   2                      /*数据搬家结束*/
 123   2                      ptr_s = &pt->printbuf[pt->plan][pt->hang*(LIEDIP/8)];
 124   2              CS_RAM=0;
 125   2                      adddata(ptr_s,ptr_d,ptr_d+LIEDIP/8);
 126   2      
 127   2                      //通知打印换页
 128   2                      changpage(pt);
 129   2      
 130   2                      if(++pt->hang == HANGDIP)
 131   2                      {
 132   3                        PRINT_INFOR.CHANG = 0;
 133   3                        while(PRINT_INFOR.CHANG < pt->showtime[pt->plan]);
 134   3                        break;
 135   3                      }
 136   2              }
 137   1      }
 138          #endif
 139          /*********************************************************************************************************
             -********************************************
 140          *LED屏上移动扫描方式    ok
 141          **********************************************************************************************************
             -*******************************************/
 142          #ifdef  PRINT_DOWN
              void print_down(struct windows xdata *pt) //new
              {
                  uchar xdata  *data ptr_s, *ptr_d;
                      while(1)
                      {
                              if(comtimeout != 0) break;
                              /*数据搬家开始*/
                              if(PRINT_INFOR.SWAP == SWAP_PRINT1)
                              {
                                      ptr_s = &pt->PRINT1_R[0][0];
                                      ptr_d = &pt->PRINT2_R[1][0];
                                      movedata(ptr_s,ptr_d,&pt->PRINT2_R[HANGDIP][0]);        //调用汇编下移动数据
                              }
                              else
                              {
                                      ptr_s = &pt->PRINT2_R[0][0];
                                      ptr_d = &pt->PRINT1_R[1][0];
                                      movedata(ptr_s,ptr_d,&pt->PRINT1_R[HANGDIP][0]);        //调用汇编下移动数据
                              }
                              if(PRINT_INFOR.SWAP == SWAP_PRINT1)
                              {
                                      ptr_d = &pt->PRINT2_R[0][0];
                              }
                              else
                              {
                                      ptr_d = &pt->PRINT1_R[0][0];
                              }
                              /*数据搬家结束*/
                              ptr_s = &pt->printbuf[pt->plan][(HANGDIP-1-pt->hang)*(LIEDIP/8)];
C51 COMPILER V7.50   LEDFUTION                                                             11/12/2007 21:01:48 PAGE 4   

                              adddata(ptr_s,ptr_d,ptr_d+LIEDIP/8);
              
                              //通知打印换页
                              changpage(pt);
              
                              if(++pt->hang == HANGDIP)

⌨️ 快捷键说明

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