⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.lis

📁 学单片机得先弄懂它的IO口
💻 LIS
字号:
                        .module led.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\icc\mega32\led.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 10
 0000           ; //ICC-AVR application builder : 2008-07-02 下午 03:28:23
 0000           ; // Target : M32
 0000           ; // Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom32v.h>
 0000           ; #include <macros.h>
 0000           ; #define  uchar unsigned char  
 0000           ; 
 0000           ; void port_init(void) //端口定义
 0000           ; {
 0000                   .dbline 11
 0000           ;  PORTA = 0x00;       //低电平
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004                   .dbline 12
 0004           ;  DDRA  = 0xFF;       //输入
 0004 8FEF              ldi R24,255
 0006 8ABB              out 0x1a,R24
 0008                   .dbline 13
 0008           ;  PORTB = 0x00;       //低电平
 0008 28BA              out 0x18,R2
 000A                   .dbline 14
 000A           ;  DDRB  = 0xFF;       //输出
 000A 87BB              out 0x17,R24
 000C                   .dbline 15
 000C           ;  PORTC = 0x00; 
 000C 25BA              out 0x15,R2
 000E                   .dbline 16
 000E           ;  DDRC  = 0x00;
 000E 24BA              out 0x14,R2
 0010                   .dbline 17
 0010           ;  PORTD = 0x00;
 0010 22BA              out 0x12,R2
 0012                   .dbline 18
 0012           ;  DDRD  = 0x3C;
 0012 8CE3              ldi R24,60
 0014 81BB              out 0x11,R24
 0016                   .dbline -2
 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 23
 0018           ; }
 0018           ; 
 0018           ; //call this routine to initialize all peripherals
 0018           ; void init_devices(void)
 0018           ; {
 0018                   .dbline 25
 0018           ;  //stop errant interrupts until set up
 0018           ;  CLI(); //disable all interrupts
 0018 F894              cli
 001A                   .dbline 26
 001A           ;  port_init();
 001A F2DF              xcall _port_init
 001C                   .dbline 28
 001C           ; 
 001C           ;  MCUCR = 0x00;
 001C 2224              clr R2
 001E 25BE              out 0x35,R2
 0020                   .dbline 29
 0020           ;  GICR  = 0x00;
 0020 2BBE              out 0x3b,R2
 0022                   .dbline 30
 0022           ;  TIMSK = 0x00; //timer interrupt sources
 0022 29BE              out 0x39,R2
 0024                   .dbline 31
 0024           ;  SEI(); //re-enable interrupts
 0024 7894              sei
 0026                   .dbline -2
 0026           L2:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbend
 0028                   .dbfunc e delay_1us _delay_1us fV
 0028           ;              i -> R16
                        .even
 0028           _delay_1us::
 0028                   .dbline -1
 0028                   .dbline 37
 0028           ;  //all peripherals are now initialized
 0028           ; }
 0028           ; 
 0028           ; //1微秒延时
 0028           ; void delay_1us(void)
 0028           ; {       uchar i=8;
 0028                   .dbline 37
 0028 08E0              ldi R16,8
 002A                   .dbline 38
 002A           ;        asm("nop");
 002A 0000              nop
 002C                   .dbline 39
 002C           ;         i--;
 002C 0A95              dec R16
 002E                   .dbline -2
 002E           L3:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbsym r i 16 c
 0030                   .dbend
 0030                   .dbfunc e delay_nus _delay_nus fV
 0030           ;              t -> R20
                        .even
 0030           _delay_nus::
 0030 0E940000          xcall push_gset1
 0034 402F              mov R20,R16
 0036                   .dbline -1
 0036                   .dbline 43
 0036           ; }
 0036           ; //长微秒延时
 0036           ; void delay_nus(uchar t)
 0036           ; { while(t--)
 0036 01C0              xjmp L6
 0038           L5:
 0038                   .dbline 44
 0038 F7DF              xcall _delay_1us
 003A           L6:
 003A                   .dbline 43
 003A 242E              mov R2,R20
 003C 3324              clr R3
 003E 4150              subi R20,1
 0040 2220              tst R2
 0042 D1F7              brne L5
 0044                   .dbline -2
 0044           L4:
 0044 0E940000          xcall pop_gset1
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbsym r t 20 c
 004A                   .dbend
 004A                   .dbfunc e delay_1ms _delay_1ms fV
                        .even
 004A           _delay_1ms::
 004A                   .dbline -1
 004A                   .dbline 48
 004A           ;   delay_1us();
 004A           ; }
 004A           ; //1毫秒延时
 004A           ; void delay_1ms(void)
 004A           ; {
 004A                   .dbline 49
 004A           ;   delay_nus(1000);
 004A 08EE              ldi R16,232
 004C F1DF              xcall _delay_nus
 004E                   .dbline -2
 004E           L8:
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbend
 0050                   .dbfunc e delay_nms _delay_nms fV
 0050           ;              t -> R20
                        .even
 0050           _delay_nms::
 0050 0E940000          xcall push_gset1
 0054 402F              mov R20,R16
 0056                   .dbline -1
 0056                   .dbline 53
 0056           ; }
 0056           ; //长毫秒延时
 0056           ; void delay_nms(uchar t)
 0056           ; { while(t--)
 0056 01C0              xjmp L11
 0058           L10:
 0058                   .dbline 54
 0058 F8DF              xcall _delay_1ms
 005A           L11:
 005A                   .dbline 53
 005A 242E              mov R2,R20
 005C 3324              clr R3
 005E 4150              subi R20,1
 0060 2220              tst R2
 0062 D1F7              brne L10
 0064                   .dbline -2
 0064           L9:
 0064 0E940000          xcall pop_gset1
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbsym r t 20 c
 006A                   .dbend
 006A                   .dbfunc e led_out _led_out fV
 006A           ;              i -> R20
                        .even
 006A           _led_out::
 006A 0E940000          xcall push_gset1
 006E                   .dbline -1
 006E                   .dbline 58
 006E           ;   delay_1ms();
 006E           ; }
 006E           ; //定义LED等
 006E           ; void led_out(void)
 006E           ; {  uchar i;
 006E                   .dbline 59
 006E           ;    for(i=1;i<5;i++)
 006E 41E0              ldi R20,1
 0070 0BC0              xjmp L17
 0072           L14:
 0072                   .dbline 60
 0072                   .dbline 60
 0072 16E0              ldi R17,6
 0074 141B              sub R17,R20
 0076 01E0              ldi R16,1
 0078 0E940000          xcall lsl8
 007C 22B2              in R2,0x12
 007E 202A              or R2,R16
 0080 22BA              out 0x12,R2
 0082                   .dbline 61
 0082 04EF              ldi R16,244
 0084 E5DF              xcall _delay_nms
 0086                   .dbline 61
 0086           L15:
 0086                   .dbline 59
 0086 4395              inc R20
 0088           L17:
 0088                   .dbline 59
 0088 4530              cpi R20,5
 008A 98F3              brlo L14
 008C                   .dbline 62
 008C           ;    {PORTD|=BIT(6-i);
 008C           ;    delay_nms(500);}
 008C           ;    for(i=5;i<13;i++)
 008C 45E0              ldi R20,5
 008E 0BC0              xjmp L21
 0090           L18:
 0090                   .dbline 63
 0090                   .dbline 63
 0090 1CE0              ldi R17,12
 0092 141B              sub R17,R20
 0094 01E0              ldi R16,1
 0096 0E940000          xcall lsl8
 009A 28B2              in R2,0x18
 009C 202A              or R2,R16
 009E 28BA              out 0x18,R2
 00A0                   .dbline 64
 00A0 04EF              ldi R16,244
 00A2 D6DF              xcall _delay_nms
 00A4                   .dbline 64
 00A4           L19:
 00A4                   .dbline 62
 00A4 4395              inc R20
 00A6           L21:
 00A6                   .dbline 62
 00A6 4D30              cpi R20,13
 00A8 98F3              brlo L18
 00AA                   .dbline 65
 00AA           ;    {PORTB|=BIT(12-i);
 00AA           ;    delay_nms(500);}
 00AA           ;    for(i=12;i>4;i--)
 00AA 4CE0              ldi R20,12
 00AC 0DC0              xjmp L25
 00AE           L22:
 00AE                   .dbline 66
 00AE                   .dbline 67
 00AE 1CE0              ldi R17,12
 00B0 141B              sub R17,R20
 00B2 01E0              ldi R16,1
 00B4 0E940000          xcall lsl8
 00B8 202E              mov R2,R16
 00BA 2094              com R2
 00BC 38B2              in R3,0x18
 00BE 3220              and R3,R2
 00C0 38BA              out 0x18,R3
 00C2                   .dbline 68
 00C2 04EF              ldi R16,244
 00C4 C5DF              xcall _delay_nms
 00C6                   .dbline 69
 00C6           L23:
 00C6                   .dbline 65
 00C6 4A95              dec R20
 00C8           L25:
 00C8                   .dbline 65
 00C8 84E0              ldi R24,4
 00CA 8417              cp R24,R20
 00CC 80F3              brlo L22
 00CE                   .dbline 70
 00CE           ;    {
 00CE           ;     PORTB&=~BIT(12-i);
 00CE           ;     delay_nms(500);
 00CE           ;       }
 00CE           ;       for(i=4;i!=0;i--)
 00CE 44E0              ldi R20,4
 00D0 0DC0              xjmp L29
 00D2           L26:
 00D2                   .dbline 71
 00D2                   .dbline 72
 00D2 16E0              ldi R17,6
 00D4 141B              sub R17,R20
 00D6 01E0              ldi R16,1
 00D8 0E940000          xcall lsl8
 00DC 202E              mov R2,R16
 00DE 2094              com R2
 00E0 32B2              in R3,0x12
 00E2 3220              and R3,R2
 00E4 32BA              out 0x12,R3
 00E6                   .dbline 73
 00E6 04EF              ldi R16,244
 00E8 B3DF              xcall _delay_nms
 00EA                   .dbline 74
 00EA           L27:
 00EA                   .dbline 70
 00EA 4A95              dec R20
 00EC           L29:
 00EC                   .dbline 70
 00EC 4423              tst R20
 00EE 89F7              brne L26
 00F0                   .dbline -2
 00F0           L13:
 00F0 0E940000          xcall pop_gset1
 00F4                   .dbline 0 ; func end
 00F4 0895              ret
 00F6                   .dbsym r i 20 c
 00F6                   .dbend
 00F6                   .dbfunc e main _main fV
                        .even
 00F6           _main::
 00F6                   .dbline -1
 00F6                   .dbline 78
 00F6           ;       {
 00F6           ;       PORTD&=~BIT(6-i);
 00F6           ;       delay_nms(500);
 00F6           ;       }
 00F6           ;    }
 00F6           ; //主程序开始
 00F6           ; void main(void)
 00F6           ; {
 00F6                   .dbline 79
 00F6           ;  init_devices();
 00F6 90DF              xcall _init_devices
 00F8 01C0              xjmp L32
 00FA           L31:
 00FA                   .dbline 81
 00FA                   .dbline 82
 00FA B7DF              xcall _led_out
 00FC                   .dbline 83
 00FC           L32:
 00FC                   .dbline 80
 00FC FECF              xjmp L31
 00FE           X0:
 00FE                   .dbline -2
 00FE           L30:
 00FE                   .dbline 0 ; func end
 00FE 0895              ret
 0100                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -