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

📄 source.lst

📁 一个直流信号源的全部开发资料,包括原理图,PCB,单片机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 365   4      				vol=adj*65535;
C51 COMPILER V6.12  SOURCE                                                                 08/15/2004 20:14:19 PAGE 7   

 366   4      				vol=vol/120000;
 367   4      				vol=adj_vol+ vol;
 368   4      				if( vol > 65535 )
 369   4      				    adj = 65535 ;
 370   4      				else adj=vol;
 371   4      			}
 372   3      		}
 373   2      		else
 374   2      		{
 375   3      			if( ad_vol > set_vol )
 376   3      			{
 377   4      				type=type | ADH ;
 378   4      				send_buf[0]='H';
 379   4      				adj=ad_vol-set_vol;
 380   4      				vol=adj*13107;  //vol=adj*125*65535/12000000
 381   4      				
 382   4      				vol=vol/19200;
 383   4                     // vol=vol*check_adj;
 384   4      			//	vol=vol/10000;
 385   4      				if ( adj_vol > vol) adj=adj_vol-(unsigned int)vol;
 386   4      				else adj=0;
 387   4      			}
 388   3      	        if( ad_vol < set_vol )
 389   3      			{
 390   4      				type=type | ADL ;
 391   4      				send_buf[0]='L';
 392   4      				adj=set_vol-ad_vol;
 393   4      				vol=adj*13107;
 394   4                                      vol=vol/19200;
 395   4      			//	vol=vol*check_adj;
 396   4      			//	vol=vol/10000;
 397   4      				vol=adj_vol+ vol;
 398   4      				if( vol > 65535 )
 399   4      				    adj = 65535 ;
 400   4      				else adj=vol;
 401   4      			}
 402   3      		}
 403   2      		adj_vol=adj;
 404   2      		da_outbyte(adj);
 405   2      	}
 406   1      	if(enable_ad)
 407   1      	{
 408   2      		disp_ad(ad_vol,type);
 409   2      		sprintf(&send_buf[2],"%05u",ad_vol);
 410   2      		send_cnt=0;
 411   2      		TI=1;
 412   2      	}
 413   1      	ad_cnt=0;
 414   1      	TH1=0;
 415   1      	TL1=0;
 416   1      	TR1=1;
 417   1      }
 418          ///////////////////////////////
 419          //
 420          //NAME: init_timer1
 421          //DESCRIPTION: TIMER1 INTERRUPT SERVICE PROGRAM FOR AD COUNTER
 422          //CALL:
 423          //INPUT:
 424          //OUTPUT:NONE
 425          //
 426          ///////////////////////////////
 427          void init_timer1() interrupt 3
C51 COMPILER V6.12  SOURCE                                                                 08/15/2004 20:14:19 PAGE 8   

 428          {
 429   1          ad_cnt++;
 430   1      }
 431          
 432          /////////////////////////////
 433          //
 434          //NAME: disp_ad
 435          //DESCRIPTION: disp_ad
 436          //CALL:
 437          //INPUT:  ad:ad value  type:display type
 438          //OUTPUT:NONE
 439          //
 440          ///////////////////////////////
 441          void disp_ad(unsigned int ad,unsigned char type)
 442          {
 443   1          unsigned char ch,ch1;
 444   1          unsigned int itemp;
 445   1          itemp=ad;
 446   1          ch=ad/10000;
 447   1          ch1=ADU;
 448   1          if( (type & ch1)  == ch1 ) display(4,ch | 0x80);
 449   1          else display(4,ch);
 450   1          itemp=itemp-ch*10000;
 451   1          ch=itemp/1000;
 452   1          ch1=ADI;
 453   1          if(( type & ch1 ) == ch1 ) display(5,ch | 0x80);
 454   1          else display(5,ch);
 455   1          itemp=itemp-ch*1000;
 456   1          ch=itemp/100;
 457   1          display(6,ch);
 458   1          itemp=itemp-ch*100;
 459   1          ch=itemp/10;
 460   1          display(7,ch);
 461   1          itemp=itemp-ch*10;
 462   1          ch=itemp;
 463   1          display(8,ch);
 464   1          ch1=ADH;
 465   1          if(( type & ch1 ) == ch1 )
 466   1      	{
 467   2      		display(1,0x0c);
 468   2      		display(2,0x0f);
 469   2      	}
 470   1          else
 471   1          {
 472   2              ch1=ADL;
 473   2              if (( type & ch1 ) == ch1 ) display(1,0x0d);
 474   2      		else display(1,0x0f);
 475   2      		display(2,0x0f);
 476   2          }
 477   1          ch1= SET_AD;
 478   1          if(( type & ch1 ) == ch1 )
 479   1          {
 480   2              display(1,0x05);
 481   2              display(2,0x0b);
 482   2          }
 483   1      	display(3,0x0f);
 484   1      }
 485          
 486          //////////////////////////////
 487          //
 488          //NAME: display
 489          //DESCRIPTION: display
