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

📄 ac15-2.s

📁 AVR学习资料
💻 S
📖 第 1 页 / 共 3 页
字号:
; {
	.dbline 269
;  TCNT1H = 0xF3; //setup
	ldi R24,243
	out 0x2d,R24
	.dbline 270
;  TCNT1L = 0xCB;
	ldi R24,203
	out 0x2c,R24
	.dbline 271
;  TCCR1B = 0x04; //start Timer
	ldi R24,4
	out 0x2e,R24
	.dbline -2
L67:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;        key_val -> R22
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 275
; }
; //******************************************
; void main(void)				
; {
	.dbline 277
;  	 uchar key_val;	
; 	 init_devices();
	xcall _init_devices
	.dbline 278
;     Delay_nms(400);			
	ldi R16,400
	ldi R17,1
	xcall _Delay_nms
	.dbline 279
; 	InitLcd();			
	xcall _InitLcd
	.dbline 280
; 	LcdWriteCommand(0x01,1); 
	ldi R18,1
	ldi R16,1
	xcall _LcdWriteCommand
	.dbline 281
; 	LcdWriteCommand(0x0c,1); 
	ldi R18,1
	ldi R16,12
	xcall _LcdWriteCommand
	.dbline 282
; 	ePutstr(0,0,str0);  
	ldi R24,<_str0
	ldi R25,>_str0
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _ePutstr
	.dbline 283
; 	Delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 284
; 	ePutstr(0,1,str1);   
	ldi R24,<_str1
	ldi R25,>_str1
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _ePutstr
	.dbline 285
; 	Delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	xjmp L70
L69:
	.dbline 288
; 	/********************************************/
; 		while(1)              
; 		{
	.dbline 289
; 		   DisplayOneChar(6,0,(time1.hour/10)+0x30);
	ldi R17,10
	lds R16,_time1
	xcall div8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,6
	xcall _DisplayOneChar
	.dbline 290
; 		   Delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 291
; 		   DisplayOneChar(7,0,(time1.hour%10)+0x30);
	ldi R17,10
	lds R16,_time1
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,7
	xcall _DisplayOneChar
	.dbline 292
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 293
; 		   DisplayOneChar(9,0,(time1.min/10)+0x30);
	ldi R17,10
	lds R16,_time1+1
	xcall div8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,9
	xcall _DisplayOneChar
	.dbline 294
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 295
; 		   DisplayOneChar(10,0,(time1.min%10)+0x30);
	ldi R17,10
	lds R16,_time1+1
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,10
	xcall _DisplayOneChar
	.dbline 296
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 297
; 		   DisplayOneChar(12,0,(time1.sec/10)+0x30);
	ldi R17,10
	lds R16,_time1+2
	xcall div8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,12
	xcall _DisplayOneChar
	.dbline 298
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 299
; 		   DisplayOneChar(13,0,(time1.sec%10)+0x30);
	ldi R17,10
	lds R16,_time1+2
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	clr R18
	ldi R16,13
	xcall _DisplayOneChar
	.dbline 300
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 302
; 		   
; 	   	   DisplayOneChar(7,1,(time2.hour/10)+0x30);
	ldi R17,10
	lds R16,_time2
	xcall div8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	ldi R16,7
	xcall _DisplayOneChar
	.dbline 303
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 304
; 		   DisplayOneChar(8,1,(time2.hour%10)+0x30);
	ldi R17,10
	lds R16,_time2
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	ldi R16,8
	xcall _DisplayOneChar
	.dbline 305
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 306
; 		   DisplayOneChar(10,1,(time2.min/10)+0x30);
	ldi R17,10
	lds R16,_time2+1
	xcall div8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	ldi R16,10
	xcall _DisplayOneChar
	.dbline 307
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 308
;     	   DisplayOneChar(11,1,(time2.min%10)+0x30);
	ldi R17,10
	lds R16,_time2+1
	xcall mod8u
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	ldi R16,11
	xcall _DisplayOneChar
	.dbline 309
; 		   Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 311
; 
; 		   key_val=scan_key();	
	xcall _scan_key
	mov R22,R16
	.dbline 313
; 
; 		   switch(key_val)		
	mov R20,R22
	clr R21
	cpi R20,223
	ldi R30,0
	cpc R21,R30
	brne X2
	xjmp L89
X2:
	ldi R24,223
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L108
L107:
	cpi R20,127
	ldi R30,0
	cpc R21,R30
	brne X3
	xjmp L100
X3:
	cpi R20,127
	ldi R30,0
	cpc R21,R30
	brge X4
	xjmp L79
X4:
L109:
	cpi R20,191
	ldi R30,0
	cpc R21,R30
	brne X5
	xjmp L92
X5:
	xjmp L79
L108:
	cpi R20,247
	ldi R30,0
	cpc R21,R30
	brne X6
	xjmp L105
X6:
	ldi R24,247
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlt L111
L110:
	cpi R20,239
	ldi R30,0
	cpc R21,R30
	breq L81
	xjmp L79
L111:
	cpi R20,251
	ldi R30,0
	cpc R21,R30
	brne X7
	xjmp L103
X7:
	xjmp L79
X0:
	.dbline 314
; 	   	   {				
L81:
	.dbline 315
; 	   	   	case 0xef:time1.min++;
	lds R24,_time1+1
	subi R24,255    ; addi 1
	sts _time1+1,R24
	.dbline 316
; 			          if(time1.min>59){time1.min=0;
	ldi R24,59
	lds R2,_time1+1
	cp R24,R2
	brlo X8
	xjmp L79
X8:
	.dbline 316
	.dbline 316
	clr R2
	sts _time1+1,R2
	.dbline 317
; 					                  if(time1.hour<23)time1.hour++;
	lds R24,_time1
	cpi R24,23
	brlo X9
	xjmp L79
X9:
	.dbline 317
	subi R24,255    ; addi 1
	sts _time1,R24
	.dbline 318
; 								      }break;  
	.dbline 318
	xjmp L79
L89:
	.dbline 319
; 	   		case 0xdf:time1.hour++;if(time1.hour>23)time1.hour=0;break;														//加法调整"时"
	lds R24,_time1
	subi R24,255    ; addi 1
	sts _time1,R24
	.dbline 319
	ldi R24,23
	lds R2,_time1
	cp R24,R2
	brlo X10
	xjmp L79
X10:
	.dbline 319
	clr R2
	sts _time1,R2
	.dbline 319
	xjmp L79
L92:
	.dbline 320
; 	   		case 0xbf:time2.min++;
	lds R24,_time2+1
	subi R24,255    ; addi 1
	sts _time2+1,R24
	.dbline 321
; 			          if(time2.min>59){time2.min=0;
	ldi R24,59
	lds R2,_time2+1
	cp R24,R2
	brlo X11
	xjmp L79
X11:
	.dbline 321
	.dbline 321
	clr R2
	sts _time2+1,R2
	.dbline 322
; 					                  if(time2.hour<23)time2.hour++;
	lds R24,_time2
	cpi R24,23
	brlo X12
	xjmp L79
X12:
	.dbline 322
	subi R24,255    ; addi 1
	sts _time2,R24
	.dbline 323
; 								      }break; 
	.dbline 323
	xjmp L79
L100:
	.dbline 324
; 	   		case 0x7f:time2.hour++;if(time2.hour>23)time2.hour=0;break;	
	lds R24,_time2
	subi R24,255    ; addi 1
	sts _time2,R24
	.dbline 324
	ldi R24,23
	lds R2,_time2
	cp R24,R2
	brsh L79
	.dbline 324
	clr R2
	sts _time2,R2
	.dbline 324
	xjmp L79
L103:
	.dbline 327
; 											
; 			//*************************
; 			case 0xfb:wr_24c01(11,time2.hour);
	lds R18,_time2
	ldi R16,11
	xcall _wr_24c01
	.dbline 328
; 				 Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 329
; 				 wr_24c01(12,time2.min); 
	lds R18,_time2+1
	ldi R16,12
	xcall _wr_24c01
	.dbline 330
; 				 Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 331
; 				 DisplayOneChar(13,1,0x57); 
	ldi R24,87
	std y+0,R24
	ldi R18,1
	ldi R16,13
	xcall _DisplayOneChar
	.dbline 332
; 				 Delay_nms(10);break; 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 332
	xjmp L79
L105:
	.dbline 333
; 	   		case 0xf7:time2.hour=rd_24c01(11); 
	ldi R16,11
	xcall _rd_24c01
	sts _time2,R16
	.dbline 334
; 				 Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 335
; 				 time2.min=rd_24c01(12); 
	ldi R16,12
	xcall _rd_24c01
	sts _time2+1,R16
	.dbline 336
; 				 Delay_nms(10); 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 337
; 				 DisplayOneChar(13,1,0x52); 
	ldi R24,82
	std y+0,R24
	ldi R18,1
	ldi R16,13
	xcall _DisplayOneChar
	.dbline 338
; 				 Delay_nms(10);break;	 
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 338
	.dbline 339
; 	   		default:break;		
L79:
	.dbline 341
	ldi R16,300
	ldi R17,1
	xcall _Delay_nms
	.dbline 342
	ldi R24,32
	std y+0,R24
	ldi R18,1
	ldi R16,13
	xcall _DisplayOneChar
	.dbline 343
	ldi R16,10
	ldi R17,0
	xcall _Delay_nms
	.dbline 345
L70:
	.dbline 287
	xjmp L69
X1:
	.dbline -2
L68:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r key_val 22 c
	.dbend
	.area vector(rom, abs)
	.org 32
	jmp _timer1_ovf_isr
	.area text(rom, con, rel)
	.dbfile d:\MYDOCU~1\ac15-2\ac15-2.c
	.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
	.even
_timer1_ovf_isr::
	st -y,R2
	st -y,R3
	st -y,R24
	st -y,R25
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 350
; 	   		}				
; 			Delay_nms(300);
; 			DisplayOneChar(13,1,0x20); 
; 			Delay_nms(10); 
; 						
;   		 }				
; }		   
; /*********************定时器T1中断子函数************************/
; #pragma interrupt_handler timer1_ovf_isr:9
; void timer1_ovf_isr(void)
; {
	.dbline 352
;  //TIMER1 has overflowed
;  TCNT1H = 0xF3; //reload counter high value
	ldi R24,243
	out 0x2d,R24
	.dbline 353
;  TCNT1L = 0xCB; //reload counter low value
	ldi R24,203
	out 0x2c,R24
	.dbline 354
;  if(++time1.dida>=10){time1.dida=0;time1.sec++;}//计时
	lds R24,_time1+3
	subi R24,255    ; addi 1
	mov R2,R24
	sts _time1+3,R2
	cpi R24,10
	brlo L113
	.dbline 354
	.dbline 354
	clr R2
	sts _time1+3,R2
	.dbline 354
	lds R24,_time1+2
	subi R24,255    ; addi 1
	sts _time1+2,R24
	.dbline 354
L113:
	.dbline 355
;  if(time1.sec>=60){time1.sec=0;time1.min++;}
	lds R24,_time1+2
	cpi R24,60
	brlo L118
	.dbline 355
	.dbline 355
	clr R2
	sts _time1+2,R2
	.dbline 355
	lds R24,_time1+1
	subi R24,255    ; addi 1
	sts _time1+1,R24
	.dbline 355
L118:
	.dbline 356
;  if(time1.min>=60){time1.min=0;time1.hour++;}
	lds R24,_time1+1
	cpi R24,60
	brlo L123
	.dbline 356
	.dbline 356
	clr R2
	sts _time1+1,R2
	.dbline 356
	lds R24,_time1
	subi R24,255    ; addi 1
	sts _time1,R24
	.dbline 356
L123:
	.dbline 357
;  if(time1.hour>=24){time1.hour=0;}
	lds R24,_time1
	cpi R24,24
	brlo L127
	.dbline 357
	.dbline 357
	clr R2
	sts _time1,R2
	.dbline 357
L127:
	.dbline 359
;  //-------------------
;  if((time1.hour==time2.hour)&&(time1.min==time2.min))LED_0;
	lds R2,_time2
	lds R3,_time1
	cp R3,R2
	brne L129
	lds R2,_time2+1
	lds R3,_time1+1
	cp R3,R2
	brne L129
	.dbline 359
	cbi 0x18,7
	xjmp L130
L129:
	.dbline 360
	sbi 0x18,7
L130:
	.dbline -2
L112:
	ld R2,y+
	out 0x3f,R2
	ld R25,y+
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 364
;  else LED_1;
; }
; /**********************器件初始化***********************/
; void init_devices(void)
; {
	.dbline 366
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 367
;  port_init();
	xcall _port_init
	.dbline 368
;  timer1_init();
	xcall _timer1_init
	.dbline 369
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 370
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 371
;  TIMSK = 0x04; //timer interrupt sources
	ldi R24,4
	out 0x39,R24
	.dbline 372
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L133:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile d:\MYDOCU~1\ac15-2\ac15-2.c
_cnt::
	.blkb 1
	.dbsym e cnt _cnt c
_com_data::
	.blkb 1
	.dbsym e com_data _com_data c
_time2::
	.blkb 4
	.dbstruct 0 4 date
	.dbfield 0 hour c
	.dbfield 1 min c
	.dbfield 2 sec c
	.dbfield 3 dida c
	.dbend
	.dbsym e time2 _time2 S[date]
_time1::
	.blkb 4
	.dbsym e time1 _time1 S[date]

⌨️ 快捷键说明

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