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

📄 2.s

📁 万年历 megal128 iccavr开发平台
💻 S
📖 第 1 页 / 共 3 页
字号:
	std y+0,R2
	ldi R18,6
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 230
; write_ASCII(0xf9,7,0,table[lcd_buff[2]]);//分钟高位	
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff+2
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,7
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 231
; write_ASCII(0xf9,8,0,table[lcd_buff[3]]); //分钟地位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff+3
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,8
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 232
; write_ASCII(0xf9,10,0,48);// 0
	ldi R24,48
	ldi R25,0
	std y+3,R25
	std y+2,R24
	clr R2
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,10
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 233
; write_ASCII(0xf9,11,0,48);//0
	ldi R24,48
	ldi R25,0
	std y+3,R25
	std y+2,R24
	clr R2
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,11
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline -2
L76:
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e lcd_time1 _lcd_time1 fV
	.even
_lcd_time1::
	sbiw R28,4
	.dbline -1
	.dbline 236
; }
; void lcd_time1(void)
; {
	.dbline 237
; write_hazi(9,0,biao1[lcd_buff1[8]-1],biao2[lcd_buff1[8]-1]);//一,二,三,四,五,六,日
	ldi R24,<_biao2-1
	ldi R25,>_biao2-1
	lds R30,_lcd_buff1+8
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,<_biao1-1
	ldi R25,>_biao1-1
	lds R30,_lcd_buff1+8
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R19
	ldi R16,9
	ldi R17,0
	xcall _write_hazi
	.dbline 238
; write_ASCII(0xf9,4,16,table[lcd_buff1[0]]);//年第四位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff1
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,4
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 239
; write_ASCII(0xf9,5,16,table[lcd_buff1[1]]);//年第三位		
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff1+1
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,5
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 240
; write_ASCII(0xf9,6,16,table[lcd_buff1[2]]);//年第二位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff1+2
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,6
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 241
; write_ASCII(0xf9,7,16,table[lcd_buff1[3]]);//年第一位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff1+3
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,7
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 242
; write_ASCII(0xf9,10,16,table[lcd_buff1[4]]);//月份高位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff1+4
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,10
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 243
; write_ASCII(0xf9,11,16,table[lcd_buff1[5]]);//月份低位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff1+5
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,11
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 244
; write_ASCII(0xf9,14,16,table[lcd_buff1[6]]);//日期高位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff1+6
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,14
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 245
; write_ASCII(0xf9,15,16,table[lcd_buff1[7]]);//日期低位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff1+7
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,15
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline -2
L80:
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ks _ks fc
;              m -> R20
;              j -> R22
	.even
_ks::
	xcall push_gset2
	.dbline -1
	.dbline 251
; }
; /**********************************************/
; 	 /*查键盘*/
; /**********************************************/	
; unsigned char ks(void)
; {
	.dbline 253
;  unsigned char m,j;
;  DDRB=0x0f;	
	ldi R24,15
	out 0x17,R24
	.dbline 254
;  PORTB=0xff;
	ldi R24,255
	out 0x18,R24
	.dbline 255
;  for(j=0;j<4;j++)
	clr R22
	xjmp L96
L93:
	.dbline 256
;  {
	.dbline 257
;  PORTB=~(1<<j);
	ldi R16,1
	mov R17,R22
	xcall lsl8
	mov R2,R16
	com R2
	out 0x18,R2
	.dbline 258
;  delay(50);
	ldi R16,50
	ldi R17,0
	xcall _delay
	.dbline 259
;  m=PINB&0xf0;    //屏蔽低四位
	in R20,0x16
	andi R20,240
	.dbline 260
;  if(m!=0xf0)
	cpi R20,240
	breq L97
	.dbline 261
;   return 0xff;
	ldi R16,255
	xjmp L92
L97:
	.dbline 262
L94:
	.dbline 255
	inc R22
L96:
	.dbline 255
	cpi R22,4
	brlo L93
	.dbline 263
;  }
;  return 0x00;
	clr R16
	.dbline -2
L92:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r m 20 c
	.dbsym r j 22 c
	.dbend
	.dbfunc e main _main fV
;              a -> R20
;              b -> R22
;            key -> R10
	.even
_main::
	.dbline -1
	.dbline 266
; }
; void main(void)
; {
	.dbline 267
;  unsigned char key,b=0,a=0;
	clr R22
	.dbline 267
	clr R20
	.dbline 268
;  SREG=0x80;
	ldi R24,128
	out 0x3f,R24
	.dbline 269
;  TIMSK=0x01;
	ldi R24,1
	out 0x37,R24
	.dbline 270
;  DDRA=0xff;
	ldi R24,255
	out 0x1a,R24
	.dbline 271
;  PORTA=0xff;
	out 0x1b,R24
	.dbline 272
;  timer0_init();
	xcall _timer0_init
	.dbline 273
;  ocmj_init();//初始化	
	xcall _ocmj_init
	.dbline 274
;  ocmj_write(0xf4);//清屏
	ldi R16,244
	xcall _ocmj_write
	xjmp L101
X10:
	.dbline 276
;  while(1)
;  {
L103:
	.dbline 278
;    while((ks()==0xff)&&(scan_key()==10))    //置时间,当有键按下,且键为10时,小时,分钟都置0
;    {
	.dbline 279
;      for(;;)
L106:
	.dbline 280
;      {
	.dbline 281
;       lcd_buff[0]=0;//小时
	clr R2
	sts _lcd_buff,R2
	.dbline 283
; 	  
; 	  lcd_buff[1]=0;
	sts _lcd_buff+1,R2
	.dbline 284
; 	  lcd_buff[2]=0;  //分钟
	sts _lcd_buff+2,R2
	.dbline 285
; 	  lcd_buff[3]=0;
	sts _lcd_buff+3,R2
	.dbline 286
; 	  lcd_time1();//显示小时,分钟
	xcall _lcd_time1
	.dbline 287
; 	  second=0;
	clr R2
	sts _second,R2
	.dbline 288
;       TCCR0=0x00;
	out 0x33,R2
	.dbline 290
; 	//**************************************  
; 	  delay(65000);                       //还不明白,有待继续考虑?????????
	ldi R16,65000
	ldi R17,253
	xcall _delay
	.dbline 291
;       if(ks()==0xff) break;      
	xcall _ks
	cpi R16,255
	brne L106
	.dbline 291
	.dbline 293
; 	//*********************************  
;      }
	.dbline 279
	.dbline 279
	xjmp L116
L115:
	.dbline 295
;     while(1)
;     {
	.dbline 296
; 	 if(ks()==0xff)
	xcall _ks
	cpi R16,255
	brne L118
	.dbline 297
; 	 {
	.dbline 298
;       key=scan_key();
	xcall _scan_key
	mov R10,R16
	.dbline 299
;       lcd_buff[b]=key;
	ldi R24,<_lcd_buff
	ldi R25,>_lcd_buff
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R10
	.dbline 300
;       lcd_time();
	xcall _lcd_time
	.dbline 301
;       delay(65000);
	ldi R16,65000
	ldi R17,253
	xcall _delay
	.dbline 302
;       b++;
	inc R22
	.dbline 303
;       if(b>3)//再怎么按也无效
	ldi R24,3
	cp R24,R22
	brsh L120
	.dbline 304
; 	  {
	.dbline 305
; 	    hour=lcd_buff[0]*10+lcd_buff[1];
	lds R2,_lcd_buff
	ldi R24,10
	mul R24,R2
	lds R2,_lcd_buff+1
	mov R3,R0
	add R3,R2
	sts _hour,R3
	.dbline 306
; 	    minute=lcd_buff[2]*10+lcd_buff[3];
	lds R2,_lcd_buff+2
	mul R24,R2
	lds R2,_lcd_buff+3
	mov R3,R0
	add R3,R2
	sts _minute,R3
	.dbline 307
; 	    TCCR0=0x05;//128分频
	ldi R24,5
	out 0x33,R24
	.dbline 308
; 	    TCNT0=0x00;
	clr R2
	out 0x32,R2
	.dbline 309
;         b=0;
	clr R22
	.dbline 310
; 	    break;
	xjmp L117
L120:
	.dbline 312
; 	  }
;      }
L118:
	.dbline 313
L116:
	.dbline 294
	xjmp L115
L117:
	.dbline 314
L104:
	.dbline 277
	xcall _ks
	cpi R16,255
	brne L125
	xcall _scan_key
	cpi R16,10
	brne X12
	xjmp L103
X12:
L125:
	xjmp L127
L126:
	.dbline 316
;     }
;    }
;    while((ks()==0xff)&&(scan_key()==11))     //置日历和星期//按下后,其显年,月,日,置0,星期置1
;    {
	.dbline 317
; 	  flag=1;       
	ldi R24,1
	sts _flag,R24
	.dbline 318
;       for(;;)
L129:
	.dbline 319
;       {
	.dbline 320
;       lcd_buff1[0]=0; 
	clr R2
	sts _lcd_buff1,R2
	.dbline 321
; 	  lcd_buff1[1]=0;
	sts _lcd_buff1+1,R2
	.dbline 322
; 	  lcd_buff1[2]=0;
	sts _lcd_buff1+2,R2
	.dbline 323
; 	  lcd_buff1[3]=0;
	sts _lcd_buff1+3,R2
	.dbline 324
; 	  lcd_buff1[4]=0;
	sts _lcd_buff1+4,R2
	.dbline 325
; 	  lcd_buff1[5]=0;
	sts _lcd_buff1+5,R2
	.dbline 326
; 	  lcd_buff1[6]=0;
	sts _lcd_buff1+6,R2
	.dbline 327
; 	  lcd_buff1[7]=0;
	sts _lcd_buff1+7,R2
	.dbline 328
; 	  lcd_buff1[8]=1;
	ldi R24,1
	sts _lcd_buff1+8,R24
	.dbline 329
; 	  lcd_time1(); //显示年月,日,星期
	xcall _lcd_time1
	.dbline 330
; 	  delay(65000);
	ldi R16,65000
	ldi R17,253
	xcall _delay
	.dbline 331
;       if(ks()==0xff)//同上,有待考虑
	xcall _ks
	cpi R16,255
	brne L129
	.dbline 332
;       break;
	.dbline 333
;       }
	.dbline 318
	.dbline 318
	xjmp L144
L143:
	.dbline 335
; 	  while(1)
; 	  {
	.dbline 336
; 	    if(ks()==0xff)  //有键按下
	xcall _ks
	cpi R16,255
	breq X13
	xjmp L146
X13:
	.dbline 337
;     {
	.dbline 338
;          key=scan_key();
	xcall _scan_key
	mov R10,R16
	.dbline 339
;          lcd_buff1[a]=key;
	ldi R24,<_lcd_buff1
	ldi R25,>_lcd_buff1
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R10
	.dbline 340
; 	     lcd_time1();
	xcall _lcd_time1
	.dbline 341
;          delay(65000);
	ldi R16,65000
	ldi R17,253
	xcall _delay
	.dbline 342
;          a++;
	inc R20
	.dbline 343
;     	 if(a>8)    
	ldi R24,8
	cp R24,R20
	brsh L148
	.dbline 344
; 	     {
	.dbline 345
;   	       year=lcd_buff1[0]*1000+lcd_buff1[1]*100+lcd_buff1[2]*10+lcd_buff1[3];
	lds R2,_lcd_buff1+1
	ldi R24,100
	mul R24,R2
	movw R2,R0
	lds R18,_lcd_buff1
	clr R19
	ldi R16,1000
	ldi R17,3
	xcall empy16s
	movw R4,R16
	add R4,R2
	adc R5,R3
	lds R2,_lcd_buff1+2
	ldi R24,10
	mul R24,R2
	add R4,R0
	adc R5,R1
	lds R2,_lcd_buff1+3
	clr R3
	add R4,R2
	adc R5,R3
	sts _year+1,R5
	sts _year,R4
	.dbline 346
; 	       month=lcd_buff1[4]*10+lcd_buff1[5];
	lds R2,_lcd_buff1+4
	mul R24,R2
	lds R2,_lcd_buff1+5
	mov R3,R0
	add R3,R2
	sts _month,R3
	.dbline 347
; 	       days=lcd_buff1[6]*10+lcd_buff1[7];
	lds R2,_lcd_buff1+6
	mul R24,R2
	lds R2,_lcd_buff1+7
	mov R3,R0
	add R3,R2
	sts _days,R3
	.dbline 348
; 	       day=lcd_buff1[8];
	lds R2,_lcd_buff1+8
	sts _day,R2
	.dbline 349
;                a=0;
	clr R20
	.dbline 350
; 	       flag=0; //见显示部分
	clr R2
	sts _flag,R2
	.dbline 351
; 	       break;
	xjmp L145
L148:
	.dbline 353
; 	     }
;         }
L146:
	.dbline 354
L144:
	.dbline 334
	xjmp L143
L145:
	.dbline 355
L127:
	.dbline 315
	xcall _ks
	cpi R16,255
	brne L158
	xcall _scan_key
	cpi R16,11
	brne X14
	xjmp L126
X14:
L158:
	.dbline 356
L101:
	.dbline 275
	xjmp L104
X11:
	.dbline -2
L99:
	.dbline 0 ; func end
	ret
	.dbsym r a 20 c
	.dbsym r b 22 c
	.dbsym r key 10 c
	.dbend

⌨️ 快捷键说明

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