📄 dianzhen.s
字号:
.module dianzhen.c
.area lit(rom, con, rel)
_Tab::
.byte 33,249
.byte 19,'Q
.byte 201,'E
.byte 5,241
.byte 1,'A
.byte 129,13
.byte 39,25
.byte 7,135
.dbfile C:\ATMega8515\点阵/ForATmega8515.h
.dbsym e Tab _Tab A[16:16]kc
_pic1::
.byte 24,24
.byte 153,219
.byte 126,60
.byte 24,0
.dbfile C:\ATMega8515\点阵\dianzhen.c
.dbsym e pic1 _pic1 A[8:8]kc
_pic2::
.byte 48,24
.byte 12,254
.byte 254,12
.byte 24,48
.dbsym e pic2 _pic2 A[8:8]kc
_pic3::
.byte 0,24
.byte 60,126
.byte 219,153
.byte 24,24
.dbsym e pic3 _pic3 A[8:8]kc
_pic4::
.byte 12,24
.byte 48,127
.byte 127,48
.byte 24,12
.dbsym e pic4 _pic4 A[8:8]kc
_line::
.byte 0,2
.byte 4,6
.byte 8,10
.byte 12,14
.dbsym e line _line A[8:8]kc
.area text(rom, con, rel)
.dbfile C:\ATMega8515\点阵\dianzhen.c
.dbfunc e main _main fV
; softdelay -> R20,R21
.even
_main::
.dbline -1
.dbline 19
; #include <iom8515v.h>
; #include <macros.h>
; #include"ForATmega8515.h"
; //延时(短)
; #define SomeNop NOP();NOP();NOP();NOP();NOP();NOP();\
; NOP();NOP();NOP();NOP();NOP();NOP();\
; NOP();NOP();NOP();NOP();NOP();NOP();
;
; uchar const pic1[]={0x18,0x18,0x99,0xDB,0x7E,0x3C,0x18,0x00};
; uchar const pic2[]={0x30,0x18,0x0C,0xFE,0xFE,0x0C,0x18,0x30};
; uchar const pic3[]={0x00,0x18,0x3C,0x7E,0xDB,0x99,0x18,0x18};
; uchar const pic4[]={0x0C,0x18,0x30,0x7F,0x7F,0x30,0x18,0x0C};
; uchar const line[]={0,2,4,6,8,10,12,14};
;
; void delay(uint tick);//延时(长)
; void display(uchar const *graph);
;
; void main()
; {
.dbline 20
; uint softdelay=1000;
ldi R20,1000
ldi R21,3
.dbline 21
; init_devices();
rcall _init_devices
rjmp L3
X0:
.dbline 23
; while(1)
; {
L5:
.dbline 24
ldi R16,<_pic1
ldi R17,>_pic1
rcall _display
L6:
.dbline 24
; while(softdelay--)display(pic1);//显示pic1
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L5
tst R3
brne L5
X1:
.dbline 25
; softdelay=1000;
ldi R20,1000
ldi R21,3
rjmp L9
L8:
.dbline 26
ldi R16,<_pic2
ldi R17,>_pic2
rcall _display
L9:
.dbline 26
; while(softdelay--)display(pic2);//显示pic2
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L8
tst R3
brne L8
X2:
.dbline 27
; softdelay=1000;
ldi R20,1000
ldi R21,3
rjmp L12
L11:
.dbline 28
ldi R16,<_pic3
ldi R17,>_pic3
rcall _display
L12:
.dbline 28
; while(softdelay--)display(pic3);//显示pic3
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L11
tst R3
brne L11
X3:
.dbline 29
; softdelay=1000;
ldi R20,1000
ldi R21,3
rjmp L15
L14:
.dbline 30
ldi R16,<_pic4
ldi R17,>_pic4
rcall _display
L15:
.dbline 30
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L14
tst R3
brne L14
X4:
.dbline 31
ldi R20,1000
ldi R21,3
.dbline 32
L3:
.dbline 22
rjmp L6
X5:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r softdelay 20 i
.dbend
.dbfunc e delay _delay fV
; i -> R20
; ticks -> R16,R17
.even
_delay::
rcall push_gset1
.dbline -1
.dbline 36
; while(softdelay--)display(pic4);//显示pic4
; softdelay=1000;
; }
; }
;
; void delay(uint ticks)
; {
.dbline 38
rjmp L21
L18:
.dbline 38
ldi R20,200
rjmp L25
L22:
.dbline 38
L23:
.dbline 38
dec R20
L25:
.dbline 38
tst R20
brne L22
L19:
.dbline 38
subi R16,1
sbci R17,0
L21:
.dbline 38
; uchar i;
; for(;ticks!=0;ticks--)for(i=200;i!=0;i--);
cpi R16,0
cpc R16,R17
brne L18
X6:
.dbline -2
L17:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r ticks 16 i
.dbend
.dbfunc e display _display fV
; i -> R20
; graph -> R22,R23
.even
_display::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 42
; }
;
; void display(uchar const *graph)
; {
.dbline 44
; uchar i;
; for(i=0;i!=8;i++)
clr R20
rjmp L30
L27:
.dbline 45
.dbline 46
sbi 0x18,0
.dbline 47
movw R2,R22
subi R22,255 ; offset = 1
sbci R23,255
movw R30,R2
lpm R30,Z
out 0xf,R30
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 48
nop
.dbline 49
in R24,0x18
andi R24,241
out 0x18,R24
.dbline 50
ldi R24,<_line
ldi R25,>_line
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
in R2,0x18
or R2,R30
out 0x18,R2
.dbline 51
cbi 0x18,0
.dbline 52
ldi R16,1
ldi R17,0
rcall _delay
.dbline 53
L28:
.dbline 44
inc R20
L30:
.dbline 44
cpi R20,8
breq X7
rjmp L27
X7:
.dbline -2
L26:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r graph 22 pkc
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -