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

📄 c_main.lst

📁 这是电信语音聊天设备的源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 318          {
 319   1      	unsigned char xdata i;
 320   1      	for (i = 0; i < 32; i++)
 321   1      	{
 322   2      		XBYTE[M_NET1] = i;
 323   2      		XBYTE[M_NET2] = 0x83;
 324   2      	}
 325   1      }
 326          
 327          void delay_time(unsigned int subtime)
 328          {
 329   1      	unsigned int i;
 330   1      	while(subtime)
 331   1      	{
 332   2      		subtime--;
 333   2      		i = (subtime * 2) / 2;
 334   2      	}
 335   1      }
 336          void val_init()
 337          {
 338   1      	unsigned char xdata temp;
 339   1      	XBYTE[M_NET2] = 0x15;
 340   1      	no_sound(0xcb);
 341   1      	MS_MT9041 = 1;
 342   1      	rv0_flag = 0;
 343   1      	trk_e1_led = 0xf3;
 344   1      	trk = 0;
 345   1      	tone_set = 0x97;
 346   1      	send_count = 0;
 347   1      	time_route = 0;
 348   1      	time_flag = 1;
 349   1      	time_counter = 0;
 350   1      	second = 0;
 351   1      	t50_flag = 0;
 352   1      	t100_flag = 0;
 353   1      	voltage_low_flag = 0;
 354   1      	ID_num_length = 0;
 355   1      	for(temp = 0;temp < 16;temp++)
 356   1      	{
 357   2      		p_data[temp] = IDLE;
 358   2      		id_call[temp] = IDLE;
 359   2      	}
C51 COMPILER V3.96,  SN-83203013  C_MAIN                                                   03/06/04  11:31:46  PAGE 7   

 360   1      	iii = 0;
 361   1      	for(temp = 0;temp < TRK_MAX;temp++)
 362   1      	{
 363   2      		sys_temp[temp] = IDLE;
 364   2      	}
 365   1      }
 366          watchdag() interrupt 0 using 0
 367          {
 368   1      	//	goto LOOP;
 369   1      }
 370          
 371          time_0() interrupt 1 using 1
 372          {
 373   1      	TH0 = -(50000 / 256);
 374   1      	TL0 = -(50000 % 256);
 375   1      	t50_flag = 1;
 376   1      }
 377          voltage_low() interrupt 2 using 2
 378          {
 379   1      	voltage_low_flag = 1;
 380   1      }
 381          serial() interrupt 4 using 3//串口接收和发送
 382          {
 383   1      	unsigned char idata temp;
 384   1      	EA = 0;
 385   1      	if(TI)
 386   1      	{
 387   2      		TI = 0;
 388   2      		if(send_data_start < send_data_length)
 389   2      		{
 390   3      			SBUF = send_frame[send_data_start];
 391   3      			send_data_start++;
 392   3      		}
 393   2      		else
 394   2      		{
 395   3      			send_count = 1;
 396   3      		}
 397   2      	}
 398   1      	if(RI)
 399   1      	{
 400   2      		rvbuf[rvbh] = temp = SBUF;
 401   2      		RI = 0;
 402   2      		switch(rv_state)
 403   2      		{
 404   3      			case 0:
 405   3      			{
 406   4      				if(temp == 0x7e)
 407   4      				{
 408   5      					rv_state = 1;
 409   5      				}
 410   4      			}
 411   3      			break;
 412   3      			case 1:
 413   3      			{
 414   4      				if(temp = 0x7e)
 415   4      				{
 416   5      					rv_state = 2;
 417   5      				}
 418   4      				else
 419   4      				{
 420   5      					rv_state = 0;
 421   5      				}
C51 COMPILER V3.96,  SN-83203013  C_MAIN                                                   03/06/04  11:31:46  PAGE 8   

 422   4      			}
 423   3      			break;
 424   3      			case 2:
 425   3      			{
 426   4      				rv_ctrl_byte = temp;
 427   4      				if((rv_ctrl_byte & 1) == 0)
 428   4      				{
 429   5      					rv_start = rvbh;
 430   5      					rv_state = 3;
 431   5      				}
 432   4      				else
 433   4      				{
 434   5      					rv_state = 5;
 435   5      				}
 436   4      			}
 437   3      			break;
 438   3      			case 3:
 439   3      			{
 440   4      				if(temp == 0x77)
 441   4      				{
 442   5      					rv_state = 4;
 443   5      				}
 444   4      				else
 445   4      				{
 446   5      					rv0_flag = 0;
 447   5      				}
 448   4      			}
 449   3      			break;
 450   3      			case 4:
 451   3      			{
 452   4      				if(temp == 0x77)
 453   4      				{
 454   5      					decode_flag = 1;
 455   5      					if(rv0_flag)
 456   5      					{
 457   6      						rv_end = (rvbh - 3) & 0x7ff;
 458   6      					}
 459   5      					else
 460   5      					{
 461   6      						rv_end = (rvbh - 2) & 0x7ff;
 462   6      					}
 463   5      					rv_state = 0;
 464   5      				}
 465   4      				else if(temp == 0)
 466   4      				{
 467   5      					rv0_flag = 1;
 468   5      					rv_state = 3;
 469   5      				}
 470   4      				else
 471   4      				{
 472   5      					rv_err = 1;
 473   5      					rv_state = 3;
 474   5      				}
 475   4      			}
 476   3      			break;
 477   3      			case 5:
 478   3      			{
 479   4      				if(temp != rv_ctrl_byte)
 480   4      				{
 481   5      					rv_err = 1;
 482   5      				}
 483   4      				rv_state = 6;
C51 COMPILER V3.96,  SN-83203013  C_MAIN                                                   03/06/04  11:31:46  PAGE 9   

 484   4      			}
 485   3      			break;
 486   3      			case 6:
 487   3      			{
 488   4      				if(temp == 0x77)
 489   4      				{
 490   5      					rv_state = 7;
 491   5      				}
 492   4      			}
 493   3      			break;
 494   3      			case 7:
 495   3      			{
 496   4      				if(temp == 0x77)
 497   4      				{
 498   5      					decode_flag = 1;
 499   5      					rv_state = 0;
 500   5      				}
 501   4      				else
 502   4      				{
 503   5      					rv_state = 6;
 504   5      				}
 505   4      			}
 506   3      			break;
 507   3      			default:
 508   3      			{
 509   4      				rv_state = 0;
 510   4      			}
 511   3      			break;
 512   3      		}
 513   2      		rvbh = (rvbh + 1) & 0x7ff;
 514   2      	}
 515   1      	EA = 1;
 516   1      }
 517          
 518          main()
 519          {
 520   1      	unsigned char xdata temp;
 521   1      	LED = 1;
 522   1      	EA = 0;
 523   1      	IP = 0x10;
 524   1      	SCON = 0x50;
 525   1      	PCON = PCON | 0x80;
 526   1      	TMOD = 0x21;
 527   1      	TH0 = -(50000 / 256);
 528   1      	TL0 = -(50000 % 256);
 529   1      
 530   1      #ifdef ICD51_MODE
              	PCON = PCON & 0x7f;
              	TH1 = 0xfa;
              	TL1 = 0xfa;		
              #else
 535   1      	PCON = PCON | 0x80;
 536   1      	TH1 = 0xf3;
 537   1      	TL1 = 0xf3;
 538   1      #endif
 539   1      	TCON = 0x50;
 540   1      	IE = 0x12;
 541   1      	LED = 0;
 542   1      	val_init();
 543   1      	init_back();
 544   1      	i_comm();     //通信初始化
 545   1      	i_net();      //初始化为无音
C51 COMPILER V3.96,  SN-83203013  C_MAIN                                                   03/06/04  11:31:46  PAGE 10  

 546   1      	hdlc_init();  //HDLC初始化
 547   1      	user_e1_init();//数字中继用户初始化
 548   1      	noise_ctrl();
 549   1      	chat_common_init();
 550   1      	chat_private_init();
 551   1      	dtmf_init();
 552   1      	yukong_init();
 553   1      	interface_init();//系统自检
 554   1      	clear_DS21554(); 
 555   1      	i_mfc();
 556   1      	mfc_init();
 557   1      	EA = 1;
 558   1      	init_DS21554();
 559   1      	delay_time(200);
 560   1      	WDI = !WDI;
 561   1      	IE = 0x97;
 562   1      	while(1)
 563   1      	{
 564   2      		if(voltage_low_flag)//电压过低检测
 565   2      		{
 566   3      			voltage_low_flag = 0;
 567   3      			command(2,1,1,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE,IDLE);
 568   3      		}
 569   2      		if(time_counter >= 20)//1秒时间检测
 570   2      		{
 571   3      			second++;
 572   3      			time_counter = time_counter - 20;
 573   3      			read_warn_1s();
 574   3      			if(second >= 60)
 575   3      			{
 576   4      				read_warn();
 577   4      				second = 0;
 578   4      			}
 579   3      		}
 580   2      		EA = 0;
 581   2      		if(t50_flag)
 582   2      		{
 583   3      			EA = 1;
 584   3      			time_counter++;
 585   3      			t50_flag = 0;
 586   3      			LED = !LED;
 587   3      			read_signalling();
 588   3      			mfc_read();
 589   3      			trk_out_ctrl();
 590   3      			trk_in_ctrl();
 591   3      			audio_scan_50ms();
 592   3      			if(t100_flag)
 593   3      			{
 594   4      				t100_flag = 0;
 595   4      				WDI = !WDI;
 596   4      				mfc_test100();
 597   4      				dtmf_test100();
 598   4      				audio_manage_100ms();
 599   4      			}
 600   3      			else
 601   3      			{
 602   4      				t100_flag = 1;
 603   4      				if(decode_flag)
 604   4      				{
 605   5      					decode_flag = 0;
 606   5      					decode_hdlc_frame();
 607   5      					send_count = 0;
C51 COMPILER V3.96,  SN-83203013  C_MAIN                                                   03/06/04  11:31:46  PAGE 11  

 608   5      					SBUF = send_frame[send_data_start];
 609   5      					send_data_start++;
 610   5      				}
 611   4      			}
 612   3      		}
 613   2      		EA = 1;
 614   2      	}
 615   1      }
