📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\001-LED\main.c
0000 .dbfunc e delay_ms _delay_ms fV
0000 ; a -> R20
0000 ; b -> R22
0000 ; i -> R16
.even
0000 _delay_ms::
0000 0E940000 xcall push_gset2
0004 .dbline -1
0004 .dbline 16
0004 ; /*
0004 ; 实验一:
0004 ; LED发光二极管显示实验。
0004 ; 1、I/O口实验,控制PB口上的发光二极管循环显示。
0004 ; 2、内部1 M晶振,程序采用单任务方式,软件延时。
0004 ; 3、进行此实验请插上LED短路块。
0004 ; 4、此实验让大家认识最基本的IO口输出控制方法。
0004 ;
0004 ; AVR mega128学习板
0004 ; www.iccavr.com 阿发
0004 ; 23:03 2007-10-09
0004 ; */
0004 ; #include "iom128v.h"
0004 ;
0004 ; /*延时函数*/
0004 ; void delay_ms(unsigned char i) {
0004 .dbline 19
0004 4427 clr R20
0006 06C0 xjmp L5
0008 L2:
0008 .dbline 19
0008 ;
0008 ; unsigned char a, b;
0008 ; for (a = 0; a < i; a++) {
0008 .dbline 20
0008 61E0 ldi R22,1
000A 01C0 xjmp L9
000C L6:
000C .dbline 20
000C L7:
000C .dbline 20
000C 6395 inc R22
000E L9:
000E .dbline 20
000E 6623 tst R22
0010 E9F7 brne L6
0012 .dbline 21
0012 L3:
0012 .dbline 19
0012 4395 inc R20
0014 L5:
0014 .dbline 19
0014 4017 cp R20,R16
0016 C0F3 brlo L2
0018 .dbline -2
0018 L1:
0018 0E940000 xcall pop_gset2
001C .dbline 0 ; func end
001C 0895 ret
001E .dbsym r a 20 c
001E .dbsym r b 22 c
001E .dbsym r i 16 c
001E .dbend
001E .dbfunc e io_init _io_init fV
.even
001E _io_init::
001E .dbline -1
001E .dbline 25
001E ; for (b = 1; b; b++);
001E ; }
001E ; }
001E ;
001E ; /*IO口初始化函数*/
001E ; void io_init(void) {
001E .dbline 27
001E ;
001E ; DDRA = 0x00; /*方向输入 */
001E 2224 clr R2
0020 2ABA out 0x1a,R2
0022 .dbline 28
0022 ; PORTA = 0xFF; /*打开上拉 */
0022 8FEF ldi R24,255
0024 8BBB out 0x1b,R24
0026 .dbline 29
0026 ; DDRB = 0xFF; /*方向输出 */
0026 87BB out 0x17,R24
0028 .dbline 30
0028 ; PORTB = 0xFF; /*高电平 */
0028 88BB out 0x18,R24
002A .dbline 31
002A ; DDRC = 0x00; /*不用的IO口建议设置为输入带上拉 */
002A 24BA out 0x14,R2
002C .dbline 32
002C ; PORTC = 0xFF;
002C 85BB out 0x15,R24
002E .dbline 33
002E ; DDRD = 0x00;
002E 21BA out 0x11,R2
0030 .dbline 34
0030 ; PORTD = 0xFF;
0030 82BB out 0x12,R24
0032 .dbline 35
0032 ; DDRE = 0x00;
0032 22B8 out 0x2,R2
0034 .dbline 36
0034 ; PORTE = 0xFF;
0034 83B9 out 0x3,R24
0036 .dbline 37
0036 ; DDRF = 0x00;
0036 20926100 sts 97,R2
003A .dbline 38
003A ; PORTF = 0xFF;
003A 80936200 sts 98,R24
003E .dbline 39
003E ; DDRG = 0x00;
003E 20926400 sts 100,R2
0042 .dbline 40
0042 ; PORTG = 0xFF;
0042 80936500 sts 101,R24
0046 .dbline -2
0046 L10:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbend
0048 .dbfunc e main _main fV
0048 ; i -> R20
.even
0048 _main::
0048 .dbline -1
0048 .dbline 43
0048 ; }
0048 ;
0048 ; void main(void) {
0048 .dbline 47
0048 ;
0048 ; unsigned char i;
0048 ;
0048 ; io_init();
0048 EADF xcall _io_init
004A 0EC0 xjmp L13
004C L12:
004C .dbline 48
004C ; while (1) {
004C .dbline 49
004C 4427 clr R20
004E 0AC0 xjmp L18
0050 L15:
0050 .dbline 49
0050 .dbline 50
0050 01E0 ldi R16,1
0052 142F mov R17,R20
0054 0E940000 xcall lsl8
0058 202E mov R2,R16
005A 2094 com R2
005C 28BA out 0x18,R2
005E .dbline 51
005E 08EC ldi R16,200
0060 CFDF xcall _delay_ms
0062 .dbline 52
0062 L16:
0062 .dbline 49
0062 4395 inc R20
0064 L18:
0064 .dbline 49
0064 4830 cpi R20,8
0066 A0F3 brlo L15
0068 .dbline 53
0068 L13:
0068 .dbline 48
0068 F1CF xjmp L12
006A X0:
006A .dbline -2
006A L11:
006A .dbline 0 ; func end
006A 0895 ret
006C .dbsym r i 20 c
006C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -