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

📄 ad7109.lst

📁 这是8051弹片机驱动AD芯片ICL7109的源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.07   AD7109                                                                02/27/2007 10:02:55 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE AD7109
OBJECT MODULE PLACED IN ad7109.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ad7109.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /********************************************************************
   2                                 VIIC_C51.C
   3            此程序是I2C操作平台(主方式的软件平台)的底层的C子程序,如发送数据
   4          及接收数据,应答位发送,并提供了几个直接面对器件的操作函数,它很方便的
   5          与用户程序连接并扩展.....  
   6            
   7              注意:函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 
   8          一定的修改....(本例是1us机器周期,即晶振频率要小于12MHZ)
   9          
  10          ********************************************************************/
  11            
  12          // adress-8bits
  13                        
  14          //#include <reg764.h>   
  15          #include <SST89x5x4.H>       /*头文件的包含*/
  16          
  17          #include <intrins.h>
  18          #include <math.h>
  19          
  20          //#include <SST89x5x4.H>
  21          
  22          #define uchar unsigned  char
  23          #define uint unsigned int
  24          #define lcd_clr 0x01
  25          #define you_on  0x0f
  26          
  27          #define BIT0    0X01
  28          #define BIT1    0X02
  29          #define BIT2    0X04
  30          #define BIT3    0X08
  31          #define BIT4    0X10
  32          #define BIT5    0X20
  33          #define BIT6    0X40
  34          #define BIT7    0X80
  35          #define  _Nop()  _nop_()        /*定义空指令*/
  36          
  37          
  38          /*
  39          keyboard        data
  40          0               12
  41          1               8
  42          2               4
  43          3               0
  44          4               1
  45          5               2
  46          6               3
  47          7               5
  48          8               6
  49          9               7
  50          10-ok   9
  51          11              10
  52          12-wrong11
  53          13              13
  54          14              14
  55          15              15
C51 COMPILER V7.07   AD7109                                                                02/27/2007 10:02:55 PAGE 2   

  56          */      
  57                  
  58          //全局变量定义
  59          //lcd_bits
  60          sbit rs = P1^7;
  61          sbit rw  = P1^6;
  62          sbit e = P2^1;
  63          sbit lcd_deng = P2^3;
  64          //ad_bits
  65          sbit sta = P3^2;
  66          sbit le = P3^6;
  67          sbit he = P3^7;
  68          sbit ce = P2^4; 
  69          
  70          //函数申明
  71          void lcd_ini(void);     
  72          void lcd_wrc(uchar com);
  73          void lcd_wrd(uchar dat);
  74          void lcd_checkbusy();
  75          void delay(unsigned int n);
  76          void lcd_on();
  77          void lcd_off();
  78          uchar lcd_read_ac();
  79          void lcd_dis_num(uint dat);
  80          void lcd_dis_ch(uchar h,uchar l);
  81          void lcd_add(uchar h,uchar l);
  82          void lcd_dis_int(long dat,uint int_bits);       //显示一个有符号的整数,显示为dat的低int_bits位
  83          
  84          uchar key_data(void);
  85          
  86          
  87           //i2c相关函数
  88          void Start_I2c();               //起动总线函数
  89          void Stop_I2c();                //结束总线函数
  90          void  SendByte(uchar c);                //字节数据传送函数send
  91          uchar  RcvByte();               //字节数据传送函数 receive
  92          void Ack_I2c(bit a);            //主控器进行应答信号
  93          bit ISendStr_8(uchar add,uchar son_add,uchar dat);              //向子地址为8位的器件发送多字节数据函数 
  94          bit ISendStr_16(uchar add,uint son_add,uchar dat);              //向子地址为16位的器件发送多字节数据函数 
  95          uchar IRcvStr_8(uchar add,uchar son_add);               //向子地址为8位的器件读取多字节数据函数
  96          uchar IRcvStr_16(uchar add,uint son_add);               //向子地址为16位的器件读取多字节数据函数
  97          
  98          
  99          void lcd_dis_time(void);                //时钟显示函数
 100          void set_time(uchar sec, uchar min, uchar hr, uchar dy, uchar dt,uchar mn,uchar yr);            //时钟设置sec, min, 
             -hr, dy, dt, mn, yr
 101          void ad_ce_and_xian(void);
 102          
 103          
 104          
 105          /* 常,变量定义区 */
 106           
 107          /*端口位定义*/
 108          sbit SDA = P3^3;            /*模拟I2C数据传送位*/
 109          sbit SCL = P1^4;            /*模拟I2C时钟控制位*/
 110          sbit WP = P1^3; 
 111          /*状态标志*/
 112          
 113          bit ack;                 /*应答标志位*/
 114          uchar s;
 115          
 116          void main()
