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

📄 9.lst

📁 AD667外围电路简单的12位高性能数模转换
💻 LST
字号:
C51 COMPILER V7.20   9                                                                     04/25/2008 10:19:15 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE 9
OBJECT MODULE PLACED IN 9.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 9.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*=======da5667按键显示=======*/
   2          //8255cs接Y0,控制液晶的377的E接Y1,               AD677的CS接Y7  A0(A0,A1)接P2.0;A1(A2,A3)接P2.1
   3          #include <stdio.h>
   4          #include<intrins.h>
   5          #include<reg51.h>
   6          #include<absacc.h>
   7          //#define    uchar   unsigned  char
   8          //#define    uint   unsigned  int
   9          #define D8255  XBYTE[0x1C00] //8255状态/数据口地址
  10          #define  D8255C  XBYTE[0x1800] //8255 PC口地址 
  11          #define  Dlcd     XBYTE[0x2FFF]//显示的地址
  12          #define  DDAH     XBYTE[0xFDFF]//  667的高4位地址
  13          #define  DDAL     XBYTE[0xFEFF]// 667的低8位地址
  14          //#define  DDA     XBYTE[0xEFFF]        //启动转换
  15          unsigned int  y; 
  16          sbit rs = P1^0;   //1=数据; 0=指令;
  17          sbit rw = P1^1;   //1=读; 0=写;
  18          sbit  e = P1^2;   //1=使能?
  19          sbit  clk=P1^7;   //DA控制端
  20          //sbit  da=P2^4;
  21          unsigned int tab[]={0x0EE,0x0ED,0x0EB,0x0E7,0x0DE,0x0DD,0x0DB,0x0D7,0x0BE,0x0BD,
  22                              0x0BB,0x0B7,0x7E,0x7D,0x7B,0x77 };  /*键码表*/
  23          unsigned char tab1[]={"1234567890ABCDEF"};           /*段码表*/
  24          unsigned char tab2[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x00,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};
  25          unsigned char lt[]={0x7f,0x0bf,0x0df,0x0ef};  /*行扫描码*/
  26          //*************************延时函数*********************************
  27          void delay(unsigned char DelayTime)    //延时1ms*DelayTime
  28          {unsigned int  j=0;
  29   1              for(;DelayTime>0;DelayTime--)
  30   1              {       for(j=0;j<125;j++)      
  31   2                      {;}     
  32   2              }
  33   1      }
  34          
  35          /*---------------写指令------------------------*/
  36          write_comm(unsigned char c) 
  37          { 
  38   1      delay(2);
  39   1      //e1=0;
  40   1      rs=0;
  41   1      rw=0;
  42   1      XBYTE[0x2FFF]=c;
  43   1      e=1; 
  44   1      _nop_();
  45   1      e=0;
  46   1      }
  47          
  48          /*------------------初始化-----------------*/
  49          void init_lcd (void)
  50          {
  51   1      
  52   1      write_comm (0x30);  //基本指令集  
  53   1      write_comm (0x01);  //清屏,地址指针指向00H
  54   1      write_comm (0x06);  //光标的移动方向
  55   1      write_comm (0x0c);  //开显示,关游标
C51 COMPILER V7.20   9                                                                     04/25/2008 10:19:15 PAGE 2   

  56   1      }
  57          /*------------------显示-----------------*/
  58          void display(unsigned int i)         
  59          {
  60   1      delay(2);
  61   1      rs=1;
  62   1      rw=0;
  63   1      XBYTE[0x2FFF]=tab1[i];
  64   1      e=1;
  65   1      _nop_();
  66   1      e=0;
  67   1      return;
  68   1      }
  69          /*------------------DA转换-----------------*/
  70          void DA(unsigned int m)
  71          { 
  72   1      
  73   1      
  74   1      DDAL=0xff&m;
  75   1      //_nop_();
  76   1      DDAH=(0x0f00&m)>>8;
  77   1      //_nop_();
  78   1      
  79   1       }
  80          /*------------------功能键-----------------*/
  81          
  82          void able(unsigned int c)
  83          {
  84   1        if(c==0x7B)
  85   1        DA(y);
  86   1         
  87   1        }
  88          /*------------------主函数-----------------*/
  89          main()
  90          {
  91   1                
  92   1       unsigned int i,j,a,b;
  93   1      XBYTE[0x1C00]=0x81;
  94   1      init_lcd ();
  95   1      j=0;
  96   1                
  97   1        for(;;)
  98   1         {
  99   2           for(XBYTE[0x1800]=0x0f; XBYTE[0x1800]==0x0f;);   /*行线输出低电平,并判断是否有键按下*/
 100   2           i=0;                       /*行计数器清零*/
 101   2           b=lt[i];                   /*取行扫描码*/
 102   2           do
 103   2             {
 104   3               XBYTE[0x1800]=b;                   /*送行扫描码到P1口*/
 105   3               a=XBYTE[0x1800];                   /*读入列值*/
 106   3               a=a&0x0f;               /*保留低4位*/
 107   3               if(a==0x0f)             /*如果该列没有键按下,则送出下一行扫描码*/
 108   3                {
 109   4                 i++;
 110   4                 if(i==4)i=0;
 111   4                 b=lt[i];
 112   4                 }
 113   3               }
 114   2             while(a==0x0f);           /*循环到该列有键按下为止*/
 115   2             b=b&0x0f0;                 /*取行扫描码的高4位*/
 116   2             b=b|a;                     /*合并成为按键的扫描码*/
 117   2             i=0;                       /*计数器清零*/           
C51 COMPILER V7.20   9                                                                     04/25/2008 10:19:15 PAGE 3   

 118   2             for(; b!=tab[i]; i++);     /*在键值表中查找相应的键值*/     
 119   2             delay(200);      /*延时,去抖动*/
 120   2                 if(j<3)
 121   2                 {j++;
 122   3             y=(y<<4)+tab2[i];
 123   3             display(i);                  /*显示段码*/           
 124   3             for(XBYTE[0x1800]=0x0f; XBYTE[0x1800]!=0x0f;); /*判断按键是否结束*/
 125   3             delay(300); }    /*延时*/
 126   2             able(tab[i]);
 127   2                 
 128   2      
 129   2           }
 130   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    354    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     71       4
   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 + -