C51 COMPILER V3.96,  SN-83203013  C_MAIN                                                   03/06/04  11:31:46  PAGE 12  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION interface_init (BEGIN)
                                           ; SOURCE LINE # 42
                                           ; SOURCE LINE # 43
                                           ; SOURCE LINE # 46
0000 E4            CLR     A
0001 900000  R     MOV     DPTR,#audio_dtmf_count
0004 F0            MOVX    @DPTR,A
                                           ; SOURCE LINE # 47
0005 900000  R     MOV     DPTR,#yukong_count
0008 F0            MOVX    @DPTR,A
                                           ; SOURCE LINE # 48
0009 900000  R     MOV     DPTR,#i
000C F0            MOVX    @DPTR,A
000D         ?C0001:
000D 900000  R     MOV     DPTR,#i
0010 E0            MOVX    A,@DPTR
0011 FB            MOV     R3,A
0012 C3            CLR     C
0013 940C          SUBB    A,#0CH
0015 4003          JC      $ + 5H
0017 020000  R     LJMP    ?C0002
                                           ; SOURCE LINE # 49
                                           ; SOURCE LINE # 50
001A EB            MOV     A,R3
001B 7F00          MOV     R7,#00H
001D FE            MOV     R6,A
001E EF            MOV     A,R7
001F 2404          ADD     A,#04H
0021 F582          MOV     DPL,A

⌨️ 快捷键说明

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