C51 COMPILER V6.12  SOURCE                                                                 08/15/2004 20:14:19 PAGE 9   

 490          //CALL:
 491          //INPUT:  pos:place  disp_code:display code
 492          //OUTPUT:NONE
 493          //
 494          ///////////////////////////////
 495          void display(unsigned int pos,unsigned int disp_code)
 496          {
 497   1          int k=0;
 498   1          k=pos*256+disp_code;
 499   1          disp_outbyte(k);
 500   1      }
 501          //////////////////////////////
 502          //
 503          //NAME: disp_init
 504          //DESCRIPTION: init 7219
 505          //CALL:
 506          //INPUT:  NONE
 507          //OUTPUT:NONE
 508          //
 509          ///////////////////////////////
 510          void disp_init(void)
 511          {
 512   1          int k=0x010f;
 513   1          unsigned int i;
 514   1          disp_outbyte(0x09ff);           //DECODE MODE:1-8
 515   1          disp_outbyte(0x0a01);           //INTENSITY:31/32
 516   1          disp_outbyte(0x0b07);           //SCAN LIMIT:1-8
 517   1          disp_outbyte(0x0c01);           //SHUT DOWN:OFF
 518   1          disp_outbyte(0x0f00);           //DISPLAY TEST:OFF
 519   1          for ( i = 0 ;i < 8 ; i++)
 520   1          {
 521   2              disp_outbyte(k);
 522   2              k=k+0x0100;
 523   2          }
 524   1      }
 525          //////////////////////////////
 526          //
 527          //NAME: disp_outbyte(int outbytes)
 528          //DESCRIPTION: output a word to 7219
 529          //CALL:
 530          //INPUT:  NONE
 531          //OUTPUT:NONE
 532          //
 533          ///////////////////////////////
 534          void disp_outbyte(int outbytes)
 535          {
 536   1          int i ,j;
 537   1          DSP_LOAD=0;
 538   1      
 539   1          for( i = 0 ; i < 16 ;i++)
 540   1          {
 541   2      		DSP_CLK=0;
 542   2              j=outbytes &  0x8000;
 543   2              if ( j == 0 ) DSP_DIN = 0 ;
 544   2              else DSP_DIN=1;
 545   2              outbytes=outbytes<<1;
 546   2              DSP_CLK=1;
 547   2           }
 548   1           DSP_LOAD=1;
 549   1           DSP_CLK=0;
 550   1      	 DSP_CLK=1;
 551   1      	 DSP_LOAD=0;
C51 COMPILER V6.12  SOURCE                                                                 08/15/2004 20:14:19 PAGE 10  

 552   1      }
 553          
 554          
 555          //below functions are for x5045
 556          /*
 557          /////////////////////////////////////////
 558          //
 559          //NAME: x_write
 560          //DESCRIPTION: WRITE MUL-BYTES TO X5045
 561          //CALL: x_outbyte,wait,x_wren_cmd
 562          //INPUT: x_address: address of x5045 000h-01ffh
 563          //       *psavedata :data pointer to be saved
 564          //		 amount: counter of data <0x10
 565          //RETURN:NONE
 566          ////////////////////////////////////////
 567          void x_write ( unsigned int x_address,unsigned char *psavedata,unsigned char amount)
 568          {
 569          	unsigned char  sendaddress,i,ch;
 570          	x_wren_cmd();
 571             // X_WP=1;
 572          	X_SCK=0;
 573          	wait(5);
 574          	X_CS=0;
 575          	if ( x_address >=0x100 )
 576          	{	x_outbyte(0x0a);
 577          		x_address = x_address-0x100 ;
 578          	}
 579          	else
 580          	{
 581          		x_outbyte(0x02);
 582          	}
 583          	sendaddress=(unsigned char ) x_address;
 584          	x_outbyte(sendaddress);
 585          	for (i=0 ; i<amount ;i++)
 586          	{       ch=*psavedata;
 587          		x_outbyte( ch );
 588                          psavedata++;
 589                          }
 590          	X_SCK=0;
 591          	X_CS=1;
 592             // X_WP=1;
 593          	wait(6);
 594          }
 595          /////////////////////////////////////////
 596          //
 597          //NAME: x_read
 598          //DESCRIPTION: WRITE MUL-BYTES TO X5045
 599          //CALL: x_outbyte,x_inbyte;wait,x_wren_cmd
 600          //INPUT: address: address of x5045
 601          //		 amount: counter of data
 602          //RETURN:data pointer
 603          ////////////////////////////////////////
 604          
 605          unsigned char  * x_read( unsigned int address ,unsigned char  amount)
 606          {
 607          	unsigned char  * preaddata;
 608          	unsigned char  sendaddress,i;
 609          	unsigned char  readdata[10];
 610          	X_SCK=0;
 611          	wait(6);
 612          	X_CS=0;
 613          	if ( address >=0x100 )
C51 COMPILER V6.12  SOURCE                                                                 08/15/2004 20:14:19 PAGE 11  

 614          	{	x_outbyte(0x0b);
 615          		address=address-0x100;
 616          	}
 617          	else
 618          	{
 619          		x_outbyte(0x03);
 620          	}
 621          	sendaddress=(unsigned char ) address;
 622          	x_outbyte(sendaddress);
 623          	for ( i=0 ; i<amount ;i++)
 624          	{	readdata[i]=x_inbyte();
 625                   }
 626          
 627          	X_SCK=0;
 628          	X_CS=1;
 629          	preaddata=&readdata;
 630          	return(&readdata);
 631          }
 632          */
 633          /////////////////////////////////////////
 634          //
 635          //NAME: x_wren_cmd
 636          //DESCRIPTION: WRITE ENABLE
 637          //CALL: x_outbyte
 638          //INPUT:NONE
 639          //RETURN:NONE
 640          ////////////////////////////////////////
 641          void x_wren_cmd (void)
 642          {
 643   1      	X_SCK=0;
 644   1      	wait(3);
 645   1      	X_CS=0;
 646   1      	x_outbyte(0x06);
 647   1      	X_SCK=0;
 648   1      	X_CS=1;
 649   1      }
 650          /////////////////////////////////////////
 651          //
 652          //NAME: init_watchdog
 653          //DESCRIPTION: INIT WATCHDOG TO X5045
 654          //CALL: x_outbyte,x_wren_cmd
 655          //INPUT: ch=0:1.4S,ch=1: 600mS,ch=2 :200mS ch=3 : disablewatchdog
 656          //RETURN:NONE
 657          ////////////////////////////////////////
 658          void init_watchdog(unsigned char ch)
 659          {	if (!( ch > 0x03))
 660   1      	{
 661   2         // X_WP=1;
 662   2      	x_wren_cmd();
 663   2      	X_SCK=0;
 664   2      	X_CS=0;
 665   2      	x_outbyte(0x01);
 666   2      	ch=ch<<4;
 667   2      	x_outbyte(ch);
 668   2      	X_SCK=0;
 669   2      	X_CS=1;
 670   2       //   X_WP=1;
 671   2      	}
 672   1      }
 673          /*
 674          unsigned char x_inbyte( void )
 675          {
C51 COMPILER V6.12  SOURCE                                                                 08/15/2004 20:14:19 PAGE 12  

 676          	unsigned char  i;
 677          	unsigned char  ch=0x00;
 678          	for ( i=0 ; i<8 ;i++ )
 679          	{	X_SCK=1;
 680          		X_SCK=0;
 681          		ch=ch*2;
 682          		if (X_SO)
 683                  {  ch=ch+1;
 684                  }
 685           	}
 686          	return ( ch );
 687          }
 688          */
 689          void x_outbyte( unsigned char ch) 	//ch:data to be sent to x5045
 690          {
 691   1      	unsigned char  i;
 692   1      	for ( i=0 ; i<8 ; i++ )
 693   1      	{	X_SCK=0;
 694   2      		X_SI=(bit)(ch & 0x80);
 695   2      		ch=ch*2;
 696   2      		X_SCK=1;
 697   2      	 }
 698   1      	 X_SI=0;
 699   1      }
 700          //X5045 PROG END ///////////////////////
 701          /////////////////////////////////////////
 702          //
 703          //NAME: wait
 704          //DESCRIPTION: WAIT
 705          //CALL: NONE
 706          //INPUT: time:mS <356
 707          //RETURN:NONE
 708          ////////////////////////////////////////
 709          void wait(unsigned int time)
 710          {
 711   1      	X_CS=0;
 712   1      	X_CS=1;
 713   1          time=time*83;
 714   1      	for ( time; time>=1 ; time--)
 715   1      	{
 716   2          }
 717   1      	X_CS=0;
 718   1      	X_CS=1;
 719   1      }
 720          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2552    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     24      29
   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 + -