📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\AVR与虚拟仪器光盘\教程与范例代码\LED应用\跑马灯\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 17
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 ; void port_init(void)
0000 ; {
0000 .dbline 18
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 19
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 20
0006 ; PORTB = 0x00;
0006 28BA out 0x18,R2
0008 .dbline 21
0008 ; DDRB = 0x00;
0008 27BA out 0x17,R2
000A .dbline 22
000A ; PORTC = 0x00; //m103 output only
000A 25BA out 0x15,R2
000C .dbline 23
000C ; DDRC = 0x00;
000C 24BA out 0x14,R2
000E .dbline 24
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 25
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline 26
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 32
0018 ; }
0018 ;
0018 ; //call this routine to initialize all peripherals
0018 ; //此处为ICC系统生成,未做更改
0018 ; void init_devices(void)
0018 ; {
0018 .dbline 34
0018 ; //stop errant interrupts until set up
0018 ; CLI(); //disable all interrupts
0018 F894 cli
001A .dbline 35
001A ; port_init();
001A F2DF xcall _port_init
001C .dbline 37
001C ;
001C ; MCUCR = 0x00;
001C 2224 clr R2
001E 25BE out 0x35,R2
0020 .dbline 38
0020 ; GICR = 0x00;
0020 2BBE out 0x3b,R2
0022 .dbline 39
0022 ; TIMSK = 0x00; //timer interrupt sources
0022 29BE out 0x39,R2
0024 .dbline 40
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 45
0028 ; //all peripherals are now initialized
0028 ; }
0028 ;
0028 ; void Delay(void) //延时,没有详细计算
0028 ; {
0028 .dbline 47
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 48
002C ; {
002C .dbline 49
002C ; for(j=200;j>0;j--)
002C 28EC ldi R18,200
002E 01C0 xjmp L11
0030 L8:
0030 .dbline 50
0030 L9:
0030 .dbline 49
0030 2A95 dec R18
0032 L11:
0032 .dbline 49
0032 2224 clr R2
0034 2216 cp R2,R18
0036 E0F3 brlo L8
0038 .dbline 51
0038 L5:
0038 .dbline 47
0038 0A95 dec R16
003A L7:
003A .dbline 47
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 55
0042 ; ;
0042 ; }
0042 ; }
0042 ;
0042 ; void main()
0042 ; {
0042 .dbline 57
0042 ; unsigned char i,j,k; //定义变量
0042 ; init_devices(); //初始化
0042 EADF xcall _init_devices
0044 11C0 xjmp L14
0046 L13:
0046 .dbline 59
0046 ; while(1)
0046 ; {
0046 .dbline 60
0046 ; i=1;
0046 61E0 ldi R22,1
0048 .dbline 61
0048 ; for (j=0;j<8;j++) //循环8次,即PA0~~PA7轮流闪亮
0048 4427 clr R20
004A 0CC0 xjmp L19
004C L16:
004C .dbline 62
004C ; {
004C .dbline 63
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 64
0052 AA24 clr R10
0054 02C0 xjmp L23
0056 L20:
0056 .dbline 64
0056 E8DF xcall _Delay
0058 L21:
0058 .dbline 64
0058 A394 inc R10
005A L23:
005A .dbline 64
005A 8A2D mov R24,R10
005C 8A30 cpi R24,10
005E D8F3 brlo L20
0060 .dbline 65
0060 660F lsl R22
0062 .dbline 74
0062 L17:
0062 .dbline 61
0062 4395 inc R20
0064 L19:
0064 .dbline 61
0064 4830 cpi R20,8
0066 90F3 brlo L16
0068 .dbline 75
0068 L14:
0068 .dbline 58
0068 EECF xjmp L13
006A X0:
006A .dbline -2
006A L12:
006A .dbline 0 ; func end
006A 0895 ret
006C .dbsym r j 20 c
006C .dbsym r i 22 c
006C .dbsym r k 10 c
006C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -