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

📄 no2.s

📁 12864LCD液晶仿真
💻 S
📖 第 1 页 / 共 3 页
字号:
	clr R3
	add R30,R2
	adc R31,R3
	ldd R0,y+11
	ldd R1,y+12
	add R30,R0
	adc R31,R1
	ldd R16,z+0
	com R16
	xcall _Lcd_Write_Byte
	.dbline 216
; 			
;          }
L51:
	.dbline 210
	inc R12
L53:
	.dbline 210
	mov R24,R12
	cpi R24,16
	brlo L50
X9:
	.dbline 218
; 		
;       }
L47:
	.dbline 206
	inc R10
L49:
	.dbline 206
	mov R24,R10
	cpi R24,2
	brlo L46
X10:
	.dbline 219
;    }
L37:
	.dbline -2
L35:
	.dbline 0 ; func end
	adiw R28,1
	xcall pop_xgset00FC
	adiw R28,2
	ret
	.dbsym l temp 0 c
	.dbsym r i 10 c
	.dbsym r j 12 c
	.dbsym l point 11 pc
	.dbsym r y 14 c
	.dbsym l x 7 c
	.dbsym r bit_flag 10 c
	.dbend
	.dbfunc e key_press _key_press fc
;              j -> R16
	.even
_key_press::
	.dbline -1
	.dbline 222
; }
; uchar key_press()
; {
	.dbline 224
;     uchar j;
;     DDRD|=0X0F;
	in R24,0x11
	ori R24,15
	out 0x11,R24
	.dbline 225
; 	PORTD|=0X0F;
	in R24,0x12
	ori R24,15
	out 0x12,R24
	.dbline 227
; 	
; 	DDRD&=0XF0;
	in R24,0x11
	andi R24,240
	out 0x11,R24
	.dbline 229
; 	
; 	j=PIND;
	in R16,0x10
	.dbline 230
; 	j=j&0X0F;//00001111
	andi R16,15
	.dbline 231
; 	if(j==0X0F)
	cpi R16,15
	brne L55
X11:
	.dbline 232
; 	{
	.dbline 233
; 	  return 0;
	clr R16
	xjmp L54
L55:
	.dbline 236
; 	}
; 	else
; 	{
	.dbline 237
; 	 return 1;
	ldi R16,1
	.dbline -2
L54:
	.dbline 0 ; func end
	ret
	.dbsym r j 16 c
	.dbend
	.dbfunc e key_scan _key_scan fc
;            key -> R10
	.even
_key_scan::
	xcall push_xgset003C
	.dbline -1
	.dbline 243
; 	}
; 	
; }
; 
; uchar key_scan()
; {
	.dbline 245
;     uchar key;
;     delay(10);
	ldi R16,10
	ldi R17,0
	xcall _delay
	.dbline 246
; 	if(key_press())
	xcall _key_press
	tst R16
	breq L58
X12:
	.dbline 247
; 	{
	.dbline 248
; 	key=PIND;
	in R10,0x10
	.dbline 249
; 	key&=0X0F;
	mov R24,R10
	andi R24,15
	mov R10,R24
	.dbline 250
; 	switch(key)
	mov R12,R24
	clr R13
	movw R24,R12
	cpi R24,7
	ldi R30,0
	cpc R25,R30
	breq L66
X13:
	cpi R24,11
	ldi R30,0
	cpc R25,R30
	breq L65
X14:
	cpi R24,13
	ldi R30,0
	cpc R25,R30
	breq L64
X15:
	cpi R24,14
	ldi R30,0
	cpc R25,R30
	breq L63
X16:
	xjmp L60
L63:
	.dbline 253
; 	{
; 	   case 0X0E: 
; 	       key=1;
	clr R10
	inc R10
	.dbline 254
; 		   break;
	xjmp L68
L64:
	.dbline 256
; 	   case 0X0D:
; 	       key=2;
	ldi R24,2
	mov R10,R24
	.dbline 257
; 		   break;
	xjmp L68
L65:
	.dbline 259
; 	   	 case 0X0B: 
; 	       key=3;
	ldi R24,3
	mov R10,R24
	.dbline 260
; 		   break;
	xjmp L68
L66:
	.dbline 262
; 	   case 0X07:
; 	       key=4;
	ldi R24,4
	mov R10,R24
	.dbline 263
; 		   break; 
	xjmp L68
L60:
	.dbline 265
; 	   default:	
; 	       key=16;     	   
	ldi R24,16
	mov R10,R24
	.dbline 266
; 	}
L67:
	.dbline 267
; 	  while(key_press());
L68:
	.dbline 267
	xcall _key_press
	tst R16
	brne L67
X17:
	.dbline 268
; 	}
	xjmp L59
L58:
	.dbline 270
; 	else
; 	{
	.dbline 271
; 	  key=16;
	ldi R24,16
	mov R10,R24
	.dbline 272
; 	}
L59:
	.dbline 273
; 	return key;
	mov R16,R10
	.dbline -2
L57:
	.dbline 0 ; func end
	xjmp pop_xgset003C
	.dbsym r key 10 c
	.dbend
	.dbfunc e Lcd_Function _Lcd_Function fV
;              n -> R10
;              m -> R12
;     alarm_flag -> y+5
;      time_flag -> y+4
;           temp -> R14
	.even
_Lcd_Function::
	xcall push_xgset00FC
	mov R14,R16
	sbiw R28,6
	.dbline -1
	.dbline 277
; }
; 
; void Lcd_Function( uchar temp )
; {
	.dbline 278
;    uchar time_flag = 0;
	clr R0
	std y+4,R0
	.dbline 279
;    uchar alarm_flag = 0;
	std y+5,R0
	.dbline 280
;    uchar m=0;
	clr R12
	.dbline 281
;    uchar n=0;
	clr R10
	.dbline 282
;     switch(temp)
	clr R15
	movw R24,R14
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L74
X18:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L75
X19:
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L76
X20:
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	breq L77
X21:
	xjmp L71
L74:
	.dbline 284
; 	{case 1:
; 	  time_flag = 1; break;
	clr R0
	inc R0
	std y+4,R0
	.dbline 284
	xjmp L72
L75:
	.dbline 286
; 	 case 2:
; 	  alarm_flag= 1; break;
	clr R0
	inc R0
	std y+5,R0
	.dbline 286
	xjmp L72
L76:
	.dbline 288
; 	 case 3:
; 	   m=1; break;
	clr R12
	inc R12
	.dbline 288
	xjmp L72
L77:
	.dbline 290
; 	 case 4:
; 	   n=1; break;
	clr R10
	inc R10
	.dbline 290
L71:
	.dbline 292
; 	 default:
; 	  ;
	.dbline 294
; 
; 	}
L72:
	.dbline 297
; 
;    //时间设置
;    Lcd_Character_16X16( time_flag, 0, 0, time_logo[3] );
	ldi R24,<_time_logo+96
	ldi R25,>_time_logo+96
	std y+3,R25
	std y+2,R24
	clr R2
	std y+0,R2
	clr R18
	ldd R16,y+4
	xcall _Lcd_Character_16X16
	.dbline 298
;    Lcd_Character_16X16( time_flag, 0, 16, time_logo[1] );
	ldi R24,<_time_logo+32
	ldi R25,>_time_logo+32
	std y+3,R25
	std y+2,R24
	ldi R24,16
	std y+0,R24
	clr R18
	ldd R16,y+4
	xcall _Lcd_Character_16X16
	.dbline 299
;    Lcd_Character_16X16( time_flag, 0, 32, time_logo[2] );
	ldi R24,<_time_logo+64
	ldi R25,>_time_logo+64
	std y+3,R25
	std y+2,R24
	ldi R24,32
	std y+0,R24
	clr R18
	ldd R16,y+4
	xcall _Lcd_Character_16X16
	.dbline 300
;    Lcd_Character_16X16( time_flag, 0, 48, menu[0] );
	ldi R24,<_menu
	ldi R25,>_menu
	std y+3,R25
	std y+2,R24
	ldi R24,48
	std y+0,R24
	clr R18
	ldd R16,y+4
	xcall _Lcd_Character_16X16
	.dbline 302
;    //闹钟设置
;    Lcd_Character_16X16( alarm_flag, 2, 0, time_logo[3] );
	ldi R24,<_time_logo+96
	ldi R25,>_time_logo+96
	std y+3,R25
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,2
	ldd R16,y+5
	xcall _Lcd_Character_16X16
	.dbline 303
;    Lcd_Character_16X16( alarm_flag, 2, 16, time_logo[1] );
	ldi R24,<_time_logo+32
	ldi R25,>_time_logo+32
	std y+3,R25
	std y+2,R24
	ldi R24,16
	std y+0,R24
	ldi R18,2
	ldd R16,y+5
	xcall _Lcd_Character_16X16
	.dbline 304
;    Lcd_Character_16X16( alarm_flag, 2, 32, time_logo[2] );
	ldi R24,<_time_logo+64
	ldi R25,>_time_logo+64
	std y+3,R25
	std y+2,R24
	ldi R24,32
	std y+0,R24
	ldi R18,2
	ldd R16,y+5
	xcall _Lcd_Character_16X16
	.dbline 305
;    Lcd_Character_16X16( alarm_flag, 2, 48, menu[1] );
	ldi R24,<_menu+32
	ldi R25,>_menu+32
	std y+3,R25
	std y+2,R24
	ldi R24,48
	std y+0,R24
	ldi R18,2
	ldd R16,y+5
	xcall _Lcd_Character_16X16
	.dbline 307
;    
;    Lcd_Character_16X16( m, 4, 0, time_logo[3] );
	ldi R24,<_time_logo+96
	ldi R25,>_time_logo+96
	std y+3,R25
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,4
	mov R16,R12
	xcall _Lcd_Character_16X16
	.dbline 308
;    Lcd_Character_16X16( m, 4, 16, time_logo[1] );
	ldi R24,<_time_logo+32
	ldi R25,>_time_logo+32
	std y+3,R25
	std y+2,R24
	ldi R24,16
	std y+0,R24
	ldi R18,4
	mov R16,R12
	xcall _Lcd_Character_16X16
	.dbline 309
;    Lcd_Character_16X16( m, 4, 32, time_logo[2] );
	ldi R24,<_time_logo+64
	ldi R25,>_time_logo+64
	std y+3,R25
	std y+2,R24
	ldi R24,32
	std y+0,R24
	ldi R18,4
	mov R16,R12
	xcall _Lcd_Character_16X16
	.dbline 310
;    Lcd_Character_16X16( m, 4, 48, menu[2] );
	ldi R24,<_menu+64
	ldi R25,>_menu+64
	std y+3,R25
	std y+2,R24
	ldi R24,48
	std y+0,R24
	ldi R18,4
	mov R16,R12
	xcall _Lcd_Character_16X16
	.dbline 312
;    
;    Lcd_Character_16X16( n, 6, 0, time_logo[3] );
	ldi R24,<_time_logo+96
	ldi R25,>_time_logo+96
	std y+3,R25
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,6
	mov R16,R10
	xcall _Lcd_Character_16X16
	.dbline 313
;    Lcd_Character_16X16( n, 6, 16, time_logo[1] );
	ldi R24,<_time_logo+32
	ldi R25,>_time_logo+32
	std y+3,R25
	std y+2,R24
	ldi R24,16
	std y+0,R24
	ldi R18,6
	mov R16,R10
	xcall _Lcd_Character_16X16
	.dbline 314
;    Lcd_Character_16X16( n, 6, 32, time_logo[2] );
	ldi R24,<_time_logo+64
	ldi R25,>_time_logo+64
	std y+3,R25
	std y+2,R24
	ldi R24,32
	std y+0,R24
	ldi R18,6
	mov R16,R10
	xcall _Lcd_Character_16X16
	.dbline 315
;    Lcd_Character_16X16( n, 6, 48, menu[3] );
	ldi R24,<_menu+96
	ldi R25,>_menu+96
	std y+3,R25
	std y+2,R24
	ldi R24,48
	std y+0,R24
	ldi R18,6
	mov R16,R10
	xcall _Lcd_Character_16X16
	.dbline -2
L70:
	.dbline 0 ; func end
	adiw R28,6
	xjmp pop_xgset00FC
	.dbsym r n 10 c
	.dbsym r m 12 c
	.dbsym l alarm_flag 5 c
	.dbsym l time_flag 4 c
	.dbsym r temp 14 c
	.dbend
	.dbfunc e main _main fV
;              j -> R12,R13
;              i -> R12,R13
;              k -> R10,R11
	.even
_main::
	.dbline -1
	.dbline 318
; }
; void main()
; {
	.dbline 319
;     unsigned int i,j,k=1;
	ldi R24,1
	ldi R25,0
	movw R10,R24
	.dbline 321
;    //init_port();//自己加,主要是控制线所在端口为输出
;     DDRB = 0xff; 
	ldi R24,255
	out 0x17,R24
	.dbline 322
; 	Lcd_Function(1);
	ldi R16,1
	xcall _Lcd_Function
	xjmp L95
L94:
	.dbline 325
; 	
; 	while(1)
; 	{   i=key_press();
	.dbline 325
	xcall _key_press
	mov R12,R16
	clr R13
	.dbline 326
; 	if(i)
	tst R12
	brne X22
	tst R13
	breq L97
X22:
	.dbline 327
; 	{
	.dbline 328
; 	 j=key_scan();
	xcall _key_scan
	mov R12,R16
	clr R13
	.dbline 329
; 	switch(j)
	movw R24,R12
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L101
X23:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L102
X24:
	xjmp L99
L101:
	.dbline 332
; 	  {
; 	   case 1: 
; 	       k=k+1;
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 333
; 		   break;
	xjmp L100
L102:
	.dbline 335
; 	   case 2:
; 	       k=k-1;
	movw R24,R10
	sbiw R24,1
	movw R10,R24
	.dbline 336
; 		   break;
L99:
	.dbline 338
; 		default:
; 		;
	.dbline 340
; 		
; 	  }  
L100:
	.dbline 342
; 	  
; 	 if(k>4) k=1;
	ldi R24,4
	ldi R25,0
	cp R24,R10
	cpc R25,R11
	brsh L103
X25:
	.dbline 342
	ldi R24,1
	movw R10,R24
L103:
	.dbline 343
; 	 if(k<1) k=4;
	movw R24,R10
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brsh L105
X26:
	.dbline 343
	ldi R24,4
	ldi R25,0
	movw R10,R24
L105:
	.dbline 345
;      
; 	Lcd_Function(k);
	mov R16,R10
	xcall _Lcd_Function
	.dbline 346
; 	}
L97:
	.dbline 348
; 	 
;    }
L95:
	.dbline 324
	xjmp L94
X27:
	.dbline -2
L93:
	.dbline 0 ; func end
	ret
	.dbsym r j 12 i
	.dbsym r i 12 i
	.dbsym r k 10 i
	.dbend
; }

⌨️ 快捷键说明

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