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

📄 main.s

📁 国内某测温系统信号处理处理板的代码
💻 S
字号:
	.module main.c
	.area vector(rom, abs)
	.org 12
	rjmp _timer1_ovf_isr
	.org 18
	rjmp _uart0_rx_isr
	.org 22
	rjmp _uart0_tx_isr
	.org 24
	rjmp _ana_comp_isr
	.area data(ram, con, rel)
_rass2dp::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile E:\任务\RASS\rass_soft\main.c
	.dbsym e rass2dp _rass2dp c
_rxed_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\任务\RASS\rass_soft\main.c
	.dbsym e rxed_flag _rxed_flag c
	.area text(rom, con, rel)
	.dbfile E:\任务\RASS\rass_soft\main.c
	.dbfunc e main _main fV
;              j -> R20,R21
	.even
_main::
	.dbline -1
	.dbline 22
; #include "config.h"
; 
; unsigned char dp2rass[5];
; unsigned int test_freq;
; unsigned char rass2dp=1;
; unsigned int seed;
; unsigned char rxed_flag=0;//接收完数据为1
; unsigned char dp2rass[5];
; unsigned char work_state;
; unsigned char work_mode;
; unsigned char work_grade;
; unsigned char Ns;//频率点的个数
; unsigned int Fh,Fl;
; unsigned char TCNT1_L;
; unsigned char TCNT1_H;
; unsigned int D15_0;//为2315控制字
; unsigned char timer1;
; 
; 
; 
; void main(void)
; {
	.dbline 27
; 	//unsigned int rand;
; 	//unsigned int first,second;
; 	//unsigned char x,y;
; 	//unsigned int num,mod1=0;
; 	unsigned int j=1;
	ldi R20,1
	ldi R21,0
	.dbline 29
; 	
;  	CLI(); //stop errant interrupts until set up
	cli
	.dbline 30
;  	port_init();
	rcall _port_init
	.dbline 31
;  	timer1_init();
	rcall _timer1_init
	.dbline 32
;  	uart0_init();
	rcall _uart0_init
	.dbline 34
;  		
; 	MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 35
; 	EMCUCR = 0x00;
	out 0x36,R2
	.dbline 36
; 	GICR = 0x00;
	out 0x3b,R2
	.dbline 37
;  	TIMSK = 0x80;
	ldi R24,128
	out 0x39,R24
	.dbline 38
; 	SEI(); //re-enable interrupts
	sei
L2:
	.dbline 42
;  	//all peripherals are now initialized
; 		  
; 	do
; 		{
	.dbline 43
; 			if(rxed_flag==1)      //如果刚刚接收完dp的数据,则
	lds R24,_rxed_flag
	cpi R24,1
	breq X3
	rjmp L5
X3:
	.dbline 44
; 				{
	.dbline 45
; 					if(!(dp2rass[0]&0x01))//判断是命令还是数据请求
	lds R2,_dp2rass
	sbrc R2,0
	rjmp L7
	.dbline 46
; 						UDR=rass2dp;   //为0时是dp请求rass的状态信息,	                        
	lds R2,_rass2dp
	out 0xc,R2
	rjmp L8
L7:
	.dbline 48
; 		      else             //为1时是dp发送给rass的命令 
; 		      	{
	.dbline 49
; 		      		work_state=(dp2rass[0]&0x02)>>1; 
	lds R24,_dp2rass
	andi R24,2
	lsr R24
	sts _work_state,R24
	.dbline 50
;  		  				if(work_state==0)      //如果是关闭工作命令,则
	tst R24
	brne L9
	.dbline 51
;  		  					{
	.dbline 52
;  		  						ACSR = ACSR & 0xF7;  //关闭时间、比较中断
	in R24,0x8
	andi R24,247
	out 0x8,R24
	.dbline 53
;  		  						TCCR1B = 0x00;       
	clr R2
	out 0x2e,R2
	.dbline 54
;  		  						ml2035(0,1);          //关闭2305,1666
	ldi R18,1
	ldi R19,0
	clr R16
	clr R17
	rcall _ml2035
	.dbline 55
;  		  						ds1666(128,0);
	clr R18
	clr R19
	ldi R16,128
	ldi R17,0
	rcall _ds1666
	.dbline 56
;  		  					}
	rjmp L10
L9:
	.dbline 58
;  		  				else                  //如果是开始工作指令的话
;  		  					{
	.dbline 59
;  		  						TCCR1B = 0x05;       //start Timer1,comparator
	ldi R24,5
	out 0x2e,R24
	.dbline 60
;  		  						comparator_init();
	rcall _comparator_init
	.dbline 61
;  		  						data_process();
	rcall _data_process
	.dbline 62
;  		  						seed=TCNT1L;
	in R2,0x2c
	clr R3
	sts _seed+1,R3
	sts _seed,R2
	.dbline 63
;  		  						ds1666(128,0);
	clr R18
	clr R19
	ldi R16,128
	ldi R17,0
	rcall _ds1666
	.dbline 64
;  		  						switch(work_grade)
	lds R22,_work_grade
	clr R23
	cpi R22,0
	cpc R22,R23
	breq L14
X0:
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L15
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L16
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	breq L17
	rjmp L11
X1:
	.dbline 65
; 										{
L14:
	.dbline 66
; 											case 0: ds1666(128,1);break;
	ldi R18,1
	ldi R19,0
	ldi R16,128
	ldi R17,0
	rcall _ds1666
	.dbline 66
	rjmp L12
L15:
	.dbline 67
; 											case 1: ds1666(119,1);break;
	ldi R18,1
	ldi R19,0
	ldi R16,119
	ldi R17,0
	rcall _ds1666
	.dbline 67
	rjmp L12
L16:
	.dbline 68
; 											case 2: ds1666(110,1);break;
	ldi R18,1
	ldi R19,0
	ldi R16,110
	ldi R17,0
	rcall _ds1666
	.dbline 68
	rjmp L12
L17:
L18:
	.dbline 70
; 											case 3: 
; 											defaulf:ds1666(96,1);
	ldi R18,1
	ldi R19,0
	ldi R16,96
	ldi R17,0
	rcall _ds1666
	.dbline 71
; 										}
L11:
L12:
	.dbline 72
; 								}
L10:
	.dbline 73
; 							}
L8:
	.dbline 74
; 						rxed_flag=0;
	clr R2
	sts _rxed_flag,R2
	.dbline 75
; 					}
L5:
	.dbline 77
; 					
; 				if(timer1==1)    //计数溢出中断后改变频率
	lds R24,_timer1
	cpi R24,1
	brne L19
	.dbline 78
; 					{
	.dbline 79
; 						if(work_mode==0)   //random mode
	lds R2,_work_mode
	tst R2
	brne L21
	.dbline 80
; 							D15_0=rand(seed);
	lds R16,_seed
	lds R17,_seed+1
	rcall _rand
	sts _D15_0+1,R17
	sts _D15_0,R16
	rjmp L22
L21:
	.dbline 82
; 						else
; 							{
	.dbline 83
; 								D15_0=line(j++);
	movw R2,R20
	subi R20,255  ; offset = 1
	sbci R21,255
	movw R16,R2
	rcall _line
	sts _D15_0+1,R17
	sts _D15_0,R16
	.dbline 84
; 								if(j>Ns)
	lds R2,_Ns
	clr R3
	cp R2,R20
	cpc R3,R21
	brsh L23
	.dbline 85
; 									j=1;									
	ldi R20,1
	ldi R21,0
L23:
	.dbline 86
; 							}
L22:
	.dbline 87
; 						timer1=0;
	clr R2
	sts _timer1,R2
	.dbline 88
; 					}
L19:
	.dbline 89
; 	 }							
L3:
	.dbline 90
	rjmp L2
X2:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r j 20 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\任务\RASS\rass_soft\main.c
_timer1::
	.blkb 1
	.dbsym e timer1 _timer1 c
_D15_0::
	.blkb 2
	.dbsym e D15_0 _D15_0 i
_TCNT1_H::
	.blkb 1
	.dbsym e TCNT1_H _TCNT1_H c
_TCNT1_L::
	.blkb 1
	.dbsym e TCNT1_L _TCNT1_L c
_Fl::
	.blkb 2
	.dbsym e Fl _Fl i
_Fh::
	.blkb 2
	.dbsym e Fh _Fh i
_Ns::
	.blkb 1
	.dbsym e Ns _Ns c
_work_grade::
	.blkb 1
	.dbsym e work_grade _work_grade c
_work_mode::
	.blkb 1
	.dbsym e work_mode _work_mode c
_work_state::
	.blkb 1
	.dbsym e work_state _work_state c
_seed::
	.blkb 2
	.dbsym e seed _seed i
_test_freq::
	.blkb 2
	.dbsym e test_freq _test_freq i
_dp2rass::
	.blkb 5
	.dbsym e dp2rass _dp2rass A[5:5]c

⌨️ 快捷键说明

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