📄 40+
字号:
.module djs.c
.area data(ram, con, rel)
_led::
.blkb 2
.area idata
.byte 63,6
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 91,'O
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 'f,'m
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 125,7
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 127,'o
.area data(ram, con, rel)
.dbfile E:\暑假AVR培训\暑假AVR培训\djs.c
.dbsym e led _led A[10:10]c
_FOR::
.blkb 2
.area idata
.word 500
.area data(ram, con, rel)
.dbfile E:\暑假AVR培训\暑假AVR培训\djs.c
.dbsym e FOR _FOR I
.area text(rom, con, rel)
.dbfile E:\暑假AVR培训\暑假AVR培训\djs.c
.dbfunc e delay _delay fV
; i -> R20
; j -> R22
; x -> R16
.even
_delay::
xcall push_gset2
.dbline -1
.dbline 6
; #include<iom16.h>
; unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
; unsigned int CNT;
; signed int FOR=500;
; void delay(unsigned char x)
; {
.dbline 8
; unsigned char i,j;
; for(i=0;i<100;i++)
clr R20
xjmp L5
L2:
.dbline 9
clr R22
xjmp L9
L6:
.dbline 9
L7:
.dbline 9
inc R22
L9:
.dbline 9
cp R22,R16
brlo L6
L3:
.dbline 8
inc R20
L5:
.dbline 8
cpi R20,100
brlo L2
.dbline -2
L1:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 22 c
.dbsym r x 16 c
.dbend
.dbfunc e main _main fV
; s -> R20
; g -> R22
.even
_main::
.dbline -1
.dbline 12
; for(j=0;j<x;j++);
; }
; void main(void)
; {
.dbline 14
; unsigned char g,s;
; CNT=39;
ldi R24,39
ldi R25,0
sts _CNT+1,R25
sts _CNT,R24
.dbline 15
; DDRA=0XFF;
ldi R24,255
out 0x1a,R24
.dbline 16
; DDRB=0XFF;
out 0x17,R24
.dbline 17
; TCCR0=1<<CS01;
ldi R24,2
out 0x33,R24
.dbline 18
; OCR0=248;
ldi R24,248
out 0x3c,R24
.dbline 19
; TIMSK=1<<OCIE0;
ldi R24,2
out 0x39,R24
.dbline 20
; SREG|=0x80;
bset 7
xjmp L12
L11:
.dbline 22
.dbline 23
ldi R18,10
ldi R19,0
lds R16,_CNT
lds R17,_CNT+1
xcall div16u
mov R20,R16
.dbline 24
ldi R18,10
ldi R19,0
lds R16,_CNT
lds R17,_CNT+1
xcall mod16u
mov R22,R16
.dbline 25
ldi R24,<_led
ldi R25,>_led
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0x1b,R2
.dbline 26
ldi R24,254
out 0x18,R24
.dbline 27
ldi R16,10
xcall _delay
.dbline 28
ldi R24,255
out 0x18,R24
.dbline 29
ldi R24,<_led
ldi R25,>_led
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0x1b,R2
.dbline 30
ldi R24,253
out 0x18,R24
.dbline 31
ldi R16,10
xcall _delay
.dbline 32
ldi R24,255
out 0x18,R24
.dbline 33
L12:
.dbline 21
xjmp L11
X0:
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbsym r s 20 c
.dbsym r g 22 c
.dbend
.area vector(rom, abs)
.org 76
jmp _int_djs
.area text(rom, con, rel)
.dbfile E:\暑假AVR培训\暑假AVR培训\djs.c
.dbfunc e int_djs _int_djs fV
.even
_int_djs::
st -y,R2
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 37
; while(1)
; {
; s=CNT/10;
; g=CNT%10;
; PORTA=led[s];
; PORTB=0xfe;
; delay(10);
; PORTB=0xff;
; PORTA=led[g];
; PORTB=0xfd;
; delay(10);
; PORTB=0xff;
; }
; }
; #pragma interrupt_handler int_djs:20
; void int_djs(void)
; {
.dbline 38
; FOR--;
lds R24,_FOR
lds R25,_FOR+1
sbiw R24,1
sts _FOR+1,R25
sts _FOR,R24
.dbline 39
; if(FOR==0)
cpi R24,0
cpc R24,R25
brne L15
X1:
.dbline 40
; {FOR=500;
.dbline 40
ldi R24,500
ldi R25,1
sts _FOR+1,R25
sts _FOR,R24
.dbline 41
; CNT--;
lds R24,_CNT
lds R25,_CNT+1
sbiw R24,1
sts _CNT+1,R25
sts _CNT,R24
.dbline 42
; if(CNT<=0)
cpi R24,0
cpc R24,R25
brne L17
X2:
.dbline 43
ldi R24,39
ldi R25,0
sts _CNT+1,R25
sts _CNT,R24
L17:
.dbline 43
; CNT=39;}
L15:
.dbline 44
; TCNT0=0;
clr R2
out 0x32,R2
.dbline -2
L14:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.area bss(ram, con, rel)
.dbfile E:\暑假AVR培训\暑假AVR培训\djs.c
_CNT::
.blkb 2
.dbsym e CNT _CNT i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -