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

📄 main.s

📁 AVR单片机系统开发经典实例部分源程序
💻 S
📖 第 1 页 / 共 2 页
字号:
; 			global_detect_close[0]=global_detect_close[1];
	lds R2,_global_detect_close+2
	lds R3,_global_detect_close+2+1
	sts _global_detect_close+1,R3
	sts _global_detect_close,R2
	.dbline 131
; 			global_detect_close[1]=global_detect_close[2];
	lds R2,_global_detect_close+4
	lds R3,_global_detect_close+4+1
	sts _global_detect_close+2+1,R3
	sts _global_detect_close+2,R2
	.dbline 132
; 			global_detect_close[2]=int16_temp1;
	sts _global_detect_close+4+1,R21
	sts _global_detect_close+4,R20
	.dbline 134
; 	//		global_detect_close[2]=int16_temp1;
; 		}
L29:
	.dbline 136
; 		//分闸线圈采样
; 		if(global_ad_counter%2==1)
	lds R24,_global_ad_counter
	lds R25,_global_ad_counter+1
	andi R24,1
	andi R25,0
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne L35
	.dbline 137
; 		{
	.dbline 139
; 		//	global_detect_trip[0]=int16_temp1;
; 			global_detect_trip[0]=global_detect_trip[1];
	lds R2,_global_detect_trip+2
	lds R3,_global_detect_trip+2+1
	sts _global_detect_trip+1,R3
	sts _global_detect_trip,R2
	.dbline 140
; 			global_detect_trip[1]=global_detect_trip[2];
	lds R2,_global_detect_trip+4
	lds R3,_global_detect_trip+4+1
	sts _global_detect_trip+2+1,R3
	sts _global_detect_trip+2,R2
	.dbline 141
; 			global_detect_trip[2]=int16_temp1;
	sts _global_detect_trip+4+1,R21
	sts _global_detect_trip+4,R20
	.dbline 143
; 		//	global_detect_trip[2]=int16_temp1;
; 		}
L35:
	.dbline 146
; 	//判断是否有码值变化
; 		//判断合闸数据
; 		if((global_detect_close[0]>2046)&&(global_detect_close[1]>2046)&&(global_detect_close[2]>2046))//&&(global_detect_close[3]>2045)&&(global_detect_close[4]>2045))
	ldi R24,2046
	ldi R25,7
	lds R2,_global_detect_close
	lds R3,_global_detect_close+1
	cp R24,R2
	cpc R25,R3
	brsh L41
	lds R2,_global_detect_close+2
	lds R3,_global_detect_close+2+1
	cp R24,R2
	cpc R25,R3
	brsh L41
	lds R2,_global_detect_close+4
	lds R3,_global_detect_close+4+1
	cp R24,R2
	cpc R25,R3
	brsh L41
	.dbline 147
; 		{
	.dbline 149
; 		//检测到动作标志赋值
; 			global_operation_detected_flag=1;
	ldi R24,1
	ldi R25,0
	sts _global_operation_detected_flag+1,R25
	sts _global_operation_detected_flag,R24
	.dbline 150
; 		}
L41:
	.dbline 160
; 	//	if(global_detect_close[0]>2049)
; 	//	{
; 	//		if((global_detect_close[1]-global_detect_close[0]>1)&&(global_detect_close[2]-global_detect_close[1]>1))//&&(global_detect_close[3]-global_detect_close[0]>1))
; 	//		{
; 			//检测到动作标志赋值
; 	//			global_operation_detected_flag=1;
; 	//		}
; 	//	}
; 		//判断分闸数据
; 		if((global_detect_trip[0]>2046)&&(global_detect_trip[1]>2046)&&(global_detect_trip[2]>2046))//&&(global_detect_trip[3]>2045)&&(global_detect_trip[4]>2045))
	ldi R24,2046
	ldi R25,7
	lds R2,_global_detect_trip
	lds R3,_global_detect_trip+1
	cp R24,R2
	cpc R25,R3
	brsh L45
	lds R2,_global_detect_trip+2
	lds R3,_global_detect_trip+2+1
	cp R24,R2
	cpc R25,R3
	brsh L45
	lds R2,_global_detect_trip+4
	lds R3,_global_detect_trip+4+1
	cp R24,R2
	cpc R25,R3
	brsh L45
	.dbline 161
; 		{
	.dbline 163
; 		//检测到动作标志赋值
; 			global_operation_detected_flag=1;
	ldi R24,1
	ldi R25,0
	sts _global_operation_detected_flag+1,R25
	sts _global_operation_detected_flag,R24
	.dbline 164
; 		}
L45:
	.dbline 178
; 	//	if(global_detect_trip[0]>2049)
; 	//	{
; 	//		if((global_detect_trip[1]-global_detect_trip[0]>1)&&(global_detect_trip[2]-global_detect_trip[1]>1))//&&(global_detect_trip[3]-global_detect_trip[0]>1))
; 	//		{
; 			//检测到动作标志赋值
; 	//			global_operation_detected_flag=1;
; 	//		}
; 	//	}
; 	//	if(int16_temp1>2049)
; 	//	{
; 		//检测到动作标志赋值
; 	//		global_operation_detected_flag=1;
; 	//	}
; 		global_ad_counter++;
	lds R24,_global_ad_counter
	lds R25,_global_ad_counter+1
	adiw R24,1
	sts _global_ad_counter+1,R25
	sts _global_ad_counter,R24
	.dbline 179
; 	}
L27:
	.dbline 181
; //完成一次AD转换,将AD转换结束标志赋值
; 	global_ad_finish_flag=0xFF;
	ldi R24,255
	ldi R25,0
	sts _global_ad_finish_flag+1,R25
	sts _global_ad_finish_flag,R24
	.dbline -2
L19:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l i 1 i
	.dbsym r temp2 22 i
	.dbsym r temp1 22 i
	.dbsym r int16_temp1 20 i
	.dbsym r SIG_INTERRUPT7 16 I
	.dbend
	.dbfunc e main _main fI
;              i -> R16,R17
	.even
_main::
	.dbline -1
	.dbline 188
; //开中断
; 	//sei();
; }
; 
; //主程序//////////////////////////////
; int main()
; {
	.dbline 199
; //变量定义
; 	unsigned int i;
; //初始化和串口波特率设置
; 	//INITIATION();
; //PG3供测试用/////////////
; 	//sbi(DDRG,3);
; 	//cbi(PORTG,3);
; //开中断
; 	//sei();
; //自动测试标志初始化
; 	global_sample_mode_flag=0xFF;
	ldi R24,255
	ldi R25,0
	sts _global_sample_mode_flag+1,R25
	sts _global_sample_mode_flag,R24
	.dbline 201
; //采集控制标志初始化
; 	global_start_sample_flag=0xFF;
	sts _global_start_sample_flag+1,R25
	sts _global_start_sample_flag,R24
	.dbline 203
; //串口接收控制变量初始化
; 	global_flag_serie=0;
	clr R2
	clr R3
	sts _global_flag_serie+1,R3
	sts _global_flag_serie,R2
	.dbline 207
; //开串口接收中断
; 	//UART_RXCINT_OPEN();
; //延时
; 	for(i=0;i<0xFF;i++)
	clr R16
	clr R17
	xjmp L53
X9:
	.dbline 208
; 	{
L54:
	.dbline 211
	.dbline 211
	.dbline 211
L55:
	.dbline 211
	in R2,0x36
	sbrs R2,4
	rjmp L54
	.dbline 212
	in R24,0x36
	ori R24,16
	out 0x36,R24
	.dbline 215
L51:
	.dbline 207
	subi R16,255  ; offset = 1
	sbci R17,255
L53:
	.dbline 207
	cpi R16,255
	ldi R30,0
	cpc R17,R30
	brlo L55
L57:
	.dbline 218
	.dbline 263
L58:
	.dbline 217
; 		//TIMER_BEGIN();
; 		//等待定时器溢出,AD结束中断处理在等待过程中完成
; 		while(!(TIFR&(1<<OCF1A))){;}
; 		TIFR|=1<<OCF1A;
; 		//终止定时器
; 		//TIMER_STOP();
; 	}
; //数据采集流程
; 	while(1)
	xjmp L57
X10:
	.dbline 265
L60:
	.dbline 265
; 	{
; 	/*
; 	//检测动作开始标志清零
; 		for(i=0;i<4;i++){global_detect_close[i]=0;}
; 		for(i=0;i<4;i++){global_detect_trip[i]=0;}
; 	//如果自动测试
; 		if(global_sample_mode_flag==0x00)
; 		{
; 		//关串口接收中断
; 			UART_RXCINT_CLOSE();
; 		//开外部中断7(AD转换结束中断)
; 			EXTERN_INTERRUPT_OPEN(7);
; 		//检测采样
; 			OPERATION_DETECTION();
; 		//如果检测到有信号变化,向COUNTER发送开始采集命令
; 		//	sbi(UCSR0B,TXB8);//将TXB8置1
; 			UART_DATA_BYTE_SEND(0x10);//发送数据采集命令
; 		//开始采样
; 			SAMPLE();
; 		//关外部中断7
; 			EXTERN_INTERRUPT_CLOSE(7);
; 		//开串口接收中断,等待数据包传输命令
; 			UART_RXCINT_OPEN();
; 		//向主机发送采集结束命令0x33
; 			UART_DATA_BYTE_SEND(0x33);
; 		//自动测试标志复原
; 			global_sample_mode_flag=0xFF;
; 		}
; 	//如果接收到开始采集命令
; 		if(global_start_sample_flag==0x00)
; 		{
; 		//关串口接收中断
; 			UART_RXCINT_CLOSE();
; 		//开外部中断7(AD转换结束中断)
; 			EXTERN_INTERRUPT_OPEN(7);
; 		//采样
; 			SAMPLE();
; 		//关外部中断7
; 			EXTERN_INTERRUPT_CLOSE(7);
; 		//开串口接收中断,等待数据包传输命令
; 			UART_RXCINT_OPEN();
; 		//开始采集标志复原
; 			global_start_sample_flag=0xFF;
; 		}
; 	*/
; 	}
; 	
; 	for(;;){;}
	.dbline 265
	.dbline 265
	.dbline 265
	.dbline 265
	xjmp L60
X11:
	.dbline 266
; 	return 0;
	clr R16
	clr R17
	.dbline -2
L49:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\AVR\AD\main.c
_global_ad_finish_flag::
	.blkb 2
	.dbsym e global_ad_finish_flag _global_ad_finish_flag i
_global_voltage_counter::
	.blkb 2
	.dbsym e global_voltage_counter _global_voltage_counter i
_global_motor_counter::
	.blkb 2
	.dbsym e global_motor_counter _global_motor_counter i
_global_trip_counter::
	.blkb 2
	.dbsym e global_trip_counter _global_trip_counter i
_global_close_counter::
	.blkb 2
	.dbsym e global_close_counter _global_close_counter i
_global_channel_flag::
	.blkb 2
	.dbsym e global_channel_flag _global_channel_flag i
_global_detect_trip::
	.blkb 10
	.dbsym e global_detect_trip _global_detect_trip A[10:5]i
_global_detect_close::
	.blkb 10
	.dbsym e global_detect_close _global_detect_close A[10:5]i
_global_operation_detected_flag::
	.blkb 2
	.dbsym e global_operation_detected_flag _global_operation_detected_flag i
_global_sample_mode_flag::
	.blkb 2
	.dbsym e global_sample_mode_flag _global_sample_mode_flag i
_global_start_sample_flag::
	.blkb 2
	.dbsym e global_start_sample_flag _global_start_sample_flag i
_global_ad_counter::
	.blkb 2
	.dbsym e global_ad_counter _global_ad_counter i
_global_flag_serie::
	.blkb 2
	.dbsym e global_flag_serie _global_flag_serie i

⌨️ 快捷键说明

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