📄 led.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 + -