📄 ps2_study.s
字号:
.dbline 255
; for(j=0;j<4;j++)
clr R20
xjmp L77
L74:
.dbline 256
; {
.dbline 258
;
; LCD_write_data(x, y+j, *(data+p), L_R);
std y+2,R10
mov R30,R22
clr R31
add R30,R12
adc R31,R13
lpm R30,Z
std y+0,R30
ldd R18,y+15
add R18,R20
ldd R16,y+13
xcall _LCD_write_data
.dbline 260
;
; for (i = p; i < p+32; i++)
mov R14,R22
xjmp L81
L78:
.dbline 261
.dbline 262
mov R18,R10
mov R30,R14
clr R31
add R30,R12
adc R31,R13
lpm R16,Z
xcall _LCD_write
.dbline 263
L79:
.dbline 260
inc R14
L81:
.dbline 260
mov R24,R22
subi R24,224 ; addi 32
cp R14,R24
brlo L78
.dbline 264
subi R22,224 ; addi 32
.dbline 265
L75:
.dbline 255
inc R20
L77:
.dbline 255
cpi R20,4
brlo L74
.dbline -2
.dbline 266
; {
; LCD_write(*(data + i), L_R);
; }
; p=p+32;
; }
; }
L73:
adiw R28,3
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r p 22 c
.dbsym r i 14 c
.dbsym r L_R 10 c
.dbsym r data 12 pc
.dbsym l y 15 c
.dbsym l x 13 c
.dbend
.dbfunc e LCD_char _LCD_char fV
; i -> R20
; L_R -> R22
; data -> R10,R11
; y -> R12
; x -> R14
.even
_LCD_char::
xcall push_gset5
mov R12,R18
mov R14,R16
sbiw R28,3
ldd R10,y+13
ldd R11,y+14
ldd R22,y+15
.dbline -1
.dbline 269
; //////////////////////////////////////////////////////////////////////
; void LCD_char(char x,char y,unsigned char const *data,char L_R)
; {
.dbline 271
; char i;
; LCD_write_data(x, y, *data, L_R);
std y+2,R22
movw R30,R10
lpm R30,Z
std y+0,R30
mov R18,R12
mov R16,R14
xcall _LCD_write_data
.dbline 272
; for (i = 1; i < 8; i++)
ldi R20,1
xjmp L86
L83:
.dbline 273
.dbline 274
mov R18,R22
mov R30,R20
clr R31
add R30,R10
adc R31,R11
lpm R16,Z
xcall _LCD_write
.dbline 275
L84:
.dbline 272
inc R20
L86:
.dbline 272
cpi R20,8
brlo L83
.dbline 277
; {
; LCD_write(*(data + i), L_R);
; }
;
; LCD_write_data(x, y + 1, *(data + 8), L_R);
std y+2,R22
movw R30,R10
adiw R30,8
lpm R30,Z
std y+0,R30
mov R18,R12
subi R18,255 ; addi 1
mov R16,R14
xcall _LCD_write_data
.dbline 278
; for (i = 9; i < 16; i++)
ldi R20,9
xjmp L90
L87:
.dbline 279
.dbline 280
mov R18,R22
mov R30,R20
clr R31
add R30,R10
adc R31,R11
lpm R16,Z
xcall _LCD_write
.dbline 281
L88:
.dbline 278
inc R20
L90:
.dbline 278
cpi R20,16
brlo L87
.dbline -2
.dbline 282
; {
; LCD_write(*(data + i), L_R);
; }
; }
L82:
adiw R28,3
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r L_R 22 c
.dbsym r data 10 pc
.dbsym r y 12 c
.dbsym r x 14 c
.dbend
.dbfunc e return_last _return_last fV
; n -> R20
.even
_return_last::
xcall push_gset1
mov R20,R16
sbiw R28,3
.dbline -1
.dbline 305
;
;
; /*void LCD_pic(char x,char y,unsigned char const *data,char L_R)
; {
; int i,j;
; int p=0;
; LED_ini();
; for(j=0;j<8;j++)
; {
;
; LCD_write_data(x, y+j, *(data+p), L_R);
;
; for (i = p; i < p+64; i++)
; {
; LCD_write(*(data + i), L_R);
; }
; p=p+64;
; }
;
; }*/
; /////////////////////////////////////////////////////////////
; void return_last(unsigned char n)
; {
.dbline 306
; LCD_China(0,n,fan,0);
clr R2
std y+2,R2
ldi R24,<_fan
ldi R25,>_fan
std y+0,R24
std y+1,R25
mov R18,R20
clr R16
xcall _LCD_China
.dbline 307
; LCD_China(17,n,hui,0);
clr R2
std y+2,R2
ldi R24,<_hui
ldi R25,>_hui
std y+0,R24
std y+1,R25
mov R18,R20
ldi R16,17
xcall _LCD_China
.dbline 308
; LCD_China(33,n,qing3,0);
clr R2
std y+2,R2
ldi R24,<_qing3
ldi R25,>_qing3
std y+0,R24
std y+1,R25
mov R18,R20
ldi R16,33
xcall _LCD_China
.dbline 309
; LCD_China(49,n,an,0);
clr R2
std y+2,R2
ldi R24,<_an
ldi R25,>_an
std y+0,R24
std y+1,R25
mov R18,R20
ldi R16,49
xcall _LCD_China
.dbline 310
; LCD_char(20,n,EE,1);
ldi R24,1
std y+2,R24
ldi R24,<_EE
ldi R25,>_EE
std y+0,R24
std y+1,R25
mov R18,R20
ldi R16,20
xcall _LCD_char
.dbline 311
; LCD_char(28,n,s,1);
ldi R24,1
std y+2,R24
ldi R24,<_s
ldi R25,>_s
std y+0,R24
std y+1,R25
mov R18,R20
ldi R16,28
xcall _LCD_char
.dbline 312
; LCD_char(36,n,c,1);
ldi R24,1
std y+2,R24
ldi R24,<_c
ldi R25,>_c
std y+0,R24
std y+1,R25
mov R18,R20
ldi R16,36
xcall _LCD_char
.dbline -2
.dbline 313
; }
L91:
adiw R28,3
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r n 20 c
.dbend
.dbfunc e Meu_ini _Meu_ini fV
; i -> R20
.even
_Meu_ini::
xcall push_gset1
sbiw R28,3
.dbline -1
.dbline 317
; //////////////////////////////////////////////////////////////////////////
;
; void Meu_ini(void)
; {
.dbline 318
; char i=0;
clr R20
.dbline 319
; LCD_write_command(0xc0, 0);//初始化x,y地址
clr R18
ldi R16,192
xcall _LCD_write_command
.dbline 320
; LCD_write_command(0xc0, 1);//初始化x,y地址
ldi R18,1
ldi R16,192
xcall _LCD_write_command
.dbline 321
; LCD_China_ini(0,4,zhao,0);
clr R2
std y+2,R2
ldi R24,<_zhao
ldi R25,>_zhao
std y+0,R24
std y+1,R25
ldi R18,4
clr R16
xcall _LCD_China_ini
.dbline 322
; LCD_China_ini(32,4,qing,0);
clr R2
std y+2,R2
ldi R24,<_qing
ldi R25,>_qing
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,32
xcall _LCD_China_ini
.dbline 323
; LCD_China_ini(0,4,xue,1);
ldi R24,1
std y+2,R24
ldi R24,<_xue
ldi R25,>_xue
std y+0,R24
std y+1,R25
ldi R18,4
clr R16
xcall _LCD_China_ini
.dbline 324
; LCD_China_ini(32,4,yuan,1);
ldi R24,1
std y+2,R24
ldi R24,<_yuan
ldi R25,>_yuan
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,32
xcall _LCD_China_ini
xjmp L94
L93:
.dbline 327
.dbline 328
ldi R16,90
ldi R17,0
xcall _Delaynms
.dbline 329
clr R18
mov R16,R20
ori R16,192
xcall _LCD_write_command
.dbline 330
ldi R18,1
mov R16,R20
ori R16,192
xcall _LCD_write_command
.dbline 331
inc R20
.dbline 332
L94:
.dbline 326
;
; while (17 != i)
cpi R20,17
brne L93
.dbline 333
; {
; Delaynms(90);
; LCD_write_command(0Xc0 | i, 0);
; LCD_write_command(0Xc0 | i, 1);
; i++;
; }
; LCD_China(1,8,dian,0);
clr R2
std y+2,R2
ldi R24,<_dian
ldi R25,>_dian
std y+0,R24
std y+1,R25
ldi R18,8
ldi R16,1
xcall _LCD_China
.dbline 334
; LCD_China(22,8,zhi,0);
clr R2
std y+2,R2
ldi R24,<_zhi
ldi R25,>_zhi
std y+0,R24
std y+1,R25
ldi R18,8
ldi R16,22
xcall _LCD_China
.dbline 335
; LCD_China(43,8,xin,0);
clr R2
std y+2,R2
ldi R24,<_xin
ldi R25,>_xin
std y+0,R24
std y+1,R25
ldi R18,8
ldi R16,43
xcall _LCD_China
.dbline 336
; LCD_China(1,8,xi,1);
ldi R24,1
std y+2,R24
ldi R24,<_xi
ldi R25,>_xi
std y+0,R24
std y+1,R25
ldi R18,8
ldi R16,1
xcall _LCD_China
.dbline 337
; LCD_China(22,8,gong,1);
ldi R24,1
std y+2,R24
ldi R24,<_gong
ldi R25,>_gong
std y+0,R24
std y+1,R25
ldi R18,8
ldi R16,22
xcall _LCD_China
.dbline 338
; LCD_China(43,8,cheng,1);
ldi R24,1
std y+2,R24
ldi R24,<_cheng
ldi R25,>_cheng
std y+0,R24
std y+1,R25
ldi R18,8
ldi R16,43
xcall _LCD_China
xjmp L97
L96:
.dbline 340
.dbline 341
ldi R16,90
ldi R17,0
xcall _Delaynms
.dbline 342
clr R18
mov R16,R20
ori R16,192
xcall _LCD_write_command
.dbline 343
ldi R18,1
mov R16,R20
ori R16,192
xcall _LCD_write_command
.dbline 344
inc R20
.dbline 345
L97:
.dbline 339
; while (32!= i)
cpi R20,32
brne L96
.dbline 346
; {
; Delaynms(90);
; LCD_write_command(0Xc0 | i, 0);
; LCD_write_command(0Xc0 | i, 1);
; i++;
; }
; LCD_China(40,10,cai,0);
clr R2
std y+2,R2
ldi R24,<_cai
ldi R25,>_cai
std y+0,R24
std y+1,R25
ldi R18,10
ldi R16,40
xcall _LCD_China
.dbline 347
; LCD_China(0,10,chu,1);
ldi R24,1
std y+2,R24
ldi R24,<_chu
ldi R25,>_chu
std y+0,R24
std y+1,R25
ldi R18,10
clr R16
xcall _LCD_China
.dbline 348
; LCD_China(23,10,bin,1);
ldi R24,1
std y+2,R24
ldi R24,<_bin
ldi R25,>_bin
std y+0,R24
std y+1,R25
ldi R18,10
ldi R16,23
xcall _LCD_China
.dbline 349
; i = 24;
ldi R20,24
xjmp L100
L99:
.dbline 351
.dbline 352
ldi R16,90
ldi R17,0
xcall _Delaynms
.dbline 353
L100:
.dbline 350
; while (i--)
mov R2,R20
clr R3
subi R20,1
tst R2
brne L99
.dbline 354
; {
; Delaynms(90);
; }
; LCD_clear();
xcall _LCD_clear
.dbline 355
; LCD_write_command(0Xc0, 0);
clr R18
ldi R16,192
xcall _LCD_write_command
.dbline 356
; LCD_write_command(0Xc0, 1);
ldi R18,1
ldi R16,192
xcall _LCD_write_command
.dbline -2
.dbline 358
;
; }
L92:
adiw R28,3
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e usart_init _usart_init fV
.even
_usart_init::
.dbline -1
.dbline 361
; //////////////////////////////////////////////////////
; void usart_init(void)
; {
.dbline 362
; UCSRB=0X00;
clr R2
out 0xa,R2
.dbline 363
; UCSRC=(1<<URSEL)|(1<<UMSEL)|(1<<UPM0)|(1<<UPM1)|(3<<UCSZ0);
ldi R24,246
out 0x20,R24
.dbline 367
; //UCSRC=BIT(URSEL)|0x06|(1<<UPM1)|(1<<UPM0);//设置数据位数
; ///UBRRH=0x33;//set band
; //UBRRL=0X00;
; UBRRH=0x00;//set band
out 0x20,R2
.dbline 368
; UBRRL=0X27;
ldi R24,39
out 0x9,R24
.dbline 369
; UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//数据接收和发送允许,接收完成中断允许
ldi R24,152
out 0xa,R24
.dbline -2
.dbline 371
; //SEI();
; }
L102:
.dbline 0 ; func end
ret
.dbend
.dbfunc e time0_init _time0_init fV
.even
_time0_init::
.dbline -1
.dbline 373
; void time0_init(void)
; {
.dbline 375
; //TCCR0=(1<<CS00);//8分频
; TCCR0=0x00;//8分频
clr R2
out 0x33,R2
.dbline 376
; TCNT0=0X38;
ldi R24,56
out 0x32,R24
.dbline 377
; TIMSK=(1<<TOIE0);
ldi R24,1
out 0x39,R24
.dbline -2
.dbline 378
; }
L103:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 36
jmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile D:\my_work\ps2_study\ps2_study.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
_timer0_ovf_isr::
st -y,R2
st -y,R3
st -y,R24
st -y,R25
st -y,R30
in R2,0x3f
st -y,R2
.dbline -1
.dbline 382
; ////////////////////////////////
; #pragma interrupt_handler timer0_ovf_isr:10
; void timer0_ovf_isr(void)
; {
.dbline 383
; flag_time0++;
lds R24,_flag_time0
subi R24,255 ; addi 1
sts _flag_time0,R24
.dbline 384
; if(flag_time0==5)
cpi R24,5
brne L105
.dbline 385
; {
.dbline 386
; flag_time0=0;
clr R2
sts _flag_time0,R2
.dbline 387
; flag_ms++;
lds R24,_flag_ms
lds R25,_flag_ms+1
adiw R24,1
sts _flag_ms+1,R25
sts _flag_ms,R24
.dbline 388
; if(flag_ms==1000)
cpi R24,232
ldi R30,3
cpc R25,R30
brne L107
.dbline 389
; {
.dbline 390
; flag_ms=0;
clr R3
sts _flag_ms+1,R3
sts _flag_ms,R2
.dbline 391
; flag_ts++;
lds R24,_flag_ts
subi R24,255 ; addi 1
sts _flag_ts,R24
.dbline 392
; }
L107:
.dbline 393
; }
L105:
.dbline 394
; TCNT0 = 0x38;//reload counter value
ldi R24,56
out 0x32,R24
.dbline -2
.dbline 395
; }
L104:
ld R2,y+
out 0x3f,R2
ld R30,y+
ld R25,y+
ld R24,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e char_display _char_display fV
.even
_char_display::
sbiw R28,3
.dbline -1
.dbline 398
; /////////////////////////////////////////////////////
; void char_display(void)
; {
.dbline 399
; if(flag_char1==1)
lds R24,_flag_char1
cpi R24,1
breq X0
xjmp L110
X0:
.dbline 400
; {
.dbline 401
; LCD_clear();
xcall _LCD_clear
.dbline 402
; LCD_char(9,0,b,0);
clr R2
std y+2,R2
ldi R24,<_b
ldi R25,>_b
std y+0,R24
std y+1,R25
clr R18
ldi R16,9
xcall _LCD_char
.dbline 403
; LCD_char(27,0,d,0);
clr R2
std y+2,R2
ldi R24,<_d
ldi R25,>_d
std y+0,R24
std y+1,R25
clr R18
ldi R16,27
xcall _LCD_char
.dbline 404
; LCD_char(36,0,e,0);
clr R2
std y+2,R2
ldi R24,<_e
ldi R25,>_e
std y+0,R24
std y+1,R25
clr R18
ldi R16,36
xcall _LCD_char
.dbline 405
; LCD_char(54,0,g,0);
clr R2
std y+2,R2
ldi R24,<_g
ldi R25,>_g
std y+0,R24
std y+1,R25
clr R18
ldi R16,54
xcall _LCD_char
.dbline 406
; LCD_char(9,4,i,0);
clr R2
std y+2,R2
ldi R24,<_i
ldi R25,>_i
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,9
xcall _LCD_char
.dbline 407
; LCD_char(18,4,j,0);
clr R2
std y+2,R2
ldi R24,<_j
ldi R25,>_j
std y+0,R24
std y+1,R25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -