📄 numled.s
字号:
.module numled.c
.area data(ram, con, rel)
_num::
.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 C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\num_led\numled.c
.dbsym e num _num A[10:10]c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\num_led\numled.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 12
; //ICC-AVR application builder : 2005-3-2 下午 09:56:10
; // Target : M8
; // Crystal: 11.059Mhz
;
; #include <iom8v.h>
; #include <macros.h>
;
; char num[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
; //0x8,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60
; //3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
; void port_init(void)
; {
.dbline 13
; PORTB = 0xCF;
ldi R24,207
out 0x18,R24
.dbline 14
; DDRB = 0x30;
ldi R24,48
out 0x17,R24
.dbline 15
; PORTC = 0x4F; //m103 output only
ldi R24,79
out 0x15,R24
.dbline 16
; DDRC = 0x30;
ldi R24,48
out 0x14,R24
.dbline 17
; PORTD = 0xFF;
ldi R24,255
out 0x12,R24
.dbline 18
; DDRD = 0xFF;
out 0x11,R24
.dbline -2
.dbline 19
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 23
;
; //call this routine to initialise all peripherals
; void init_devices(void)
; {
.dbline 25
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
cli
.dbline 26
; port_init();
rcall _port_init
.dbline 28
;
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 29
; GICR = 0x00;
out 0x3b,R2
.dbline 30
; TIMSK = 0x00; //timer interrupt sources
out 0x39,R2
.dbline 31
; SEI(); //re-enable interrupts
sei
.dbline -2
.dbline 33
; //all peripherals are now initialised
; }
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay _delay fV
; j -> R16,R17
; i -> R18,R19
; z -> R20,R21
.even
_delay::
rcall push_gset1
.dbline -1
.dbline 36
;
; void delay(void)
; {
.dbline 38
clr R18
clr R19
rjmp L7
L4:
.dbline 38
L5:
.dbline 38
subi R18,255 ; offset = 1
sbci R19,255
L7:
.dbline 38
; unsigned int i,j,z;
; for(i=0;i<10000;i++);
cpi R18,16
ldi R30,39
cpc R19,R30
brlo L4
.dbline 39
; { for(j=0;j<10000;j++)
.dbline 39
clr R16
clr R17
rjmp L11
L8:
.dbline 40
.dbline 40
clr R20
clr R21
rjmp L15
L12:
.dbline 40
L13:
.dbline 40
subi R20,255 ; offset = 1
sbci R21,255
L15:
.dbline 40
cpi R20,100
ldi R30,0
cpc R21,R30
brlo L12
.dbline 40
L9:
.dbline 39
subi R16,255 ; offset = 1
sbci R17,255
L11:
.dbline 39
cpi R16,16
ldi R30,39
cpc R17,R30
brlo L8
.dbline 41
; { for(z=0;z<100;z++);}
; }
.dbline -2
.dbline 42
; }
L3:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r j 16 i
.dbsym r i 18 i
.dbsym r z 20 i
.dbend
.dbfunc e main _main fV
; i -> R20
.even
_main::
.dbline -1
.dbline 46
;
;
; void main(void)
; {
.dbline 48
; char i;
; init_devices();
rcall _init_devices
rjmp L18
L17:
.dbline 51
;
; while(1)
; {
.dbline 52
; PORTB |= 0x10;//位选1
sbi 0x18,4
.dbline 53
; for(i=0;i<=9;i++)
clr R20
rjmp L23
L20:
.dbline 54
.dbline 54
ldi R24,<_num
ldi R25,>_num
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0x12,R2
.dbline 55
rcall _delay
.dbline 56
L21:
.dbline 53
inc R20
L23:
.dbline 53
ldi R24,9
cp R24,R20
brsh L20
.dbline 57
; { PORTD = num[i];
; delay();
; }
; PORTB &= ~0x10;
cbi 0x18,4
.dbline 59
;
; PORTB |= 0x20;//位选2
sbi 0x18,5
.dbline 60
; for(i=0;i<=9;i++)
clr R20
rjmp L27
L24:
.dbline 61
.dbline 61
ldi R24,<_num
ldi R25,>_num
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0x12,R2
.dbline 62
rcall _delay
.dbline 63
L25:
.dbline 60
inc R20
L27:
.dbline 60
ldi R24,9
cp R24,R20
brsh L24
.dbline 64
; { PORTD = num[i];
; delay();
; }
; PORTB &= ~0x20;
cbi 0x18,5
.dbline 66
;
; PORTC |= 0x10;//位选3
sbi 0x15,4
.dbline 67
; for(i=0;i<=9;i++)
clr R20
rjmp L31
L28:
.dbline 68
.dbline 68
ldi R24,<_num
ldi R25,>_num
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0x12,R2
.dbline 69
rcall _delay
.dbline 70
L29:
.dbline 67
inc R20
L31:
.dbline 67
ldi R24,9
cp R24,R20
brsh L28
.dbline 71
; { PORTD = num[i];
; delay();
; }
; PORTC &= ~0x10;
cbi 0x15,4
.dbline 73
;
; PORTC |= 0x20;//位选4
sbi 0x15,5
.dbline 74
; for(i=0;i<=9;i++)
clr R20
rjmp L35
L32:
.dbline 75
.dbline 75
ldi R24,<_num
ldi R25,>_num
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0x12,R2
.dbline 76
rcall _delay
.dbline 77
L33:
.dbline 74
inc R20
L35:
.dbline 74
ldi R24,9
cp R24,R20
brsh L32
.dbline 78
cbi 0x15,5
.dbline 80
L18:
.dbline 50
rjmp L17
X0:
.dbline -2
.dbline 81
; { PORTD = num[i];
; delay();
; }
; PORTC &= ~0x20;
;
; }
; }
L16:
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -