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

📄 max127.lst

📁 AD转换器MAX127驱动程序( KEIL C51 )
💻 LST
字号:
C51 COMPILER V6.20c  MAX127                                                                12/20/2002 10:35:48 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE MAX127
OBJECT MODULE PLACED IN max127.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE max127.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include "intrins.h"
   2          #include "At89x51.h"
   3          /////////////////////////////////////
   4          //采用P1口作控制
   5          //11.0592的晶体
   6          ////////////////////////////////////
   7          //I2C总线的数据和时钟
   8          #define SCL P1_7
   9          #define SDA P1_6
  10          //////////////////////////////////////
  11          //7219的各控制线
  12          #define CLK7219    P2_7
  13          #define DIN7219    P2_6
  14          #define CS7219     P2_5
  15          ///////////////////////////////////////
  16          max7219(unsigned int dat)
  17          {
  18   1      	char i;
  19   1      	CS7219=0;
  20   1      	_nop_();
  21   1      	
  22   1      	for(i=0;i<16;i++)
  23   1      	{
  24   2      		DIN7219=(dat>>(15-i))&0x1;
  25   2      		CLK7219=1;
  26   2      		_nop_();
  27   2      		CLK7219=0;
  28   2      	};
  29   1      
  30   1      	CS7219=1;
  31   1      }
  32          /////////////////////////////////////////////////////////
  33          ///Max127 12位AD操作程序
  34          /////////////////////////////////////////////////////////
  35          void I2cWriteByte(unsigned char wdata)
  36          {
  37   1      	char i;
  38   1      	for(i=0;i<8;i++)
  39   1      	{
  40   2      		SDA=((wdata>>(7-i))&0x1);
  41   2      		SCL=1;
  42   2      		_nop_();
  43   2      		SCL=0;
  44   2      	}
  45   1      }
  46          unsigned char I2cReadByte(void)
  47          {	
  48   1      	unsigned char result,i;
  49   1      	bit getdata;
  50   1      	result=0;
  51   1      	for(i=0;i<8;i++)
  52   1      	{
  53   2      		SDA=1;
  54   2      		SCL=1;
  55   2      		getdata=SDA;
C51 COMPILER V6.20c  MAX127                                                                12/20/2002 10:35:48 PAGE 2   

  56   2      		SCL=0;
  57   2      		result|=getdata;
  58   2      		if(i!=7)
  59   2      			result<<=1;
  60   2      	}
  61   1      	return result;
  62   1      }
  63          //////////////////////////////////////////////
  64          //address: 0 1 0 1 A2 A1 A0
  65          ///ctr : Start SEL2 SEL1 SEL0 RING BIP PD1 PD0
  66          //fail  return 0xffff
  67          unsigned int max127(unsigned char address,unsigned char ctr) 
  68          {
  69   1      	bit ack;
  70   1      	unsigned int result;
  71   1      	unsigned char hbyte,lbyte;
  72   1      	address<<=1;
  73   1      //////////////////////////////////////////////
  74   1      //开始转换
  75   1      	SDA=0;   //启动
  76   1      	_nop_();
  77   1      	SCL=0;   
  78   1      
  79   1      	I2cWriteByte(address&0xfe);   //发送地址写
  80   1      
  81   1      	SDA=1;
  82   1      	SCL=1;
  83   1      	ack=SDA;
  84   1      	SCL=0;
  85   1      	if(ack)  //应答slave to master
  86   1      	{
  87   2      		SDA=0;
  88   2      		SCL=1;
  89   2      		SDA=1;
  90   2      		result=0xffff;
  91   2      		return result;
  92   2      	}
  93   1      	I2cWriteByte(ctr);   //发送控制字
  94   1      
  95   1      	SDA=1;
  96   1      	SCL=1;
  97   1      	ack=SDA;
  98   1      	SCL=0;
  99   1      	if(ack)  //应答slave to master
 100   1      	{
 101   2      		SDA=0;
 102   2      		SCL=1;
 103   2      		SDA=1;
 104   2      		result=0xffff;
 105   2      		return result;
 106   2      	}
 107   1      
 108   1      	SDA=0; 
 109   1      	SCL=1;
 110   1      	SDA=1;   //stop
 111   1      
 112   1      	_nop_();
 113   1      	_nop_();
 114   1      ////////////////////////////////////////////////////
 115   1      ///开始读数据
 116   1      	SDA=0;   //启动
 117   1      	_nop_();
C51 COMPILER V6.20c  MAX127                                                                12/20/2002 10:35:48 PAGE 3   

 118   1      	SCL=0;   
 119   1      
 120   1      	I2cWriteByte(address|0x1);   //发送地址读
 121   1      
 122   1      	SDA=1; 
 123   1      	SCL=1;
 124   1      	_nop_();
 125   1      	SCL=0;
 126   1      	if(ack)   //应答slave to master
 127   1      	{
 128   2      		SDA=0;
 129   2      		SCL=1;
 130   2      		SDA=1;
 131   2      		result=0xffff;
 132   2      		return result;
 133   2      	}
 134   1      	hbyte=I2cReadByte();
 135   1      	
 136   1      	SDA=0;   //应答mater to slave
 137   1      	SCL=1;
 138   1      	_nop_();
 139   1      	SCL=0;
 140   1      
 141   1      	lbyte=I2cReadByte();
 142   1      	
 143   1      	SDA=1;   ////应答master to slave
 144   1      	SCL=1;
 145   1      	_nop_();
 146   1      	SCL=0;
 147   1      		
 148   1      	SDA=0; 
 149   1      	SCL=1;
 150   1      	SDA=1;   //stop
 151   1      /////////////////////////////////////
 152   1      //处理数据
 153   1      	result=0;
 154   1      	result|=hbyte;
 155   1      	result<<=8;
 156   1      	result|=lbyte;
 157   1      	result>>=4;
 158   1      
 159   1      	return result;
 160   1      }
 161          main()
 162          {
 163   1      	int i;
 164   1      	unsigned char j,k;
 165   1      	unsigned int addata,disp;
 166   1      
 167   1      	SCL=1;
 168   1      	SDA=1;
 169   1      
 170   1      	CLK7219=0;
 171   1      	for(i=0;i<31000;i++);
 172   1      ///////////////////////////////////////////////////////
 173   1      //7219初始化
 174   1      	max7219(0x0C01);    //shutdown register format 
 175   1      	max7219(0x09FF);    //decode mode code B 7-0
 176   1      	max7219(0x0A0F);    //intensity register format 
 177   1      	max7219(0x0B07);    //sacan limit register format 
 178   1      	max7219(0x0F00);    //display test register format 
 179   1      ////////////////////////////////////////////////////////
C51 COMPILER V6.20c  MAX127                                                                12/20/2002 10:35:48 PAGE 4   

 180   1      	for(k=0;k<8;k++)
 181   1      	{
 182   2      		disp=k+1;
 183   2      		disp<<=8;
 184   2      		max7219(disp);
 185   2      
 186   2      	}
 187   1      /////////////////////////////////////////////////
 188   1      	while(1)
 189   1      	{
 190   2      		for(j=0;j<8;j++)
 191   2      		{
 192   3      			disp=0x0800|(j&0xf);
 193   3      			max7219(disp);
 194   3      //address: 0 1 0 1 A2 A1 A0
 195   3      ///ctr : Start SEL2 SEL1 SEL0 RING BIP PD1 PD0
 196   3      			addata=max127(0x28,0x80|((j&0x7)<<4));
 197   3        		    for(k=0;k<4;k++)
 198   3      			{
 199   4      				disp=k+1;
 200   4      				disp<<=8;
 201   4      				disp|=addata%10;
 202   4      				addata/=10;
 203   4      				max7219(disp);    //转换成十进制显示
 204   4      			}
 205   3      
 206   3      			P1_0=~P1_0;
 207   3      			for(k=0;k<4;k++)
 208   3      			{
 209   4      	 			for(i=0;i<31000;i++);
 210   4      				for(i=0;i<31000;i++);
 211   4      				for(i=0;i<31000;i++);
 212   4      			}
 213   3      		}
 214   2      	}
 215   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    551    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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