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

📄 t1main.lst

📁 基于FPGA 的直接数字频率合成信号发生器(DDS)设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
 236   2      			break;
 237   2      	}
 238   1      }  
 239          
 240          //-----------------------------------------------
 241          void DownKeyProc(void)
C51 COMPILER V6.02  T1MAIN                                                                 09/11/2005 06:36:51 PAGE 5   

 242          {
 243   1      	switch(DisStatus){
 244   2      		case Working_DS:
 245   2      		 	if( frequency_AD9835 <= 1000 )
 246   2      				frequency_AD9835 = 1000;
 247   2      			else
 248   2      			 	frequency_AD9835 -= 100;
 249   2      			testAD9875(frequency_AD9835);
 250   2      			break;
 251   2      		case SetupFrequency:
 252   2      			if( frequencyBCDCode[shiftBit]>0 )
 253   2      				frequencyBCDCode[shiftBit]--;
 254   2      			else
 255   2      			frequencyBCDCode[shiftBit]=9;
 256   2      		
 257   2      			break;
 258   2      	    case PSKFrequency:
 259   2       	        break;
 260   2      		case ASKFrequency:
 261   2       	        break;
 262   2      		default:
 263   2      			break;
 264   2      	}
 265   1      }
 266          
 267          //-------------------------------------------------------------------------------------
 268          //Yes键处理函数
 269          void YesKeyProc(void)
 270          {
 271   1      	switch(DisStatus){
 272   2      		case Working_DS:
 273   2      			break;
 274   2      		case SetupFrequency:
 275   2      			updateFrequency();
 276   2      			break;
 277   2      		case PSKFrequency:
 278   2      		    
 279   2       	        break;
 280   2      		case ASKFrequency:
 281   2       	        break;
 282   2      		default:
 283   2      			break;
 284   2      	}
 285   1      }      
 286          
 287          
 288          // process psk wave
 289          
 290          
 291          
 292           //--------------------------------------------
 293          
 294          
 295          //--------------按键处理函数------------------
 296          void KeyProc(void)
 297          {
 298   1           switch(KeyCode)
 299   1           {
 300   2               case Status_KEYCODE:
 301   2                    StatusKeyProc();
 302   2                    break;
 303   2               case Shiftleft_KEYCODE:
C51 COMPILER V6.02  T1MAIN                                                                 09/11/2005 06:36:51 PAGE 6   

 304   2                    ShiftKeyleftProc();
 305   2                    break;
 306   2      		 case Shiftright_KEYCODE:
 307   2                    ShiftKeyrightProc();
 308   2                    break;
 309   2               case Up_KEYCODE: 
 310   2                    UpKeyProc();
 311   2                    break; 
 312   2               case Down_KEYCODE:
 313   2                    DownKeyProc();
 314   2                    break;
 315   2               case Yes_KEYCODE:
 316   2                    YesKeyProc();
 317   2                    break;
 318   2          
 319   2               default:
 320   2                    break;  
 321   2           }
 322   1      }
 323          
 324          //-------------------------------------------------------------------------------------------
 325          
 326          //start:0~7,
 327          //end:0~7, and start<=end
 328          void ZeroProcess(unsigned char start, unsigned char end)
 329          {
 330   1          unsigned char i;
 331   1      	for( i=start;i<=end;i++ ){
 332   2      	  if( ReturnLedBufData(i)==0 )
 333   2      	    SetupHideBit(i, 1);
 334   2      	  else
 335   2      	    break;
 336   2      	}
 337   1      }
 338          
 339          void LongTypeVarToDisBuf(unsigned long *pLong)
 340          {
 341   1        	KeilLongToBcd((unsigned char *)pLong, &(BcdBuf[0]));
 342   1          //unsigned char SetupDisBuffer(unsigned char DisBit, unsigned char Dp, unsigned char Data, unsigned ch
             -ar transMode);
 343   1      	//注意:long型值的最高位在BcdBuf[0]中,由于只有8为数码管,故没有显示.
 344   1      	SetupDisBuffer(0, 0, BcdBuf[1]>>4, 0);
 345   1      	SetupDisBuffer(1, 0, BcdBuf[1]&0x0f, 0);
 346   1      	SetupDisBuffer(2, 0, BcdBuf[2]>>4, 0);
 347   1      	SetupDisBuffer(3, 0, BcdBuf[2]&0x0f, 0);
 348   1      	SetupDisBuffer(4, 0, BcdBuf[3]>>4, 0);
 349   1      	SetupDisBuffer(5, 0, BcdBuf[3]&0x0f, 0);
 350   1      	SetupDisBuffer(6, 0, BcdBuf[4]>>4, 0);
 351   1      	SetupDisBuffer(7, 0, BcdBuf[4]&0x0f, 0);
 352   1      }
 353          
 354          //----------------------------------------
 355          void UpdateDisplay(void)
 356          {
 357   1          unsigned char i;
 358   1      	GoOutAllLED();	
 359   1      	SetupHideBit(0xFF, 0);
 360   1      	SetupFlashBit(0xFF, 0);
 361   1      
 362   1      	switch(DisStatus){
 363   2      		case Working_DS:
 364   2      			LongTypeVarToDisBuf(&frequency_AD9835);
C51 COMPILER V6.02  T1MAIN                                                                 09/11/2005 06:36:51 PAGE 7   

 365   2      			ZeroProcess(0, 6);
 366   2      			break;
 367   2      		case SetupFrequency:
 368   2      			for( i=0; i<6; i++ ){
 369   3      				SetupDisBuffer(i, 0, frequencyBCDCode[i], 0);
 370   3      				SetupFlashBit(shiftBit, 1);
 371   3      			}
 372   2      			for( i=6; i<8; i++ ){
 373   3      				SetupDisBuffer(i, 0, frequencyBCDCode[i], 0);
 374   3      			
 375   3      			}
 376   2      			break;
 377   2      		case PSKFrequency:
 378   2      				SetupDisBuffer( 0, 0, 0x0E, 0);
 379   2      				SetupDisBuffer( 1, 0, 5, 0);
 380   2       	         break;
 381   2      		case ASKFrequency:
 382   2      				SetupDisBuffer( 0, 0, 0x0A, 1);
 383   2      				SetupDisBuffer( 1, 0, 5, 0);
 384   2       	         break;
 385   2      		default:
 386   2      			 break;
 387   2      	      }
 388   1        		Display();
 389   1      }
 390          //-------------------------------------------------------------------------------------  					
 391          //系统初始化函
 392          void Sys_Init(void)
 393          {   int i;
 394   1          EA=0;
 395   1          IE=0x00;                   /* inhibit all interrupt */
 396   1          IP=0x00;                   /* ;		    */
 397   1          TCON=0x00;
 398   1          SCON=0x00;
 399   1         
 400   1          TMOD = 0x12;//Timer 1 is used for TIME
 401   1                      //Mode  1 (16bit),C/T=0(TIME),Gate=0
 402   1          TCON = 0x00;
 403   1          TH1 = 0xf8;
 404   1          TL1 = 0x30;
 405   1          TR1 = 0;
 406   1          ET1 = 1;
 407   1      //  timer0 100us
 408   1          TH0 = 56;
 409   1          TL0 = 56;
 410   1          TR0 = 0;
 411   1          ET0 = 0;	
 412   1          //Initial显示和按键初始化
 413   1          //KeyTimer = 200;
 414   1          KeyCode = 0xF0;
 415   1          KeyMark = 0;
 416   1          DisStatus = Working_DS;
 417   1      
 418   1          //外中断0:int0
 419   1          IT1=0;//Pulse
 420   1          EX1=1;
 421   1      
 422   1          InitialDisplayControl();
 423   1          for( i=0;i<1000;i++ ){
 424   2             FeedDog();
 425   2          }
 426   1      
C51 COMPILER V6.02  T1MAIN                                                                 09/11/2005 06:36:51 PAGE 8   

 427   1          Display();
 428   1          TR1=1;
 429   1          EA = 1;
 430   1      
 431   1      	frequency_AD9835 = 1000000;
 432   1      }
 433          void KeyScan(void){
 434   1      	if(KeyMark){
 435   2      	  KeyCode = Read7279KeyCode();
 436   2      	  KeyProc();
 437   2      	  KeyTimer = 0;
 438   2      	  KeyMark = 0;
 439   2      	}
 440   1          if( KeyTimer>=60 ){
 441   2      	  EX1 = 1;
 442   2      	}
 443   1      }
 444          
 445          void main(void)
 446          {
 447   1      	fselect = 0;
 448   1      	PSEL0 = 0;
 449   1      	PSEL1 = 0;
 450   1      	Sys_Init();
 451   1      	testAD9875(frequency_AD9835);
 452   1      
 453   1          while( 1 )
 454   1          { 
 455   2            FeedDog();
 456   2            KeyScan();
 457   2      	
 458   2            UpdateDisplay();
 459   2          }
 460   1      }
 461          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1169    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       8
   IDATA SIZE       =     17    ----
   BIT SIZE         =      5    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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