📄 io.lis
字号:
.module io.c
.area text(rom, con, rel)
0000 .dbfile E:\wu\单片机教学\IO实验程序\io.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2005-3-1 6:11:41
0000 ; // Target : M8
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTB = 0xFF;
0000 8FEF ldi R24,255
0002 88BB out 0x18,R24
0004 .dbline 11
0004 ; DDRB = 0x00;
0004 2224 clr R2
0006 27BA out 0x17,R2
0008 .dbline 12
0008 ; PORTC = 0x7F; //m103 output only
0008 8FE7 ldi R24,127
000A 85BB out 0x15,R24
000C .dbline 13
000C ; DDRC = 0x20;
000C 80E2 ldi R24,32
000E 84BB out 0x14,R24
0010 .dbline 14
0010 ; PORTD = 0xFF;
0010 8FEF ldi R24,255
0012 82BB out 0x12,R24
0014 .dbline 15
0014 ; DDRD = 0xFF;
0014 81BB out 0x11,R24
0016 .dbline -2
0016 .dbline 16
0016 ; }
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e init_devices _init_devices fV
.even
0018 _init_devices::
0018 .dbline -1
0018 .dbline 20
0018 ;
0018 ; //call this routine to initialise all peripherals
0018 ; void init_devices(void)
0018 ; {
0018 .dbline 22
0018 ; //stop errant interrupts until set up
0018 ; CLI(); //disable all interrupts
0018 F894 cli
001A .dbline 23
001A ; port_init();
001A F2DF rcall _port_init
001C .dbline 25
001C ;
001C ; MCUCR = 0x00;
001C 2224 clr R2
001E 25BE out 0x35,R2
0020 .dbline 26
0020 ; GICR = 0x00;
0020 2BBE out 0x3b,R2
0022 .dbline 27
0022 ; TIMSK = 0x00; //timer interrupt sources
0022 29BE out 0x39,R2
0024 .dbline 28
0024 ; SEI(); //re-enable interrupts
0024 7894 sei
0026 .dbline -2
0026 .dbline 30
0026 ; //all peripherals are now initialised
0026 ; }
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e delay _delay fV
0028 ; k -> R20,R21
0028 ; i -> R22,R23
0028 ; j -> R10,R11
0028 ; time -> R16
.even
0028 _delay::
0028 00D0 rcall push_gset3
002A .dbline -1
002A .dbline 33
002A ;
002A ; void delay(char time)//延时函数,单位延时0.25s。
002A ; { unsigned int i,j,k;
002A .dbline 34
002A ; for(k=0;k<time;k++)
002A 4427 clr R20
002C 5527 clr R21
002E 16C0 rjmp L7
0030 L4:
0030 .dbline 35
0030 ; for(i=0;i<1500;i++)
0030 6627 clr R22
0032 7727 clr R23
0034 0DC0 rjmp L11
0036 L8:
0036 .dbline 36
0036 AA24 clr R10
0038 BB24 clr R11
003A 03C0 rjmp L15
003C L12:
003C .dbline 36
003C L13:
003C .dbline 36
003C C501 movw R24,R10
003E 0196 adiw R24,1
0040 5C01 movw R10,R24
0042 L15:
0042 .dbline 36
0042 C501 movw R24,R10
0044 8436 cpi R24,100
0046 E0E0 ldi R30,0
0048 9E07 cpc R25,R30
004A C0F3 brlo L12
004C L9:
004C .dbline 35
004C 6F5F subi R22,255 ; offset = 1
004E 7F4F sbci R23,255
0050 L11:
0050 .dbline 35
0050 6C3D cpi R22,220
0052 E5E0 ldi R30,5
0054 7E07 cpc R23,R30
0056 78F3 brlo L8
0058 L5:
0058 .dbline 34
0058 4F5F subi R20,255 ; offset = 1
005A 5F4F sbci R21,255
005C L7:
005C .dbline 34
005C 202E mov R2,R16
005E 3324 clr R3
0060 4215 cp R20,R2
0062 5305 cpc R21,R3
0064 28F3 brlo L4
0066 .dbline -2
0066 .dbline 37
0066 ; for(j=0;j<100;j++);
0066 ; }
0066 L3:
0066 00D0 rcall pop_gset3
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbsym r k 20 i
006A .dbsym r i 22 i
006A .dbsym r j 10 i
006A .dbsym r time 16 c
006A .dbend
.area lit(rom, con, rel)
0000 L17:
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 6666 .byte 'f,'f
0006 7D07 .byte 125,7
0008 7F .byte 127
.area text(rom, con, rel)
006A .dbfile E:\wu\单片机教学\IO实验程序\io.c
006A .dbfunc e main _main fV
006A ; led -> y+0
006A ; data -> R20
006A ; i -> R22
.even
006A _main::
006A 2997 sbiw R28,9
006C .dbline -1
006C .dbline 40
006C ;
006C ; void main(void)
006C ; {
006C .dbline 43
006C ; char i;
006C ; char data;
006C ; char led[9] = {0x3F,0x06, 0x5B, 0x4F, 0x66 ,0x66, 0x7D, 0x07, 0x7F}; //数码管码值
006C 80E0 ldi R24,<L17
006E 90E0 ldi R25,>L17
0070 FE01 movw R30,R28
0072 09E0 ldi R16,9
0074 10E0 ldi R17,0
0076 FA93 st -y,R31
0078 EA93 st -y,R30
007A 9A93 st -y,R25
007C 8A93 st -y,R24
007E 00D0 rcall asgncblk
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -