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

📄 main.lst

📁 80c51F020的开发程序 包括ADC DDS DAC
💻 LST
字号:
C51 COMPILER V6.12  MAIN                                                                   09/05/2007 17:00:35 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE main.c DB OE

stmt level    source

   1          #define SCON0 SCON
   2          #define SBUF0 SBUF
   3          
   4          #define TI0 TI
   5          #define RI0 RI
   6          
   7          #include <c8051f020.h>
   8          #include <math.h>
   9          #include <stdio.h>
  10          #include <stdlib.h>
  11          #include "common.h"
  12          #include "osc.h"
  13          #include "uart.h"
  14          #include "ad9851.h"
  15          #include "lcd.h"
  16          #include "tl5602.h"
  17          #include "dac.h"
  18          
  19          void LCD_display(unsigned char code_bit,unsigned char flag);
  20          
  21          
  22          unsigned char fn;
  23          unsigned long ad9851_frequency;
  24          unsigned char ad9851_phase;
  25          unsigned long fff[4]={1000000,100000,10000,1000};
  26          unsigned char xdata show_now[256];
  27          unsigned char xdata show_ago[256];
  28          unsigned int show_now_number;
  29          unsigned int show_ago_number;
  30          unsigned char xdata sin_table[256];
  31          
  32          sbit sdiv=P0^7;
  33          sbit vdiv=P0^6;
  34          sbit level=P0^5;
  35          sbit LCD_data=P2^7;
  36          sbit LCD_clk=P2^6;
  37          sbit RS=P2^5;
  38          sbit RW=P2^4;
  39          sbit E=P2^3;
  40          //int0=P0.0
  41          //int1=p0.1
  42          //int6=P3.6
  43          //int7=P3.7
  44          //ad9851 P3.0123
  45          sbit save=P3^4;
  46          sbit show=P3^5;
  47          sbit clr=P2^0;
  48          sbit single_tr=P2^1;
  49          sbit clr_single=P2^2;
  50          //sbit dac0832wr=P0^4;
  51          
  52          #define sample_data P7
  53          //#define dac0832 P6
  54          main()
  55          {
C51 COMPILER V6.12  MAIN                                                                   09/05/2007 17:00:35 PAGE 2   

  56   1           	
  57   1      	unsigned int i;	
  58   1      	unsigned char save_flag=0x00;
  59   1      	unsigned char show_flag=0x00;	
  60   1      	unsigned char single_flag=0x00;	
  61   1      	unsigned char clr_single_flag=0x00;
  62   1         
  63   1      	Osc_Init_Parameter_t Osc_Init_Parameter;
  64   1      
  65   1      	WDTCN = 0xDE;					// disable watchdog timer
  66   1      	WDTCN = 0xAD;
  67   1      
  68   1      	Osc_Init_Parameter.Source_Select = EXTERNAL_OSC;
  69   1      	Osc_Init_Parameter.External_Mode = CRYSTAL;
  70   1      	Osc_Init_Parameter.Frequency = 22118400;
  71   1      	
  72   1      	Osc_Init(Osc_Init_Parameter);
  73   1      
  74   1      	// Port Setup
  75   1      	XBR0=0x00;								// HW_UART routed to pins P0.0 and P0.1;
  76   1      	XBR1=0x14;												
  77   1      	XBR2=0x40; 	// Enable crossbar, pull-ups enabled.
  78   1      	
  79   1      	P0MDOUT=0x00;///////////////////////
  80   1          P2MDOUT=0xff;
  81   1      	P3MDOUT=0xff;
  82   1      
  83   1      	EA=1;
  84   1      	EX0=1;
  85   1      	IT0=1;
  86   1      	EX1=1;
  87   1      	IT1=1;
  88   1      	EIE2=0x30;/////////P3.6;;;;;P3.7///////
  89   1      	P3IF=0x00;	    								
  90   1      
  91   1      	uart_init();
  92   1      
  93   1      	LCD_display(0x0c,0x01);
  94   1      	LCD_display(0x01,0x01);
  95   1      	LCD_display(0x38,0x01);
  96   1      	LCD_display(0x06,0x01);
  97   1      	LCD_display(0x80,0x01);
  98   1          LCD_display(0x30,0x00);
  99   1      	
 100   1      	fn=0;
 101   1      	show_now_number=0;
 102   1      	show_ago_number=0;    
 103   1      	
 104   1          //for(qqq=0;qqq<256;qqq++)
 105   1      	//{
 106   1      	    //tl5602_write((unsigned char)qqq);
 107   1      		//Loop_Delay(200);
 108   1          //}
 109   1      	
 110   1          dac_init();
 111   1      
 112   1      	//for(i=0;i<256;i++)
 113   1        //{  
 114   1           
 115   1      	 //sin_table[i]=(unsigned char)((sin((float)i/256.0*6.28)+1.0)*127);
 116   1      	      
 117   1      	 //}   
C51 COMPILER V6.12  MAIN                                                                   09/05/2007 17:00:35 PAGE 3   

 118   1        
 119   1      
 120   1      	//while(1)
 121   1      	//{
 122   1      //	for(i=0;i<256;i++)
 123   1      	//{
 124   1      	  //dac0_work(i);
 125   1      	  //dac1_work(sin_table[i]);  
 126   1      	  
 127   1         // }
 128   1      //}
 129   1      
 130   1         ad9851_init();
 131   1         ad9851_frequency=(unsigned long)((float)fff[fn]*23.861);
 132   1         ad9851_phase= 0x01;
 133   1         ad9851_input(ad9851_frequency,ad9851_phase);	      
 134   1         Loop_Delay(100);
 135   1      
 136   1          while(1)
 137   1      	{ 
 138   2      
 139   2      	   save=1;
 140   2             if(save==1)
 141   2      	   save_flag=0x01;
 142   2             
 143   2      	   show=1;
 144   2      	   if(show==1)	   
 145   2      	   show_flag=0x01;       
 146   2      
 147   2      	   clr=1;
 148   2      	   if(clr==1)
 149   2      	   {
 150   3      	     save_flag=0x00;
 151   3               show_flag=0x00;
 152   3      		 single_flag=0x00;
 153   3      		 }
 154   2      		      
 155   2             
 156   2      	   single_tr=1;
 157   2      	   if(single_tr==1)
 158   2      	   single_flag=0x01;
 159   2      	 
 160   2      
 161   2          EIE2=0x30;//重新开启采样中断    
 162   2      	while(show_now_number<256);//等待数据采集完成
 163   2          show_now_number=0;
 164   2          
 165   2      	if(save_flag==0x01)
 166   2      	{
 167   3      	  for(i=0;i<256;i++)
 168   3      	   show_ago[i]=show_now[i];//存储波形
 169   3            save_flag=0x00;
 170   3      	}
 171   2      	
 172   2      
 173   2      	if(show_flag==0x00)//输出采样波形
 174   2         {		
 175   3      	for(i=0;i<256;i++)
 176   3      	{
 177   4      	  dac0_work(i);
 178   4      	  dac1_work(show_now[i]); 	  
 179   4          }
C51 COMPILER V6.12  MAIN                                                                   09/05/2007 17:00:35 PAGE 4   

 180   3          dac0_work(0);
 181   3          }
 182   2      
 183   2           if(show_flag==0x01)//输出存储波形
 184   2      	 {
 185   3      	   for(i=0;i<256;i++)
 186   3      	 {
 187   4      	   dac0_work(i);
 188   4      	   dac1_work(show_ago[i]); 	  
 189   4            }
 190   3             dac0_work(0);	  
 191   3      	 }
 192   2            
 193   2      	  if(single_flag==0x01)
 194   2            while(1)
 195   2      	  {
 196   3      	  clr_single=1;
 197   3            if(clr_single==1)
 198   3      	  {
 199   4      	      single_flag=0x00;
 200   4      	      break;
 201   4            }
 202   3            else
 203   3      	  for(i=0;i<256;i++)
 204   3      	{
 205   4      	  dac0_work(i);
 206   4      	  dac1_work(show_now[i]); 	  
 207   4          }
 208   3      	     
 209   3          }
 210   2      
 211   2      }
 212   1      
 213   1      }
 214          
 215          
 216          void int0() interrupt 0
 217          {
 218   1             
 219   1      	   EX0=0;	   
 220   1      	   Loop_Delay(10000); 
 221   1      	   fn=fn+1;	         
 222   1      	   if(sdiv==0)
 223   1      	   {
 224   2      
 225   2      	   fn++;
 226   2      
 227   2      	   }
 228   1      	   else
 229   1      	   {
 230   2      
 231   2             fn--;
 232   2      	   }
 233   1      
 234   1      	   if(fn==0)
 235   1      	   {       
 236   2      	     fn=4;
 237   2      		 }
 238   1      	   if(fn==4)
 239   1      	   {
 240   2      	      fn=1;
 241   2      		}   
C51 COMPILER V6.12  MAIN                                                                   09/05/2007 17:00:35 PAGE 5   

 242   1             fn=fn-1;
 243   1      	   ad9851_frequency=(unsigned long)((float)fff[fn]*23.861);
 244   1      	   ad9851_phase= 0x01;
 245   1             ad9851_input(ad9851_frequency,ad9851_phase);	 
 246   1      	   Loop_Delay(100);
 247   1              
 248   1      	   EX0=1;
 249   1      }
 250          
 251          
 252          void int1() interrupt 2
 253          {
 254   1         EX1=0;	   
 255   1         Loop_Delay(10000); 
 256   1         
 257   1      
 258   1      
 259   1      
 260   1       
 261   1      }
 262          
 263          
 264          void int6() interrupt 18////0832
 265          {
 266   1      
 267   1       
 268   1      
 269   1      
 270   1      }
 271          
 272          
 273          
 274          void int7() interrupt 19////////下降沿采数
 275          {
 276   1        sample_data=0xff;
 277   1        show_now[show_now_number]=sample_data;
 278   1        show_now_number++;
 279   1      
 280   1        if(show_now_number==256)
 281   1         {  
 282   2            EIE2=0x10;///////采够点时关闭外部中断7
 283   2          }
 284   1      }
 285          
 286          
 287          void LCD_display(unsigned char code_bit,unsigned char flag)
 288          {    
 289   1          unsigned char temp_1,temp_2;
 290   1      	 unsigned char a;
 291   1      	unsigned char j;
 292   1          temp_1=code_bit;
 293   1      	temp_2=code_bit; 
 294   1      	for(a=0;a<8;a++)
 295   1      	 {
 296   2      	    LCD_clk=0;
 297   2              temp_1=temp_2;
 298   2      	    temp_1=temp_1&0x80;
 299   2      		if(temp_1==0x00)
 300   2              {        
 301   3      		  LCD_data=0;
 302   3              }
 303   2      		else
C51 COMPILER V6.12  MAIN                                                                   09/05/2007 17:00:35 PAGE 6   

 304   2             {
 305   3      		LCD_data=1;
 306   3             }
 307   2      		LCD_clk=1;
 308   2              temp_2=temp_2<<1;
 309   2           }                    
 310   1           if(flag==0x01)
 311   1           { 	  
 312   2                         
 313   2      	      RS=0;
 314   2      		  RW=0;		   	
 315   2      		  E=1;
 316   2      		  	j=2000;
 317   2      			while(j-->1);		  
 318   2      		  E=0;
 319   2      		  j=4000;
 320   2      	     while(j-->1);
 321   2      		}
 322   1      		else
 323   1      		{	    
 324   2      			RS=1;
 325   2      			RW=0;
 326   2      			E=1;
 327   2      	     	j=2000;
 328   2      			while(j-->1);					
 329   2      			E=0;
 330   2      		   j=4000;
 331   2      			while(j-->1);
 332   2      		}	
 333   1      	}
 334          
 335          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    832    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    768    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26      12
   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 + -