📄 2.s
字号:
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 + -