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

📄 kszong.lst

📁 c8051最小系统板的个部分调试
💻 LST
字号:
C51 COMPILER V7.50   KSZONG                                                                08/29/2007 08:56:28 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE KSZONG
OBJECT MODULE PLACED IN KSzong.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE KSzong.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**函数名称有修改**/
   2          
   3          #include<stdio.h>
   4          
   5          #include"KSzong.h"
   6          #include"absacc.h"
   7          
   8          #define RSL   XBYTE[0XF6FF]
   9          #define RSR   XBYTE[0XFaFF]
  10          
  11          #define WI1  XBYTE[0XF4FF]
  12          #define WD1  XBYTE[0XF5FF] 
  13          #define RW1  XBYTE[0XF7FF] 
  14          
  15          #define WI2  XBYTE[0XF8FF] 
  16          #define WD2  XBYTE[0XF9FF]
  17          #define RW2  XBYTE[0XFBFF]
  18          
  19          void Delay_us(unsigned int DelayTime)
  20           {
  21   1         while(DelayTime) DelayTime--;
  22   1        }
  23          
  24            //***************10ms延时**********//
  25            /*
  26          void Delay_x10ms(unsigned char DelayTime)   
  27             {
  28                 unsigned char i,j,k;
  29                 for(i=0;i<DelayTime;i++)
  30                    for(j=0;j<10;j++)
  31                       for(k=0;k<120;k++) {;}
  32              }            
  33          
  34                                  */
  35          
  36          /*---------------------------------------------------------------------------- 
  37          下面这个函数用于向液晶模块写入控制指令代码。 
  38          函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。 
  39                        CS_Num  ------ 左右半屏的选数值 
  40          ----------------------------------------------------------------------------*/ 
  41          void LCD_WriteCommand(uchar Command, uchar CS_Num) 
  42          { 
  43   1        if(CS_Num==1)                 /*选择左半屏*/
  44   1         { while(0x80&RSL);WI1=Command;
  45   2              }
  46   1        else if(CS_Num==2)    /*选择右半屏*/
  47   1         { while(0x80&RSR);WI2=Command;
  48   2              }
  49   1      } 
  50          
  51          
  52          /*---------------------------------------------------------------------------- 
  53          下面这个函数用于向液晶模块写入显示数据。 
  54          函数入口参数:Data------ 向液晶模块写入的显示数据 。 
  55                      CS_Num-------左右半屏的选数值 
C51 COMPILER V7.50   KSZONG                                                                08/29/2007 08:56:28 PAGE 2   

  56          ----------------------------------------------------------------------------*/ 
  57          void LCD_WriteData(uchar Data,uchar CS_Num) 
  58          {  
  59   1       // LCD_Check_Busy();
  60   1       
  61   1        if(CS_Num==1)          /*选择左半屏*/
  62   1         {while(0x80&RSL);WD1=Data;
  63   2              }
  64   1        else if(CS_Num==2)  /*选择右半屏*/
  65   1         { while(0x80&RSR);WD2=Data;
  66   2              }
  67   1      }
  68          
  69          
  70          /*---------------------------------------------------------------------------
  71          下面这个函数用于向液晶模块初始化。
  72          如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
  73          ---------------------------------------------------------------------------*/
  74          void LCD_Initial(void) 
  75          {   
  76   1        //LCD_RST = 0;    /* 置复位信号为低电平 */ 
  77   1        //Delay_us(2);  
  78   1        //LCD_RST = 1;    /* 置复位信号为高电平 */  
  79   1        LCD_WriteCommand(0x3F,Left);    /*显示开*/
  80   1        LCD_WriteCommand(0x3F,Right);
  81   1        LCD_WriteCommand(0xC0,Left);    /*起始行*/
  82   1        LCD_WriteCommand(0xC0,Right);                     
  83   1        LCD_WriteCommand(0xB8,Left);    /*起始页*/
  84   1        LCD_WriteCommand(0xB8,Right);  
  85   1        LCD_WriteCommand(0x40,Left);    /*起始列*/
  86   1        LCD_WriteCommand(0x40,Right); 
  87   1      } 
  88          
  89          /*---------------------------------------------------------------------------
  90          *下面这个函数用于向液晶模块左右半屏写入图象显示数据。
  91          *函数入口参数:DisBuf-----向液晶模块写入的图象显示数据
  92                          Side_Num-----液晶模块左右半屏的选择
  93          ---------------------------------------------------------------------------*/  /*
  94          void LCD_Graph_Play(uchar *DisBuf,uchar Side_Num)
  95           {
  96             uchar i,k,COM;
  97             
  98             for(i=0;i<8;i++)                               
  99             {
 100                   COM=0xB8+i;
 101               LCD_WriteCommand(COM,Side_Num);    
 102                   COM=0x40;
 103                   LCD_WriteCommand(COM,Side_Num);  
 104                           
 105               for(k=0;k<64;k++)
 106                {
 107                      LCD_WriteData(DisBuf[i*64+k],Side_Num);
 108                     }
 109                  }
 110                   Delay_us(2);
 111            }                                                                */
 112          
 113          /*---------------------------------------------------------------------------
 114          *下面这个函数用于向液晶模块左右半屏写入汉字显示数据。
 115          *函数入口参数:DisBuf-----向液晶模块写入的汉字显示数据
 116                          Side_Num------液晶模块左右半屏的选择数
 117                                  Page_Num------开始显示页数(0----7),共八页
C51 COMPILER V7.50   KSZONG                                                                08/29/2007 08:56:28 PAGE 3   

 118                               Clm_Num------开始显示列数 (16的倍数),共64列
 119                                  Word_Num------每页显示的汉字个数(最多为4个)
 120          注意:输入字应该是16*16
 121          ---------------------------------------------------------------------------*/
 122          void LCD_Play(uchar Page_Num,uchar Clm_Num,uchar Word_Num,uchar *DisBuf,uchar Side_Num)
 123           {
 124   1        uchar idata i,k,COM;
 125   1                                
 126   1        COM=0xB8+Page_Num;
 127   1        LCD_WriteCommand(COM,Side_Num);    
 128   1        COM=0x40+Clm_Num;
 129   1        LCD_WriteCommand(COM,Side_Num);
 130   1        for(i=0;i<Word_Num;i++)
 131   1         {             
 132   2          for(k=0;k<16;k++)
 133   2           {
 134   3                LCD_WriteData(DisBuf[k+32*i],Side_Num);                /*显示一个汉字需要16*16bit,
 135   3                                                                  一个汉字上/下半部各占一页
 136   3                                                                 32个字节的数据*/
 137   3                }
 138   2              }
 139   1      
 140   1        Page_Num++;
 141   1        COM=0xB8+Page_Num;
 142   1        LCD_WriteCommand(COM,Side_Num);    
 143   1        COM=0x40+Clm_Num;
 144   1        LCD_WriteCommand(COM,Side_Num);
 145   1        for(i=0;i<Word_Num;i++)
 146   1         {
 147   2          for(k=16;k<32;k++)
 148   2           {
 149   3                LCD_WriteData(DisBuf[k+32*i],Side_Num);
 150   3                }
 151   2              }
 152   1        Delay_us(2);
 153   1       }
 154          
 155          
 156          /**************************输出宋体的数字8*16***********************/
 157          
 158          
 159          void LCD_Num(uchar Page_Num,uchar Clm_Num,uchar count,uchar *DisBuf,uchar Side_Num)
 160           {
 161   1        uchar idata k,COM;
 162   1                                
 163   1        COM=0xB8+Page_Num;
 164   1        LCD_WriteCommand(COM,Side_Num);    
 165   1        COM=0x40+Clm_Num;
 166   1        LCD_WriteCommand(COM,Side_Num);                
 167   1        for(k=0;k<8;k++)
 168   1       {
 169   2                LCD_WriteData(DisBuf[k+16*count],Side_Num);
 170   2        }
 171   1      
 172   1      
 173   1        Page_Num++;
 174   1        COM=0xB8+Page_Num;
 175   1        LCD_WriteCommand(COM,Side_Num);    
 176   1        COM=0x40+Clm_Num;
 177   1        LCD_WriteCommand(COM,Side_Num);
 178   1        for(k=8;k<16;k++)
 179   1       {
C51 COMPILER V7.50   KSZONG                                                                08/29/2007 08:56:28 PAGE 4   

 180   2                LCD_WriteData(DisBuf[k+16*count],Side_Num);
 181   2        }
 182   1              
 183   1        Delay_us(2);
 184   1       }
 185          
 186          
 187          /**************************输出英文字母8*8**************************
 188                      
 189                          功能:下面这个函数用于向液晶模块左右半屏写入~~一个字母~~的显示数据。
 190          
 191                          备注:@@@@@~~~~~~There is a super secret in 'Table13[]'~~~~~~@@@@@;
 192                                一个字母,数字,标点都可以由八个字节的数据确定;
 193          
 194          *函数入口参数:DisBuf-----向液晶模块写入英文字母的显示数据
 195                          Side_Num------液晶模块左右半屏的选择数
 196                                  Page_Num------开始显示页数(0----7),共八页
 197                               Clm_Num------开始显示列数 (8的倍数),共64列
 198                                  Count-----@@@@@~~~~~Table13[]里面的行号~~~~~@@@@@
 199          
 200          ****************************************************************/       /*
 201          void LCD_English(uchar Page_Num,uchar Clm_Num,uchar Count,uchar *DisBuf,uchar Side_Num)
 202           {
 203              uchar k,COM;                          
 204              COM=0xB8+Page_Num;
 205              LCD_WriteCommand(COM,Side_Num);    
 206              COM=0x40+Clm_Num;
 207              LCD_WriteCommand(COM,Side_Num); 
 208                  for(k=0;k<8;k++)
 209              {
 210                    LCD_WriteData(DisBuf[k+8*Count],Side_Num);
 211                    }
 212           
 213            }                                                                                     */
 214          
 215          
 216          /******************************输出单个点******************************
 217          功能:在第Page_Num页第Clm_Num列显示数组DisBuf第boxing+1个数即DisBuf[boxing];
 218                
 219                    “设置了页地址和列地址就唯一确定了显示RAM中的一个单元这样MPU 就可以
 220                 用读写指令读出该单元中的内容或向该单元写进一个字节数据”
 221          
 222          入口参数:Page_Num
 223                             Clm_Num
 224                             *DisBuf:
 225                             boxing
 226                             Side_Num             ;
 227          *************************************************************************/       /*
 228          
 229          void lcds(uchar Page_Num,uchar Clm_Num,uchar *DisBuf,uchar boxing,uchar Side_Num)
 230          {
 231              uchar COM;                            
 232              COM=0xB8+Page_Num;
 233              LCD_WriteCommand(COM,Side_Num);    
 234              COM=0x40+Clm_Num;
 235              LCD_WriteCommand(COM,Side_Num);  
 236                  LCD_WriteData(DisBuf[boxing],Side_Num); 
 237          }                                                                                                                                        */
 238          
 239          /*---------------------------------------------------------------------------
 240          下面这个函数用于液晶模块的清屏。
 241          ---------------------------------------------------------------------------*/
C51 COMPILER V7.50   KSZONG                                                                08/29/2007 08:56:28 PAGE 5   

 242          void LCD_CLR(uchar Side_Num)
 243           {
 244   1         uchar idata  i,k,COM;
 245   1         
 246   1         for(i=0;i<8;i++)                               
 247   1         {
 248   2               COM=0xB8+i;
 249   2           LCD_WriteCommand(COM,Side_Num);    
 250   2               COM=0x40;
 251   2               LCD_WriteCommand(COM,Side_Num);  
 252   2                       
 253   2           for(k=0;k<64;k++)
 254   2            {
 255   3                  LCD_WriteData(0x00,Side_Num);
 256   3                 }
 257   2              }
 258   1               Delay_us(2);
 259   1        }
 260          
 261          
 262          /*---------------------------------------------------------------------------
 263          下面这个函数为主函数,根据程序要实现的功能写相应的应用程序
 264          ---------------------------------------------------------------------------*/
 265          
 266          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    472    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      14
   IDATA SIZE       =   ----       8
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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