📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\avr\跑马灯\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 19
0000 ; //ICC-AVR application builder : 2007-1-29 10:04:38
0000 ; // Target : M16
0000 ; // Crystal: 7.3728Mhz
0000 ; // 作者:古欣
0000 ; // AVR与虚拟仪器 http://www.avrvi.com
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define led_port PORTA
0000 ; //定义输出端口
0000 ; #define led_ddr DDRA
0000 ; //定义输出控制寄存器
0000 ; //可以自行修改,必须保持 led_port和led_ddr一致,PORTA对应DDRA
0000 ;
0000 ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 20
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 21
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 22
0006 ; PORTB = 0x00;
0006 28BA out 0x18,R2
0008 .dbline 23
0008 ; DDRB = 0x00;
0008 27BA out 0x17,R2
000A .dbline 24
000A ; PORTC = 0x00; //m103 output only
000A 25BA out 0x15,R2
000C .dbline 25
000C ; DDRC = 0x00;
000C 24BA out 0x14,R2
000E .dbline 26
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 27
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline 28
0012 ; led_ddr=0xff; //设置LED的端口为输出
0012 8FEF ldi R24,255
0014 8ABB out 0x1a,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 34
0018 ; }
0018 ;
0018 ; //call this routine to initialize all peripherals
0018 ; //此处为ICC系统生成,未做更改
0018 ; void init_devices(void)
0018 ; {
0018 .dbline 36
0018 ; //stop errant interrupts until set up
0018 ; CLI(); //disable all interrupts
0018 F894 cli
001A .dbline 37
001A ; port_init();
001A F2DF xcall _port_init
001C .dbline 39
001C ;
001C ; MCUCR = 0x00;
001C 2224 clr R2
001E 25BE out 0x35,R2
0020 .dbline 40
0020 ; GICR = 0x00;
0020 2BBE out 0x3b,R2
0022 .dbline 41
0022 ; TIMSK = 0x00; //timer interrupt sources
0022 29BE out 0x39,R2
0024 .dbline 42
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 _Delay fV
0028 ; i -> R16
0028 ; j -> R18
.even
0028 _Delay::
0028 .dbline -1
0028 .dbline 47
0028 ; //all peripherals are now initialized
0028 ; }
0028 ;
0028 ; void Delay(void) //延时,没有详细计算
0028 ; {
0028 .dbline 49
0028 ; unsigned char i,j;
0028 ; for(i=20;i>0;i--)
0028 04E1 ldi R16,20
002A 07C0 xjmp L7
002C L4:
002C .dbline 50
002C ; {
002C .dbline 51
002C ; for(j=200;j>0;j--)
002C 28EC ldi R18,200
002E 01C0 xjmp L11
0030 L8:
0030 .dbline 52
0030 L9:
0030 .dbline 51
0030 2A95 dec R18
0032 L11:
0032 .dbline 51
0032 2224 clr R2
0034 2216 cp R2,R18
0036 E0F3 brlo L8
0038 .dbline 53
0038 L5:
0038 .dbline 49
0038 0A95 dec R16
003A L7:
003A .dbline 49
003A 2224 clr R2
003C 2016 cp R2,R16
003E B0F3 brlo L4
0040 .dbline -2
0040 L3:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbsym r i 16 c
0042 .dbsym r j 18 c
0042 .dbend
0042 .dbfunc e main _main fV
0042 ; j -> R20
0042 ; i -> R22
0042 ; k -> R10
.even
0042 _main::
0042 .dbline -1
0042 .dbline 57
0042 ; ;
0042 ; }
0042 ; }
0042 ;
0042 ; void main()
0042 ; {
0042 .dbline 59
0042 ; unsigned char i,j,k; //定义变量
0042 ; init_devices(); //初始化
0042 EADF xcall _init_devices
0044 22C0 xjmp L14
0046 L13:
0046 .dbline 61
0046 ; while(1)
0046 ; {
0046 .dbline 62
0046 ; i=0x80;
0046 60E8 ldi R22,128
0048 .dbline 63
0048 ; for (j=0;j<8;j++) //循环8次,即PA0~~PA7轮流闪亮
0048 4427 clr R20
004A 0CC0 xjmp L19
004C L16:
004C .dbline 64
004C ; {
004C .dbline 65
004C ; led_port=~i; //反相输出,低电平有效 位操作指令详解:http://bbs.avrvi.com/read.php?fid=30&tid=392&toread=1
004C 262E mov R2,R22
004E 2094 com R2
0050 2BBA out 0x1b,R2
0052 .dbline 66
0052 AA24 clr R10
0054 02C0 xjmp L23
0056 L20:
0056 .dbline 66
0056 E8DF xcall _Delay
0058 L21:
0058 .dbline 66
0058 A394 inc R10
005A L23:
005A .dbline 66
005A 8A2D mov R24,R10
005C 8A30 cpi R24,10
005E D8F3 brlo L20
0060 .dbline 67
0060 6695 lsr R22
0062 .dbline 76
0062 L17:
0062 .dbline 63
0062 4395 inc R20
0064 L19:
0064 .dbline 63
0064 4830 cpi R20,8
0066 90F3 brlo L16
0068 .dbline 77
0068 ; for (k=0;k<10;k++) Delay(); //延时 可自行调节
0068 ; i=i>>1; //左移一位 移位算法详解:http://bbs.avrvi.com/read.php?fid=5&tid=897&toread=1
0068 ; // 0b00000001 PA0
0068 ; // 0b00000010 PA1
0068 ; // 0b00000100 PA2
0068 ; // 0b00001000 PA3
0068 ; // 0b00010000 PA4
0068 ; // 0b00100000 PA5
0068 ; // 0b01000000 PA6
0068 ; // 0b10000000 PA7
0068 ; }
0068 ; i=1;
0068 61E0 ldi R22,1
006A .dbline 78
006A ; for (j=0;j<8;j++) //循环8次,即PA0~~PA7轮流闪亮
006A 4427 clr R20
006C 0CC0 xjmp L27
006E L24:
006E .dbline 79
006E ; {
006E .dbline 80
006E ; led_port=~i; //反相输出,低电平有效 位操作指令详解:http://bbs.avrvi.com/read.php?fid=30&tid=392&toread=1
006E 262E mov R2,R22
0070 2094 com R2
0072 2BBA out 0x1b,R2
0074 .dbline 81
0074 AA24 clr R10
0076 02C0 xjmp L31
0078 L28:
0078 .dbline 81
0078 D7DF xcall _Delay
007A L29:
007A .dbline 81
007A A394 inc R10
007C L31:
007C .dbline 81
007C 8A2D mov R24,R10
007E 8A30 cpi R24,10
0080 D8F3 brlo L28
0082 .dbline 82
0082 660F lsl R22
0084 .dbline 91
0084 L25:
0084 .dbline 78
0084 4395 inc R20
0086 L27:
0086 .dbline 78
0086 4830 cpi R20,8
0088 90F3 brlo L24
008A .dbline 92
008A L14:
008A .dbline 60
008A DDCF xjmp L13
008C X0:
008C .dbline -2
008C L12:
008C .dbline 0 ; func end
008C 0895 ret
008E .dbsym r j 20 c
008E .dbsym r i 22 c
008E .dbsym r k 10 c
008E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -