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

📄 lpc935.src

📁 PHILIPS LPC935 MCU 利用其8路AD转换器,对监测对象进行数据采集,然后通过UART将采集到的数据发送到PC上位机
💻 SRC
📖 第 1 页 / 共 3 页
字号:
			; SOURCE LINE # 308
	MOV  	R7,i?040
	LCALL	_Relay_On
; 			Cnt_Long_10us=0;
			; SOURCE LINE # 309
	CLR  	A
	MOV  	Cnt_Long_10us+03H,A
	MOV  	Cnt_Long_10us+02H,A
	MOV  	Cnt_Long_10us+01H,A
	MOV  	Cnt_Long_10us,A
?C0021:
; 			while (Cnt_Long_10us<_2S);
			; SOURCE LINE # 310
	CLR  	A
	MOV  	R7,#020H
	MOV  	R6,#04EH
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,Cnt_Long_10us+03H
	MOV  	R2,Cnt_Long_10us+02H
	MOV  	R1,Cnt_Long_10us+01H
	MOV  	R0,Cnt_Long_10us
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0021
; 
; 		}
			; SOURCE LINE # 312
?C0020:
	INC  	i?040
	MOV  	A,i?040
	CLR  	C
	SUBB 	A,#03H
	JC   	?C0018
?C0019:
; 		
; 		Cnt_Long_10us=0;
			; SOURCE LINE # 314
	CLR  	A
	MOV  	Cnt_Long_10us+03H,A
	MOV  	Cnt_Long_10us+02H,A
	MOV  	Cnt_Long_10us+01H,A
	MOV  	Cnt_Long_10us,A
?C0023:
; 		while (Cnt_Long_10us<_1S);
			; SOURCE LINE # 315
	CLR  	A
	MOV  	R7,#010H
	MOV  	R6,#027H
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,Cnt_Long_10us+03H
	MOV  	R2,Cnt_Long_10us+02H
	MOV  	R1,Cnt_Long_10us+01H
	MOV  	R0,Cnt_Long_10us
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0023
?C0024:
; 
; 		for (i=0;i<3;i++)
			; SOURCE LINE # 317
	CLR  	A
	MOV  	i?040,A
?C0025:
; 		{
			; SOURCE LINE # 318
; 			Relay_Off(i);
			; SOURCE LINE # 319
	MOV  	R7,i?040
	LCALL	_Relay_Off
; 			Cnt_Long_10us=0;
			; SOURCE LINE # 320
	CLR  	A
	MOV  	Cnt_Long_10us+03H,A
	MOV  	Cnt_Long_10us+02H,A
	MOV  	Cnt_Long_10us+01H,A
	MOV  	Cnt_Long_10us,A
?C0028:
; 			while (Cnt_Long_10us<_1S);
			; SOURCE LINE # 321
	CLR  	A
	MOV  	R7,#010H
	MOV  	R6,#027H
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,Cnt_Long_10us+03H
	MOV  	R2,Cnt_Long_10us+02H
	MOV  	R1,Cnt_Long_10us+01H
	MOV  	R0,Cnt_Long_10us
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0028
; 		}
			; SOURCE LINE # 322
?C0027:
	INC  	i?040
	MOV  	A,i?040
	CLR  	C
	SUBB 	A,#03H
	JC   	?C0025
?C0026:
; 
; 	 	Cnt_Long_10us=0;
			; SOURCE LINE # 324
	CLR  	A
	MOV  	Cnt_Long_10us+03H,A
	MOV  	Cnt_Long_10us+02H,A
	MOV  	Cnt_Long_10us+01H,A
	MOV  	Cnt_Long_10us,A
?C0030:
; 		while (Cnt_Long_10us<_1S);
			; SOURCE LINE # 325
	CLR  	A
	MOV  	R7,#010H
	MOV  	R6,#027H
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R3,Cnt_Long_10us+03H
	MOV  	R2,Cnt_Long_10us+02H
	MOV  	R1,Cnt_Long_10us+01H
	MOV  	R0,Cnt_Long_10us
	CLR  	C
	LCALL	?C?ULCMP
	JC   	?C0030
;     }
			; SOURCE LINE # 326
?C0003:
; 
; 
; 		if (Flag_10ms)
			; SOURCE LINE # 329
	JNB  	Flag_10ms,?C0032
; 		{
			; SOURCE LINE # 330
; 			Flag_10ms=false;
			; SOURCE LINE # 331
	CLR  	Flag_10ms
; 			Cnt_10ms++;
			; SOURCE LINE # 332
	INC  	Cnt_10ms
; 			if (Cnt_10ms>100) 
			; SOURCE LINE # 333
	MOV  	A,Cnt_10ms
	SETB 	C
	SUBB 	A,#064H
	JC   	?C0032
; 			{
			; SOURCE LINE # 334
; 				Flag_Second=true;
			; SOURCE LINE # 335
	SETB 	Flag_Second
; 				Cnt_10ms=0;
			; SOURCE LINE # 336
	CLR  	A
	MOV  	Cnt_10ms,A
; 			}
			; SOURCE LINE # 337
; 		}
			; SOURCE LINE # 338
?C0032:
; 
; 		if (Flag_Second)
			; SOURCE LINE # 340
	JNB  	Flag_Second,?C0034
; 		{	
			; SOURCE LINE # 341
; 			Flag_Second=false;
			; SOURCE LINE # 342
	CLR  	Flag_Second
; 			Second++;
			; SOURCE LINE # 343
	INC  	Second
; 			Comm_LED=~Comm_LED;
			; SOURCE LINE # 344
	CPL  	Comm_LED
; 
; 			SBUF=Solar_Vol;
			; SOURCE LINE # 346
	MOV  	SBUF,Solar_Vol
?C0035:
; 			while (!TI);
			; SOURCE LINE # 347
	JNB  	TI,?C0035
?C0036:
; 			TI=0;
			; SOURCE LINE # 348
	CLR  	TI
; 
; 			SBUF=Battery_Vol;
			; SOURCE LINE # 350
	MOV  	SBUF,Battery_Vol
?C0037:
; 			while (!TI);
			; SOURCE LINE # 351
	JNB  	TI,?C0037
?C0038:
; 			TI=0;
			; SOURCE LINE # 352
	CLR  	TI
; 			
; 			if (Second>60) 
			; SOURCE LINE # 354
	MOV  	A,Second
	SETB 	C
	SUBB 	A,#03CH
	JC   	?C0034
; 			{	Minute++;
			; SOURCE LINE # 355
	INC  	Minute+01H
	MOV  	A,Minute+01H
	JNZ  	?C0141
	INC  	Minute
?C0141:
; 				Second=0;
			; SOURCE LINE # 356
	CLR  	A
	MOV  	Second,A
; 			}
			; SOURCE LINE # 357
; 			
; 		}
			; SOURCE LINE # 359
?C0034:
; 
; 
; 		if(RecFlag) 
			; SOURCE LINE # 362
	JNB  	RecFlag,?C0040
; 		{	
			; SOURCE LINE # 363
; 			RecFlag=false;
			; SOURCE LINE # 364
	CLR  	RecFlag
; 			Temp_Word=IR_Rec_Buf;
			; SOURCE LINE # 365
	MOV  	Temp_Word,IR_Rec_Buf
	MOV  	Temp_Word+01H,IR_Rec_Buf+01H
; 			Temp_Word>>=8;
			; SOURCE LINE # 366
	MOV  	A,Temp_Word
	MOV  	Temp_Word+01H,A
	MOV  	Temp_Word,#00H
; 			SBUF=(byte)Temp_Word;
			; SOURCE LINE # 367
	MOV  	SBUF,Temp_Word+01H
?C0041:
; 			while (!TI);
			; SOURCE LINE # 368
	JNB  	TI,?C0041
?C0042:
; 			TI=0;
			; SOURCE LINE # 369
	CLR  	TI
; 
; 			SBUF=(byte)IR_Rec_Buf;
			; SOURCE LINE # 371
	MOV  	SBUF,IR_Rec_Buf+01H
?C0043:
; 			while (!TI);
			; SOURCE LINE # 372
	JNB  	TI,?C0043
?C0044:
; 			TI=0;	
			; SOURCE LINE # 373
	CLR  	TI
; 
; //			SBUF=Get_Remote_Key(IR_Rec_Buf);
; //			while (!TI);
; //			TI=0;	
; 
; 			Send_IR_Bit_Cnt=17;
			; SOURCE LINE # 379
	MOV  	Send_IR_Bit_Cnt,#011H
; 			IR_Data=IR_Rec_Buf;
			; SOURCE LINE # 380
	MOV  	IR_Data,IR_Rec_Buf
	MOV  	IR_Data+01H,IR_Rec_Buf+01H
; 
; 		}	//end RecFlag
			; SOURCE LINE # 382
?C0040:
; 
; 		if (Flag_100us) 
			; SOURCE LINE # 384
	JB   	Flag_100us,$ + 6H
	LJMP 	?C0001
; 		{
			; SOURCE LINE # 385
; 			Flag_100us=false;
			; SOURCE LINE # 386
	CLR  	Flag_100us
; 			if (ADC_Time<8)             //取8次然后求平均
			; SOURCE LINE # 387
	MOV  	A,ADC_Time
	CLR  	C
	SUBB 	A,#08H
	JNC  	?C0046
; 			{
			; SOURCE LINE # 388
; 				ADC_Time++;
			; SOURCE LINE # 389
	INC  	ADC_Time
; 				ADCON0=0x05;			//选择转换触发模式;并立即启动
			; SOURCE LINE # 390
	MOV  	ADCON0,#05H
; 				ADC_Solar+=AD0DAT0;		//将AD转换获得的数据存入
			; SOURCE LINE # 391
	MOV  	R7,AD0DAT0
	MOV  	A,R7
	ADD  	A,ADC_Solar+01H
	MOV  	ADC_Solar+01H,A
	CLR  	A
	ADDC 	A,ADC_Solar
	MOV  	ADC_Solar,A
; 				ADCON0&=0xF7;			//清除中断完成标志
			; SOURCE LINE # 392
	ANL  	ADCON0,#0F7H
; 
; 				ADCON1=0x05;			//选择转换触发模式;并立即启动
			; SOURCE LINE # 394
	MOV  	ADCON1,#05H
; 				ADC_Battery+=AD1DAT0;	//将AD转换获得的数据存入
			; SOURCE LINE # 395
	MOV  	R7,AD1DAT0
	MOV  	A,R7
	ADD  	A,ADC_Battery+01H
	MOV  	ADC_Battery+01H,A
	CLR  	A
	ADDC 	A,ADC_Battery
	MOV  	ADC_Battery,A
; 				Battery_Vol=AD1DAT0;
			; SOURCE LINE # 396
	MOV  	Battery_Vol,AD1DAT0
; 				ADCON1&=0xF7;			//清除中断完成标志
			; SOURCE LINE # 397
	ANL  	ADCON1,#0F7H
; 			}
			; SOURCE LINE # 398
	LJMP 	?C0001
?C0046:
; 			else
; 			{
			; SOURCE LINE # 400
; 				ADC_Time=0;
			; SOURCE LINE # 401
	CLR  	A
	MOV  	ADC_Time,A
; 
; 				ADC_Solar>>=3;         //*8
			; SOURCE LINE # 403
	MOV  	A,ADC_Solar+01H
	MOV  	R6,ADC_Solar
	MOV  	R0,#03H
?C0142:
	XCH  	A,R6
	CLR  	C
	RRC  	A
	XCH  	A,R6
	RRC  	A
	DJNZ 	R0,?C0142
	MOV  	ADC_Solar+01H,A
	MOV  	ADC_Solar,R6
; 				Solar_Vol=(byte)ADC_Solar;
			; SOURCE LINE # 404
	MOV  	Solar_Vol,A
; 				ADC_Solar=0;
			; SOURCE LINE # 405
	CLR  	A
	MOV  	ADC_Solar,A
	MOV  	ADC_Solar+01H,A
; 				
; 				ADC_Battery>>=3;         //*8
			; SOURCE LINE # 407
	MOV  	A,ADC_Battery+01H
	MOV  	R6,ADC_Battery
	MOV  	R0,#03H
?C0143:
	XCH  	A,R6
	CLR  	C
	RRC  	A
	XCH  	A,R6
	RRC  	A
	DJNZ 	R0,?C0143
	MOV  	ADC_Battery+01H,A
	MOV  	ADC_Battery,R6
; 				Battery_Vol=(byte)ADC_Battery;
			; SOURCE LINE # 408
	MOV  	Battery_Vol,A
; 				ADC_Battery=0;
			; SOURCE LINE # 409
	CLR  	A
	MOV  	ADC_Battery,A
	MOV  	ADC_Battery+01H,A
; 			}
			; SOURCE LINE # 410
; 		}
			; SOURCE LINE # 411
; 
; 	 }
			; SOURCE LINE # 413
	LJMP 	?C0001
; END OF main

