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

📄 rtc.s

📁 AtMega169芯片连接RTC的测试程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldi R25,>_seg_table
	lds R30,_j
	lds R31,_j+1
	add R30,R24
	adc R31,R25
	lpm R24,Z
	andi R24,127
	out 0xe,R24
	.dbline 164
; 						  PORTB=0XDF;                          //点亮十位                
	ldi R24,223
	out 0x5,R24
	.dbline 165
; 						  delay_ms(1);                                                   
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 166
;               PORTE=seg_table[k];                  //点亮百位                
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_k
	lds R31,_k+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 167
; 						  PORTB=0XBF;                          //点亮百位                
	ldi R24,191
	out 0x5,R24
	.dbline 168
; 						  delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 169
; 						  adc_old=adc_rel;
	lds R2,_adc_rel
	lds R3,_adc_rel+1
	sts _adc_old+1,R3
	sts _adc_old,R2
	.dbline 170
; 						  if(s2)
	lds R20,_adc_old
	lds R21,_adc_old+1
	ldi R24,384
	ldi R25,1
	cp R24,R20
	cpc R25,R21
	brlo X40
	xjmp L42
X40:
X13:
	cpi R20,32
	ldi R30,2
	cpc R21,R30
	brlo X41
	xjmp L42
X41:
X14:
	.dbline 171
; 						   {
	.dbline 173
; 						    int x;
; 						    for(x=50;x>0;x--)
	ldi R20,50
	ldi R21,0
L44:
	.dbline 175
; 						    //display();
; 							   {
	.dbline 176
; 							    PORTE=seg_table[i];
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_i
	lds R31,_i+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 177
; 						        PORTB=0xef;
	ldi R24,239
	out 0x5,R24
	.dbline 178
; 						        delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 179
;                                 PORTE=seg_table[j]&0x7f;
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_j
	lds R31,_j+1
	add R30,R24
	adc R31,R25
	lpm R24,Z
	andi R24,127
	out 0xe,R24
	.dbline 180
; 						        PORTB=0XDF;
	ldi R24,223
	out 0x5,R24
	.dbline 181
; 						        delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 182
;                                 PORTE=seg_table[k];
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_k
	lds R31,_k+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 183
; 						        PORTB=0XBF;
	ldi R24,191
	out 0x5,R24
	.dbline 184
; 						        delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 185
; 							   }
L45:
	.dbline 173
	subi R20,1
	sbci R21,0
	.dbline 173
	clr R2
	clr R3
	cp R2,R20
	cpc R3,R21
	brge X42
	xjmp L44
X42:
X15:
	.dbline 186
; 						    j++;                          //加1     
	lds R24,_j
	lds R25,_j+1
	adiw R24,1
	sts _j+1,R25
	sts _j,R24
	.dbline 187
; 						    if(j==6)
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	brne L48
X16:
	.dbline 188
;                              {
	.dbline 189
; 	                          j=0;								 	                              
	sts _j+1,R3
	sts _j,R2
	.dbline 190
; 	                         }								                               
L48:
	.dbline 191
; 						   }
L42:
	.dbline 192
; 						 if(s4)
	lds R20,_adc_old
	lds R21,_adc_old+1
	ldi R24,720
	ldi R25,2
	cp R24,R20
	cpc R25,R21
	brlo X43
	xjmp L50
X43:
X17:
	cpi R20,16
	ldi R30,3
	cpc R21,R30
	brlo X44
	xjmp L50
X44:
X18:
	.dbline 193
; 						  {
	.dbline 195
; 						    int x;
; 						    for(x=50;x>0;x--)            //消抖且保证LED显示正常         						    
	ldi R20,50
	ldi R21,0
L52:
	.dbline 196
; 							   {
	.dbline 197
; 							    PORTE=seg_table[i];         //点亮个位            
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_i
	lds R31,_i+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 198
; 						        PORTB=0xef;                 //点亮个位                
	ldi R24,239
	out 0x5,R24
	.dbline 199
; 						        delay_ms(1);                                          
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 200
;                                 PORTE=seg_table[j]&0x7f;    //点亮十位及其小数点                
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_j
	lds R31,_j+1
	add R30,R24
	adc R31,R25
	lpm R24,Z
	andi R24,127
	out 0xe,R24
	.dbline 201
; 						        PORTB=0XDF;                 //点亮十位                
	ldi R24,223
	out 0x5,R24
	.dbline 202
; 						        delay_ms(1);                                          
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 203
;                                 PORTE=seg_table[k];         //点亮百位                   
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_k
	lds R31,_k+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 204
; 						        PORTB=0XBF;                 //点亮百位                
	ldi R24,191
	out 0x5,R24
	.dbline 205
; 						        delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 206
; 							   }
L53:
	.dbline 195
	subi R20,1
	sbci R21,0
	.dbline 195
	clr R2
	clr R3
	cp R2,R20
	cpc R3,R21
	brge X45
	xjmp L52
X45:
X19:
	.dbline 207
; 						    j--;                        //减1 
	lds R24,_j
	lds R25,_j+1
	sbiw R24,1
	sts _j+1,R25
	sts _j,R24
	.dbline 208
; 						    if(j==-1)
	cpi R24,255
	ldi R30,255
	cpc R25,R30
	brne L56
X20:
	.dbline 209
;                              {
	.dbline 210
; 	                          j=5;
	ldi R24,5
	ldi R25,0
	sts _j+1,R25
	sts _j,R24
	.dbline 211
; 	                         }
L56:
	.dbline 212
; 						  }
L50:
	.dbline 213
; 						 }
L40:
	.dbline 156
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brlo X46
	xjmp L39
X46:
X21:
	.dbline 214
; 						 delay_ms(200);
	ldi R16,200
	ldi R17,0
	xcall _delay_ms
	.dbline 215
; 						 adc_old=adc_rel;
	lds R2,_adc_rel
	lds R3,_adc_rel+1
	sts _adc_old+1,R3
	sts _adc_old,R2
	xjmp L59
L58:
	.dbline 219
; 
; 					//******百位处理
; 					while(!s1)                         //同上
; 					  {
	.dbline 220
; 						  adc_old=adc_rel;                    
	lds R2,_adc_rel
	lds R3,_adc_rel+1
	sts _adc_old+1,R3
	sts _adc_old,R2
	.dbline 221
; 					      TIMSK2=0x00;
	clr R2
	sts 112,R2
	.dbline 222
; 						  PORTE=seg_table[i];               //点亮个位   
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_i
	lds R31,_i+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 223
; 						  PORTB=0xef;                       //点亮个位                
	ldi R24,239
	out 0x5,R24
	.dbline 224
; 						  delay_ms(1);                                                
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 225
;                           PORTE=seg_table[j];               //点亮十位                
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_j
	lds R31,_j+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 226
; 						  PORTB=0XDF;                       //点亮十位                
	ldi R24,223
	out 0x5,R24
	.dbline 227
; 						  delay_ms(1);                                                
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 228
;                           PORTE=seg_table[k]&0x7f;          //点亮百位及其小数点                   
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_k
	lds R31,_k+1
	add R30,R24
	adc R31,R25
	lpm R24,Z
	andi R24,127
	out 0xe,R24
	.dbline 229
; 						  PORTB=0XBF;                       //点亮百位                
	ldi R24,191
	out 0x5,R24
	.dbline 230
; 						  delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 231
; 						  adc_old=adc_rel;
	lds R2,_adc_rel
	lds R3,_adc_rel+1
	sts _adc_old+1,R3
	sts _adc_old,R2
	.dbline 232
; 						  if(s2)
	lds R20,_adc_old
	lds R21,_adc_old+1
	ldi R24,384
	ldi R25,1
	cp R24,R20
	cpc R25,R21
	brlo X47
	xjmp L61
X47:
X22:
	cpi R20,32
	ldi R30,2
	cpc R21,R30
	brlo X48
	xjmp L61
X48:
X23:
	.dbline 233
; 						   {
	.dbline 235
; 						    int x;
; 						    for(x=50;x>0;x--) 						
	ldi R20,50
	ldi R21,0
L63:
	.dbline 236
; 							  {
	.dbline 237
; 							   PORTE=seg_table[i];              //点亮个位及其小数点      
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_i
	lds R31,_i+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 238
; 						       PORTB=0xef;                      //点亮个位                
	ldi R24,239
	out 0x5,R24
	.dbline 239
; 						       delay_ms(1);                                               
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 240
;                                PORTE=seg_table[j];              //点亮十位                
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_j
	lds R31,_j+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 241
; 						       PORTB=0XDF;                      //点亮十位                
	ldi R24,223
	out 0x5,R24
	.dbline 242
; 						       delay_ms(1);                                               
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 243
;                                PORTE=seg_table[k]&0x7f;         //点亮百位                
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_k
	lds R31,_k+1
	add R30,R24
	adc R31,R25
	lpm R24,Z
	andi R24,127
	out 0xe,R24
	.dbline 244
; 						       PORTB=0XBF;                      //点亮百位                
	ldi R24,191
	out 0x5,R24
	.dbline 245
; 						       delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 246
; 							  }							
L64:
	.dbline 235
	subi R20,1
	sbci R21,0
	.dbline 235
	clr R2
	clr R3
	cp R2,R20
	cpc R3,R21
	brge X49
	xjmp L63
X49:
X24:
	.dbline 247
; 						    k++;                          //加1     
	lds R24,_k
	lds R25,_k+1
	adiw R24,1
	sts _k+1,R25
	sts _k,R24
	.dbline 248
; 						    if(k==10)
	cpi R24,10
	ldi R30,0
	cpc R25,R30
	brne L67
X25:
	.dbline 249
;                  {
	.dbline 250
; 	                 k=0;
	sts _k+1,R3
	sts _k,R2
	.dbline 251
; 	               }
L67:
	.dbline 252
; 						   }
L61:
	.dbline 253
; 						 if(s4)
	lds R20,_adc_old
	lds R21,_adc_old+1
	ldi R24,720
	ldi R25,2
	cp R24,R20
	cpc R25,R21
	brlo X50
	xjmp L69
X50:
X26:
	cpi R20,16
	ldi R30,3
	cpc R21,R30
	brlo X51
	xjmp L69
X51:
X27:
	.dbline 254
; 						   {int x;
	.dbline 255
; 						    for(x=50;x>0;x--)   						    
	ldi R20,50
	ldi R21,0
L71:
	.dbline 256
; 							  {
	.dbline 257
; 							   PORTE=seg_table[i];           //点亮个位及其小数点            
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_i
	lds R31,_i+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 258
; 						     PORTB=0xef;                   //点亮个位                
	ldi R24,239
	out 0x5,R24
	.dbline 259
; 						     delay_ms(1);                                            
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 260
;                  PORTE=seg_table[j];           //点亮十位                
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_j
	lds R31,_j+1
	add R30,R24
	adc R31,R25
	lpm R2,Z
	out 0xe,R2
	.dbline 261
; 						     PORTB=0XDF;                   //点亮十位                
	ldi R24,223
	out 0x5,R24
	.dbline 262
; 						     delay_ms(1);                                            
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 263
;                  PORTE=seg_table[k]&0x7f;      //点亮百位                
	ldi R24,<_seg_table
	ldi R25,>_seg_table
	lds R30,_k
	lds R31,_k+1
	add R30,R24
	adc R31,R25
	lpm R24,Z
	andi R24,127
	out 0xe,R24
	.dbline 264
; 						     PORTB=0XBF;                   //点亮百位                
	ldi R24,191
	out 0x5,R24
	.dbline 265
; 						     delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_ms
	.dbline 266
; 							  }
L72:
	.dbline 255
	subi R20,1
	sbci R21,0
	.dbline 255
	clr R2
	clr R3
	cp R2,R20
	cpc R3,R21
	brge X52
	xjmp L71
X52:
X28:
	.dbline 267
; 						    k--;                                   //减1 
	lds R24,_k
	lds R25,_k+1
	sbiw R24,1
	sts _k+1,R25
	sts _k,R24
	.dbline 268
; 						    if(k==-1)
	cpi R24,255
	ldi R30,255
	cpc R25,R30
	brne L75
X29:
	.dbline 269
;                   {
	.dbline 270
; 	                 k=9;
	ldi R24,9
	ldi R25,0
	sts _k+1,R25
	sts _k,R24
	.dbline 271
; 	                }
L75:
	.dbline 272
; 						   }
L69:
	.dbline 273
; 						 }
L59:
	.dbline 218
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brlo X53
	xjmp L58
X53:
X30:
	xjmp L78
L77:
	.dbline 275
; 						 //***********
; 						while(s1){adc_old=adc_rel;} //跳出
	.dbline 275
	lds R2,_adc_rel
	lds R3,_adc_rel+1
	sts _adc_old+1,R3
	sts _adc_old,R2
	.dbline 275
L78:
	.dbline 275
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brlo L77
X31:
	.dbline 276
;            }
L18:
	.dbline 90
	lds R24,_adc_old
	lds R25,_adc_old+1
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brsh X54
	xjmp L17
X54:
X32:
	.dbline -2
L14:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r x 20 I
	.dbsym r x 20 I
	.dbsym r x 20 I
	.dbsym r x 20 I
	.dbsym r x 20 I
	.dbsym r x 20 I
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 279
; }
; void main(void)
; { 
	.dbline 280
;     adc_init();//AD初始化
	xcall _adc_init
	.dbline 281
; 	  timer2_init();//定时器初始化
	xcall _timer2_init
	.dbline 282
;     portE_B();
	xcall _portE_B
	.dbline 283
; 	  TIMSK2=1;    
	ldi R24,1
	sts 112,R24
	.dbline 284
;     SEI();//使能全局中断
	sei
	xjmp L82
L81:
	.dbline 286
;     while(1)
;     { 
	.dbline 287
; 	   TIMSK2=1;	
	ldi R24,1
	sts 112,R24
	.dbline 288
; 	   display();	          //显示
	xcall _display
	.dbline 289
; 	   keyScan();      		 //键值扫描
	xcall _keyScan
	.dbline 290
; 	  }
L82:
	.dbline 285
	xjmp L81
X55:
	.dbline -2
L80:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\TDdownload\zxy\169demo\169RTC\rtc.c
_adc_old::
	.blkb 2
	.dbsym e adc_old _adc_old i
_adc_rel::
	.blkb 2
	.dbsym e adc_rel _adc_rel i
; }          
; 		
; 				
; 	           
;          
; 
;  
;  
;  
;  

⌨️ 快捷键说明

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