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

📄 nand.lst

📁 hx8347 初始化,刷屏,图片显示
💻 LST
字号:
C51 COMPILER V7.10   NAND                                                                  04/14/2009 23:28:42 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE NAND
OBJECT MODULE PLACED IN .\nand.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\SourceFile\nand.c BROWSE DEBUG OBJECTEXTEND PRINT(.\nand.lst) OBJECT(.\n
                    -and.obj)

line level    source

   1          #include "common.h"
   2          
   3          
   4          static U8 idata nf_state = 0;
   5          static U16 idata nf_block = 0;  
   6          static U8 idata nf_page = 0;
   7          U16 idata nf_blockpage = 0;
   8          static idata U32 nf_Counter = 0;
   9          
  10          
  11          
  12          static void NandWaitBusy(void)
  13          {
  14   1              while(!RNB);
  15   1      }
  16          
  17          
  18          void nand_save_bitmap_init(void)
  19          {
  20   1              nf_state = 0;
  21   1              nf_block = 0;   
  22   1              nf_page = 0;
  23   1              nf_blockpage = 0;
  24   1              nf_Counter = 0;
  25   1      
  26   1              return;
  27   1      }
  28          
  29          
  30          U16 nand_read_id(void)
  31          {
  32   1              U8 makercode;
  33   1              U8 devicecode;
  34   1      
  35   1              NAND_CMD(0x90);
  36   1              NAND_ADDR(0x00);
  37   1      
  38   1              makercode = NAND_DATA_READ();
  39   1              devicecode = NAND_DATA_READ();
  40   1      
  41   1              return (((U16)makercode) << 8) | devicecode;    
  42   1      }
  43          
  44          U8 nand_read_state(void)
  45          {
  46   1              return NAND_CMD(0x70), NAND_DATA_READ() & 0x01;
  47   1      }
  48          
  49          bool nand_erase_block(U16 block)
  50          {
  51   1              block = block << 6;
  52   1      
  53   1              NAND_CMD(0x60); 
  54   1              //NAND_ADDR(0);                     
C51 COMPILER V7.10   NAND                                                                  04/14/2009 23:28:42 PAGE 2   

  55   1              //NAND_ADDR(0); 
  56   1              NAND_ADDR(block & 0xff);            
  57   1              NAND_ADDR((block >> 8) & 0xff);  
  58   1      
  59   1              NAND_CMD(0xD0);
  60   1              //while(1);
  61   1              NandWaitBusy();
  62   1              if (nand_read_state() == 0) 
  63   1              {
  64   2                      return 1;
  65   2              }
  66   1              else
  67   1              {
  68   2                      return 0;
  69   2              }
  70   1      }
  71          
  72          //**************************************************
  73          //一张图片为77440B,用38页空间来存储,0~36页写满,第37页只用前1664字节
  74          //一个Block有64页,只用前38页,后26页空白,可存1024张图片
  75          //**************************************************
  76          void nand_save_bitmap(U8 rdat)
  77          {
  78   1              //U8 x,y;
  79   1      
  80   1              
  81   1              switch(nf_state)
  82   1              {
  83   2                      case 0://存储page的第一个数据
  84   2                              nf_blockpage = (nf_block << 6)  +  nf_page;
  85   2                      
  86   2                              NAND_CMD(0x80); 
  87   2                      
  88   2                              NAND_ADDR(0);                       
  89   2                              NAND_ADDR(0);   
  90   2                              NAND_ADDR(nf_blockpage & 0xff);    
  91   2                              NAND_ADDR((nf_blockpage >> 8) & 0xff);
  92   2                              
  93   2                              NAND_DATA_WRITE(rdat);                                  
  94   2                              nf_Counter++;                   
  95   2                              nf_state=1;
  96   2                              break; 
  97   2       
  98   2                      case 1://存储数据到page
  99   2                              NAND_DATA_WRITE(rdat);                                  
 100   2                              nf_Counter++;
 101   2                              if(nf_Counter == 2048)
 102   2                              {
 103   3                                      nf_Counter = 0;
 104   3                                      nf_page++;
 105   3                                      nf_state = 0;
 106   3                                              
 107   3                                      NAND_CMD(0x10); 
 108   3                                      NandWaitBusy(); 
 109   3      
 110   3                              }
 111   2      
 112   2                              break;
 113   2      
 114   2                      default:
 115   2                              break;
 116   2              
C51 COMPILER V7.10   NAND                                                                  04/14/2009 23:28:42 PAGE 3   

 117   2              }
 118   1      }       
 119          
 120          void nand_disp_bitmap(U16 block)
 121          {       
 122   1              U16 blockpage = 0;
 123   1              U8 page = 0;
 124   1              U8 i = 0;       
 125   1              U8 HData, LData;
 126   1      
 127   1              lcd_set_write_area(0, 0, 239, 319);     
 128   1      
 129   1              for(page = 0; page < 75; page++)
 130   1              {
 131   2                      blockpage = (block <<  6) + page;
 132   2      
 133   2                      NAND_CMD(0); 
 134   2                      
 135   2                      NAND_ADDR(0);                       
 136   2                      NAND_ADDR(0);   
 137   2                      NAND_ADDR(blockpage & 0xff);       
 138   2                      NAND_ADDR((blockpage >> 8) & 0xff);
 139   2      
 140   2                      NAND_CMD(0x30);
 141   2              
 142   2                      NandWaitBusy();
 143   2              
 144   2      
 145   2                      for(i = 0; i < 64; i++)
 146   2                      {
 147   3                              HData = NAND_DATA_READ();
 148   3                              LData = NAND_DATA_READ();
 149   3                              WMLCDDATA(HData , LData);
 150   3                              HData = NAND_DATA_READ();
 151   3                              LData = NAND_DATA_READ();
 152   3                              WMLCDDATA(HData , LData);
 153   3                              HData = NAND_DATA_READ();
 154   3                              LData = NAND_DATA_READ();
 155   3                              WMLCDDATA(HData , LData);
 156   3                              HData = NAND_DATA_READ();
 157   3                              LData = NAND_DATA_READ();
 158   3                              WMLCDDATA(HData , LData);
 159   3                              HData = NAND_DATA_READ();
 160   3                              LData = NAND_DATA_READ();
 161   3                              WMLCDDATA(HData , LData);
 162   3                              HData = NAND_DATA_READ();
 163   3                              LData = NAND_DATA_READ();
 164   3                              WMLCDDATA(HData , LData);
 165   3                              HData = NAND_DATA_READ();
 166   3                              LData = NAND_DATA_READ();
 167   3                              WMLCDDATA(HData , LData);
 168   3                              HData = NAND_DATA_READ();
 169   3                              LData = NAND_DATA_READ();
 170   3                              WMLCDDATA(HData , LData);
 171   3                              HData = NAND_DATA_READ();
 172   3                              LData = NAND_DATA_READ();
 173   3                              WMLCDDATA(HData , LData);
 174   3                              HData = NAND_DATA_READ();
 175   3                              LData = NAND_DATA_READ();
 176   3                              WMLCDDATA(HData , LData);
 177   3                              HData = NAND_DATA_READ();
 178   3                              LData = NAND_DATA_READ();
C51 COMPILER V7.10   NAND                                                                  04/14/2009 23:28:42 PAGE 4   

 179   3                              WMLCDDATA(HData , LData);
 180   3                              HData = NAND_DATA_READ();
 181   3                              LData = NAND_DATA_READ();
 182   3                              WMLCDDATA(HData , LData);
 183   3                              HData = NAND_DATA_READ();
 184   3                              LData = NAND_DATA_READ();
 185   3                              WMLCDDATA(HData , LData);
 186   3                              HData = NAND_DATA_READ();
 187   3                              LData = NAND_DATA_READ();
 188   3                              WMLCDDATA(HData , LData);
 189   3                              HData = NAND_DATA_READ();
 190   3                              LData = NAND_DATA_READ();
 191   3                              WMLCDDATA(HData , LData);
 192   3                              HData = NAND_DATA_READ();
 193   3                              LData = NAND_DATA_READ();
 194   3                              WMLCDDATA(HData , LData);
 195   3                      }
 196   2              }
 197   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    664    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =     10    ----
   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 + -