; 
; 
; 		
; 		switch (State) {
; 			
; 			case State_Idle:
; 				break;	
; 			
; 				
; 			case 	State_PowerDown:
; 				break;
; 				
; 			case State_Wait:
; 				break;
; 			
; 			case State_Duration:
; 		
; 				break;
; 		}
; 
; 		//**********************************************************
; 		if (Flag_10ms) {
; 			Flag_10ms=0;
; 			if (ScanKeyDelay!=0) {
; 				LED=On;
; 				ScanKeyDelay--;
; 			}
; 			else	LED=Off;	
; 			
;         		if(!(CMP1&0x02)) {	//比较器输出,和CPU同步以允许软件进行读取。
;                			Ligth_Low_Cnt++;
;                			//LED=On;
;                 	}
;                 	else	
;                		{	Ligth_High_Cnt++;
; 				//LED=Off;
; 			}
; 
; 			if (ScanKeyEn) {
; 				if (!Key_Test) {
; 					ScanKeyDelay=10;
; 					ScanKeyEn=0;
; 
; 				}  //  if (!Key_Set)
; 
; 			}//if (ScanKeyEn)
; 		}//if (Flag_10ms) {
; 
; 
; 		//********************************************************
; 		if (UART_Data) {
; 			UART_Data=0;
; 		}
; 
; 		//********************************************************
; 
; 
;               //************************************************************
;               
;               
;               if (Write_Setting) 
; 			  {
;   
;         	 }
; 		
; }	// end main()
; 
; 
; //**************************************************
; 
; 
; 
; void Init_hw(void)

	RSEG  ?PR?Init_hw?LPC935
Init_hw:
			; SOURCE LINE # 486
; {
			; SOURCE LINE # 487
; 	P2M1=0x00;
			; SOURCE LINE # 488
	CLR  	A
	MOV  	P2M1,A
; 	P2M2=0xfC;
			; SOURCE LINE # 489
	MOV  	P2M2,#0FCH
; 	P1M1=0x00;
			; SOURCE LINE # 490
	MOV  	P1M1,A
; 	P1M2=0xff;
			; SOURCE LINE # 491
	MOV  	P1M2,#0FFH
; 	P0M1=0x00;
			; SOURCE LINE # 492
	MOV  	P0M1,A
; 	P0M2=0xff;
			; SOURCE LINE # 493
	MOV  	P0M2,#0FFH
; 	DIVM=0;
			; SOURCE LINE # 494
	MOV  	DIVM,A
; 	EA=0;
			; SOURCE LINE # 495
	CLR  	EA
; 
; 	TX_DATA_PIN=1;   //turn off TX IR
			; SOURCE LINE # 497
	SETB 	TX_DATA_PIN
; }
			; SOURCE LINE # 498
	RET  	
; END OF Init_hw

; 
; //**************************************************
; //串口 9600BAUDRATE N 8 1
; // Baudrate = CCLK [BRGR1BRGR0+16]
; // CCLK=4,000,000;
; // 9600=4000000(BRGR1BRGR0+16)
; //      BRGR1BRGR0=4000000/9600-16 =400; BRGR1BRGR0=0x190H
; //
; void UART_init()

	RSEG  ?PR?UART_init?LPC935
UART_init:
			; SOURCE LINE # 507
; {
			; SOURCE LINE # 508
; 
; 	SCON=0x50;  	//使能接收选择串口模式1
			; SOURCE LINE # 510
	MOV  	SCON,#050H
; 	SSTAT=0xE0; 	//选择独立的Tx/Rx中
			; SOURCE LINE # 511
	MOV  	SSTAT,#0E0H
; 	BRGR0=0xF0; 	//9600 baud @ 7.373MHz
			; SOURCE LINE # 512
	MOV  	BRGR0,#0F0H
; 	BRGR1=0x02;
			; SOURCE LINE # 513
	MOV  	BRGR1,#02H
; //	BRGR0=0x90; 	//9600 baud @ 4MHz
; //	BRGR1=0x01; 	//
; 	BRGCON =0x03; 	//使能BRG
			; SOURCE LINE # 516
	MOV  	BRGCON,#03H
; 	ESR=1; 		//ESR=Enable Serial Recieve
			; SOURCE LINE # 517
	SETB 	ESR
; //	EST=1; 	//EST=Enable Serial Transmit
; }
			; SOURCE LINE # 519
	RET  	
; END OF UART_init

CSEG	AT	00023H
	LJMP	Rcv_ISR

; 
; void Rcv_ISR() interrupt 4

	RSEG  ?PR?Rcv_ISR?LPC935
	USING	0
Rcv_ISR:
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR7
	USING	0
			; SOURCE LINE # 521
; { //当接收完一个字节RI置1进入Recieve中
; 	byte temp;
; 	EA=0; 		//
			; SOURCE LINE # 524
	CLR  	EA
; 	//   while(!RI) 		//等待接收完时RI置位
; 	temp=SBUF; 	//保存所读取的数据
			; SOURCE LINE # 526
;---- Variable 'temp?341' assigned to Register 'R7' ----
	MOV  	R7,SBUF
; 	RI=0; 		//RI清0以等待下次发

⌨️ 快捷键说明

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