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

📄 menu.lst

📁 这是一个对OSD芯片upd6464A操作的接口测试程序,使用KC51编译
💻 LST
字号:
C51 COMPILER V8.01   MENU                                                                  06/12/2006 14:46:40 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE MENU
OBJECT MODULE PLACED IN .\output\menu.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\menu.c ROM(COMPACT) BROWSE ORDER INCDIR(.\Head) DEBUG OBJECTEXTEND PRIN
                    -T(.\output\menu.lst) TABS(8) OBJECT(.\output\menu.obj)

line level    source

   1          //--------------------------------------
   2          //
   3          //FileName= menu.c
   4          //
   5          //--------------------------------------
   6          #include<string.h>
   7          #include"menu.h"
   8          #include"upd6464a.h"
   9          
  10          extern uchar doom_id;
  11          extern uchar protocol;
  12          extern uchar baud;
  13          extern uint  s_id;
  14          
  15          uchar code *PROTOCOL_TAB[]={
  16                  "B01",
  17                  "PELCO_D",
  18                  "PELCO_P",
  19                  "FOCURM"
  20          };
  21          
  22          uint code BAUDRATE_TAB[]={19200, 9600, 4800, 2400};
  23          
  24          uchar   disp_line_buff[25];
  25          
  26          //--------------------------------------
  27          //      菜单测试函数
  28          //--------------------------------------
  29          //显示自检菜单
  30          void    disp_init_menu(void)
  31          {
  32   1      uchar buf[25];
  33   1      uchar i;
  34   1              memset(buf, ' ', sizeof(buf)-1);
  35   1              buf[sizeof(buf)-1] =0;
  36   1              i =strlen(STR_0_0_0_DOOM_ID);
  37   1              memcpy(buf, STR_0_0_0_DOOM_ID, i);
  38   1              get_num(3,&buf[i],doom_id);
  39   1              disp_one_line(buf,0,0);
  40   1      
  41   1              memset(buf, ' ', sizeof(buf)-1);
  42   1              buf[sizeof(buf)-1] =0;
  43   1              i =strlen(STR_0_0_0_PROTOCOL);
  44   1              memcpy(buf, STR_0_0_0_PROTOCOL, i);
  45   1              memcpy(buf+i,PROTOCOL_TAB[protocol],strlen(PROTOCOL_TAB[protocol]));
  46   1              disp_one_line(buf,1,0);
  47   1      
  48   1              memset(buf, ' ', sizeof(buf)-1);
  49   1              buf[sizeof(buf)-1] =0;
  50   1              i =strlen(STR_0_0_0_BAUDRATE);
  51   1              memcpy(buf, STR_0_0_0_BAUDRATE, i);
  52   1              get_num(4,&buf[i],BAUDRATE_TAB[baud]);
  53   1              disp_one_line(buf,2,0);
  54   1      
C51 COMPILER V8.01   MENU                                                                  06/12/2006 14:46:40 PAGE 2   

  55   1              memset(buf, ' ', sizeof(buf)-1);
  56   1              buf[sizeof(buf)-1] =0;
  57   1              i =strlen(STR_0_0_0_SERIAL);
  58   1              memcpy(buf, STR_0_0_0_SERIAL, i);
  59   1              get_num(6,&buf[i],s_id);
  60   1              disp_one_line(buf,3,0);
  61   1      
  62   1              memset(buf, ' ', sizeof(buf)-1);
  63   1              buf[sizeof(buf)-1] =0;
  64   1              i =strlen(STR_0_0_0_NUMBER);
  65   1              memcpy(buf+(CONST_COLUMN_NUMBER_MAX-i)/2, STR_0_0_0_NUMBER, i);
  66   1              disp_one_line(buf,4,0);
  67   1      }
  68          
  69          //--------------------------------------
  70          //      菜单显示函数
  71          //--------------------------------------
  72          //显示一行字符串
  73          //输入:
  74          //      str     字符串数组
  75          //使用全局变量   disp_line_buff[]
  76          void    disp_one_line(uchar *str, uchar line, uchar column)
  77          {
  78   1              if(str ==NULL) return;
  79   1              memset(disp_line_buff,0,sizeof(disp_line_buff));
  80   1              memcpy(disp_line_buff, str, strlen(str));
  81   1              change_str_to_disp_code(disp_line_buff,CONST_COLUMN_NUMBER_MAX);
  82   1              upd6464A_write_addr_control(line,column);
  83   1              upd6464A_character_display_control(UPD6464A_CMD_BLINK_OFF, disp_line_buff,CONST_COLUMN_NUMBER_MAX);
  84   1      }
  85          
  86          
  87          //将一行字符转换为显示码
  88          void    change_str_to_disp_code(uchar *str, uchar len)
  89          {
  90   1              uchar i;
  91   1              for(i=0; i<len; i++)
  92   1                      str[i] =upd6464a_get_disp_code(str[i]);
  93   1      }
  94          
  95          //将num按照ASCII数字格式长度n填充到p中
  96          void    get_num(uchar n, uchar *p, uint num)
  97          {
  98   1              for(; n>0; n--)
  99   1              {
 100   2                      *(p+n-1) =(num%10)+'0';
 101   2                      num /=10;
 102   2              }
 103   1      }
 104          
 105          //End Of File


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    643    ----
   CONSTANT SIZE    =     97    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33      42
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.

C51 COMPILER V8.01   MENU                                                                  06/12/2006 14:46:40 PAGE 3   


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

⌨️ 快捷键说明

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