C51 COMPILER V7.07   AD7109                                                                02/27/2007 10:02:55 PAGE 3   

 117          {
 118   1      //      uchar i = 0;
 119   1      //      uchar v;
 120   1      //      uchar mydata = 0;
 121   1      //      uchar keydata = 0;
 122   1      //      uint pot_i;
 123   1      //      pot_i = &i;
 124   1      //      uchar max=58;
 125   1      //      uchar *s;
 126   1      //      s = &max;
 127   1      
 128   1              lcd_off();
 129   1              lcd_on();
 130   1              lcd_ini();
 131   1      //      lcd_add(2,1);
 132   1      //      lcd_dis_ch(0xb4,0xa1);
 133   1      
 134   1      
 135   1      //      I2C
 136   1      //      WP = 0;
 137   1      
 138   1      //  write to rom
 139   1      /*
 140   1              lcd_add(2,1);
 141   1      
 142   1              i = ISendStr_16(0xa0,0x0000,19);
 143   1              lcd_wrd(0x30+i);
 144   1      */
 145   1      /*
 146   1              lcd_add(3,1);
 147   1              for(v=0x0000;v<8;v++)
 148   1              {
 149   1                      i = 0;
 150   1                      while(i == 0)
 151   1                      {
 152   1                              i = ISendStr_16(0xa0,v,250+2*v+1);
 153   1                      }
 154   1                      lcd_wrd(0x30+(uchar)i); 
 155   1              }
 156   1      */
 157   1      
 158   1      // read rom   set address
 159   1      /*
 160   1              for(v=0x0000;v<8;v++)
 161   1              {
 162   1                      i = IRcvStr_16(0xa0,v);
 163   1                      lcd_wrc(0x88+2*v);
 164   1                      lcd_dis_num(i);
 165   1              }
 166   1      
 167   1      /*
 168   1      */
 169   1      
 170   1      
 171   1      //      while(1);
 172   1              
 173   1      //      set_time(30,6,2,2,30,1,7);              //时钟设置sec, min, hr, dy, dt, mn, yr
 174   1                      
 175   1                      
 176   1      //      lcd_add(2,1);
 177   1      //      lcd_wrd(0x03);
 178   1      //      lcd_dis_num(54);
C51 COMPILER V7.07   AD7109                                                                02/27/2007 10:02:55 PAGE 4   

 179   1      
 180   1      
 181   1      
 182   1              while(1)
 183   1              {
 184   2                      lcd_dis_time();         //时钟显示函数
 185   2      //              lcd_add(3,1);
 186   2      //              lcd_dis_int(987,2);     //显示一个有符号的整数,显示为dat的低int_bits位
 187   2      
 188   2      //              ad_ce_and_xian();
 189   2                      /*
 190   2                      keydata = key_data();
 191   2                      lcd_add(4,6);
 192   2                      switch(keydata)
 193   2                      {
 194   2                              case 0:
 195   2                              {
 196   2                                      v = 3;
 197   2                                      lcd_dis_num(v);
 198   2                                      break;
 199   2                              }
 200   2                              case 1:
 201   2                              {
 202   2                                      v = 4;
 203   2                                      lcd_dis_num(v);
 204   2                                      break;
 205   2                              }
 206   2                              case 2:
 207   2                              {
 208   2                                      v = 5;
 209   2                                      lcd_dis_num(v);
 210   2                                      break;
 211   2                              }
 212   2                              case 3:
 213   2                              {
 214   2                                      v = 6;
 215   2                                      lcd_dis_num(v);
 216   2                                      break;
 217   2                              }
 218   2                              case 4:
 219   2                              {
 220   2                                      v = 2;
 221   2                                      lcd_dis_num(v);
 222   2                                      break;
 223   2                              }
 224   2                              case 5:
 225   2                              {
 226   2                                      v = 7;
 227   2                                      lcd_dis_num(v);
 228   2                                      break;
 229   2                              }
 230   2                              case 6:
 231   2                              {
 232   2                                      v = 8;
 233   2                                      lcd_dis_num(v);
 234   2                                      break;
 235   2                              }
 236   2                              case 7:
 237   2                              {
 238   2                                      v = 9;
 239   2                                      lcd_dis_num(v);
 240   2                                      break;
C51 COMPILER V7.07   AD7109                                                                02/27/2007 10:02:55 PAGE 5   

 241   2                              }
 242   2                              case 8:
 243   2                              {
 244   2                                      v = 1;
 245   2                                      lcd_dis_num(v);
 246   2                                      break;
 247   2                              }
 248   2                              case 9:
 249   2                              {
 250   2                                      v = 10;
 251   2                                      lcd_dis_num(v);
 252   2                                      break;
 253   2                              }
 254   2                              case 10:
 255   2                              {
 256   2                                      v = 11;
 257   2                                      lcd_dis_num(v);
 258   2                                      break;
 259   2                              }
 260   2                              case 11:
 261   2                              {
 262   2                                      v = 12;
 263   2                                      lcd_dis_num(v);
 264   2                                      break;
 265   2                              }
 266   2                              case 12:
 267   2                              {
 268   2                                      v = 0;
 269   2                                      lcd_dis_num(v);
 270   2                                      break;
 271   2                              }
 272   2                              case 13:
 273   2                              {
 274   2                                      v = 13;
 275   2                                      lcd_dis_num(v);
 276   2                                      break;
 277   2                              }
 278   2                              case 14:
 279   2                              {
 280   2                                      v = 14;
 281   2                                      lcd_dis_num(v);
 282   2                                      break;
 283   2                              }
 284   2                              case 15:
 285   2                              {
 286   2                                      v = 15;
 287   2                                      lcd_dis_num(v);
 288   2                                      break;
 289   2                              }
 290   2                              default:
 291   2      //                      case 16:
 292   2                              {
 293   2                                      v = 16;
 294   2                                      lcd_dis_num(v);
 295   2                                      break;
 296   2                              }
 297   2                      }
 298   2      */
 299   2      
 300   2              }
 301   1      }
 302          
C51 COMPILER V7.07   AD7109                                                                02/27/2007 10:02:55 PAGE 6   

 303          
 304          void lcd_ini()
 305          {
 306   1              delay(100);
 307   1              lcd_wrc(0x34);

⌨️ 快捷键说明

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