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

📄 ad9851.lst

📁 DDS芯片AD9851的程序
💻 LST
字号:
C51 COMPILER V6.23a  AD9851                                                                07/23/2007 20:15:57 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE AD9851
OBJECT MODULE PLACED IN AD9851.OBJ
COMPILER INVOKED BY: d:\Programs and Files\Keil\C51\BIN\C51.EXE AD9851.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1           /*********************************************
   2           ;Controller:ST7920  
   3           ;MCU:AT89C52 ,晶体频率:12MHz
   4           ;LCM:128*64
   5           ;LCM型号:FYD12864-0402 
   6          ;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7   15:PSB16:NC 17:RST 18:Vout 19:A 20:K
   7          ;**********************************************/
   8           #include<stdio.h>
   9           #include<intrins.h>
  10           #include<reg52.h>
  11           #include<string.h>
  12           #define DATAOUT P0
  13           /*
  14           sbit     RS=P2^3;
  15           sbit     RW=P2^5;
  16           sbit     E=P2^7;
  17           sbit     PSB=P2^6;
  18           sbit     RST=P2^0;     */
  19          
  20           sbit     CS=P2^5;// RS=P2^5;
  21           sbit     SID=P2^4;//RW=P2^4;
  22           sbit     CLK=P2^3;//sbit     E=P2^3;
  23           sbit     PSB=P2^2;
  24          
  25           sbit     BF=DATAOUT^7;
  26          
  27          
  28          
  29          /**********************************
  30          **********************************
  31          
  32                延时
  33          
  34          *********************************
  35          *********************************/
  36                  void delayms(unsigned int time)   //延时约time个ms
  37          {
  38   1              unsigned char i;
  39   1              while(time--)
  40   1                        {
  41   2                           for(i=0;i<120;i++) ;
  42   2                        }
  43   1              }
  44                          void delay50us(unsigned int time)         //延时约time个us
  45          {
  46   1              unsigned char i;
  47   1              while(time--)
  48   1                        {
  49   2                           for(i=0;i<6;i++) ;
  50   2                        }
  51   1              }
  52                  void init()
  53                  {
  54   1                      PSB=0;           //串口模式
  55   1                      CS=0;            //CS为片选线,高电平有效
C51 COMPILER V6.23a  AD9851                                                                07/23/2007 20:15:57 PAGE 2   

  56   1                      CLK=0;           //时钟为上升沿有效,因此平时为0
  57   1                      delayms(1);
  58   1              }
  59          
  60                  void writedata(unsigned char dat)       //不同于以前的writedata,这里仅仅写入一个8位的数据
  61                  {
  62   1                      unsigned char i;
  63   1                      for(i=8;i>0;i--)
  64   1                      {
  65   2                        if(dat&0x80)  SID=1;
  66   2                        else          SID=0;
  67   2                        _nop_();_nop_(); _nop_();_nop_();     _nop_();
  68   2                        CLK=1;
  69   2                        dat=dat<<1;
  70   2                        CLK=0;
  71   2                       }      
  72   1              }
  73          
  74          
  75                  void writecmd(unsigned char dat) //跟以前一样,写入控制字
  76                  {
  77   1                      CS=1;
  78   1                      CLK=0;
  79   1                      writedata(0xf8);                         //写入这个表明以后写入的数据是指令数据而不是显示数据
  80   1                      writedata(dat&0xf0);
  81   1                      dat=dat<<4;
  82   1                      writedata(dat&0xf0);
  83   1                      CS=0;
  84   1              }
  85          
  86                  
  87                            
  88          
  89          
  90                  void displaydat(unsigned char address,unsigned char dat[])//显示的数据
  91                  {       unsigned char i;                 //dat【】的长度
  92   1                  unsigned char d;
  93   1                      unsigned char test;
  94   1                      unsigned char temp;
  95   1                      i=strlen(dat);
  96   1                      writecmd(address);                //写入地址
  97   1                      writecmd(address);                //不知道为啥要写入两次才行,一次的话,怎么写都在0x80这个位置
  98   1                      CS=1;                                     //允许操作
  99   1                      writedata(0xfa);                  //写入这个表明以后写入的数据是显示数据而不是指令数据
 100   1                  for(d=0;d<i;d++)    
 101   1                      { 
 102   2                       temp=dat[d];
 103   2                       test=temp&0xf0;             //先写高四位,再写入4个0
 104   2                   writedata(test);
 105   2                       temp=temp<<4;
 106   2                       test=temp&0xf0;                 //再写低四位,再写入4个0
 107   2                   writedata(test);     
 108   2                       }
 109   1                      CS=0;
 110   1              }
 111                          
 112                          
 113          //*********
 114                  void main()
 115                  {       unsigned char d[2]="wo";
 116   1                      init();
 117   1      
C51 COMPILER V6.23a  AD9851                                                                07/23/2007 20:15:57 PAGE 3   

 118   1              //      writecmd(0x30); delay50us(1);
 119   1                
 120   1                      d[2]="wo"; 
 121   1                      while(1)
 122   1                      {
 123   2                      writecmd(0x30); delay50us(1);
 124   2                      writecmd(0x0c); delay50us(1);
 125   2                      writecmd(0x01); delay50us(1);
 126   2              //      writecmd(0x0c); delay50us(1);
 127   2      
 128   2              
 129   2      
 130   2                      
 131   2      
 132   2              //      writecmd(0x88);
 133   2              //      CS=1;
 134   2              //      writedata(0xfa);   
 135   2              //      writedata(0x40);
 136   2              //      writedata(0x10);
 137   2      
 138   2              //      writecmd(0x88);
 139   2              //      displaydat(0x80,"C U I T");      delayms(1000);
 140   2                      displaydat(0x94,"C U I T");      delayms(1000);
 141   2                      }                                                                                                                         
 142   1      
 143   1       }


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