📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~2\icc\013-IIC-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 21
0004 ; /*
0004 ; 实验十三:
0004 ;
0004 ; AVR单片机I2C总线实验。
0004 ; 1、用24C02记录CPU启动次数,并在PB口上显示出来。
0004 ; 2、内部1 M晶振,程序采用单任务方式,软件延时。
0004 ; 3、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)/PC0/PC1短路块。
0004 ; 4、通过此实验,可以I2C总线操作有个初步认识。
0004 ;
0004 ; AVR mega16学习板
0004 ; www.iccavr.com
0004 ; 14:42 2007-4-9
0004 ; */
0004 ;
0004 ; #include "iom16v.h"
0004 ;
0004 ; extern unsigned char twi_write(unsigned char addr, unsigned char dd);
0004 ; extern unsigned char twi_read(unsigned char addr, unsigned char *dd);
0004 ;
0004 ; /*延时函数*/
0004 ; void delay_ms(unsigned char i) {
0004 .dbline 24
0004 41E0 ldi R20,1
0006 06C0 xjmp L5
0008 L2:
0008 .dbline 24
0008 ;
0008 ; unsigned char a, b;
0008 ; for (a = 1; a < i; a++) {
0008 .dbline 25
0008 61E0 ldi R22,1
000A 01C0 xjmp L9
000C L6:
000C .dbline 25
000C .dbline 26
000C .dbline 27
000C L7:
000C .dbline 25
000C 6395 inc R22
000E L9:
000E .dbline 25
000E 6623 tst R22
0010 E9F7 brne L6
0012 .dbline 28
0012 L3:
0012 .dbline 24
0012 4395 inc R20
0014 L5:
0014 .dbline 24
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 main _main fV
001E ; temp -> y+0
.even
001E _main::
001E 2197 sbiw R28,1
0020 .dbline -1
0020 .dbline 31
0020 ; for (b = 1; b; b++) {
0020 ; ;
0020 ; }
0020 ; }
0020 ; }
0020 ;
0020 ; void main(void) {
0020 .dbline 35
0020 ;
0020 ; unsigned char temp;
0020 ;
0020 ; PORTA = 0xFF; /*打开上拉*/
0020 8FEF ldi R24,255
0022 8BBB out 0x1b,R24
0024 .dbline 36
0024 ; DDRA = 0x00; /*方向输入*/
0024 2224 clr R2
0026 2ABA out 0x1a,R2
0028 .dbline 37
0028 ; PORTB = 0xF0; /*电平设置*/
0028 80EF ldi R24,240
002A 88BB out 0x18,R24
002C .dbline 38
002C ; DDRB = 0xFF; /*方向输出*/
002C 8FEF ldi R24,255
002E 87BB out 0x17,R24
0030 .dbline 39
0030 ; PORTC = 0xFF;
0030 85BB out 0x15,R24
0032 .dbline 40
0032 ; DDRC = 0x00;
0032 24BA out 0x14,R2
0034 .dbline 41
0034 ; PORTD = 0xFF;
0034 82BB out 0x12,R24
0036 .dbline 42
0036 ; DDRD = 0x00;
0036 21BA out 0x11,R2
0038 .dbline 44
0038 ;
0038 ; twi_read(0x08, &temp);
0038 9E01 movw R18,R28
003A 08E0 ldi R16,8
003C 0E940000 xcall _twi_read
0040 .dbline 45
0040 ; PORTB = ~temp;
0040 2880 ldd R2,y+0
0042 2094 com R2
0044 28BA out 0x18,R2
0046 .dbline 46
0046 ; temp ++;
0046 8881 ldd R24,y+0
0048 8F5F subi R24,255 ; addi 1
004A 8883 std y+0,R24
004C .dbline 47
004C ; twi_write(0x08, temp);
004C 282F mov R18,R24
004E 08E0 ldi R16,8
0050 0E940000 xcall _twi_write
0054 L11:
0054 .dbline 49
0054 .dbline 50
0054 .dbline 51
0054 L12:
0054 .dbline 49
0054 FFCF xjmp L11
0056 X0:
0056 .dbline -2
0056 L10:
0056 2196 adiw R28,1
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym l temp 0 c
005A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -