⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 一个关于AVR单片机的例程
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\桌面\教程\at45db041\main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; // ICC-AVR application builder : 2007-2-14 21:34:00
 0000           ; // Target : M16
 0000           ; // Crystal: 7.3728Mhz
 0000           ; // 演示 at45db041 读写过程
 0000           ; 
 0000           ; #include "config.h"
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 10
 0000           ;  PORTA = 0x00;
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004                   .dbline 11
 0004           ;  DDRA  = 0x00;
 0004 2ABA              out 0x1a,R2
 0006                   .dbline 12
 0006           ;  PORTB = 0x00;
 0006 28BA              out 0x18,R2
 0008                   .dbline 13
 0008           ;  DDRB  = 0x00;
 0008 27BA              out 0x17,R2
 000A                   .dbline 14
 000A           ;  PORTC = 0x00; //m103 output only
 000A 25BA              out 0x15,R2
 000C                   .dbline 15
 000C           ;  DDRC  = 0x00;
 000C 24BA              out 0x14,R2
 000E                   .dbline 16
 000E           ;  PORTD = 0x00;
 000E 22BA              out 0x12,R2
 0010                   .dbline 17
 0010           ;  DDRD  = 0x00;
 0010 21BA              out 0x11,R2
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbend
 0014                   .dbfunc e init_devices _init_devices fV
                        .even
 0014           _init_devices::
 0014                   .dbline -1
 0014                   .dbline 22
 0014           ; }
 0014           ; 
 0014           ; //call this routine to initialize all peripherals
 0014           ; void init_devices(void)
 0014           ; {
 0014                   .dbline 24
 0014           ;  //stop errant interrupts until set up
 0014           ;  CLI(); //disable all interrupts
 0014 F894              cli
 0016                   .dbline 25
 0016           ;  port_init();
 0016 F4DF              xcall _port_init
 0018                   .dbline 26
 0018           ;  at4541_init(); //at45db041初始化
 0018 0E940000          xcall _at4541_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 main _main fV
 0028           ;          temp1 -> <dead>
 0028           ;          temp2 -> R22
 0028           ;    receive_buf -> y+0
 0028           ;              i -> R20
                        .even
 0028           _main::
 0028 2A97              sbiw R28,10
 002A                   .dbline -1
 002A                   .dbline 36
 002A           ;  //all peripherals are now initialized
 002A           ; }
 002A           ; 
 002A           ; void main(void)
 002A           ; {
 002A                   .dbline 38
 002A           ;  unsigned int temp1;
 002A           ;  unsigned char i=0,temp2=0;
 002A 4427              clr R20
 002C                   .dbline 38
 002C 6627              clr R22
 002E                   .dbline 40
 002E           ;  unsigned char receive_buf[10];
 002E           ;  init_devices();
 002E F2DF              xcall _init_devices
 0030                   .dbline 41
 0030           ;  at4541_commond_send(0x8200,0x00);//开始写指令,地址为0x00
 0030 2227              clr R18
 0032 3327              clr R19
 0034 00E0              ldi R16,33280
 0036 12E8              ldi R17,130
 0038 0E940000          xcall _at4541_commond_send
 003C                   .dbline 42
 003C           ;  for(i=0;i<10;i++)
 003C 04C0              xjmp L7
 003E           L4:
 003E                   .dbline 43
 003E                   .dbline 44
 003E 042F              mov R16,R20
 0040 0E940000          xcall _at4541_write
 0044                   .dbline 45
 0044           L5:
 0044                   .dbline 42
 0044 4395              inc R20
 0046           L7:
 0046                   .dbline 42
 0046 4A30              cpi R20,10
 0048 D0F3              brlo L4
 004A                   .dbline 46
 004A           ;  {
 004A           ;   at4541_write(i);
 004A           ;  }
 004A           ;  at4541_stop();
 004A 0E940000          xcall _at4541_stop
 004E                   .dbline 47
 004E           ;  delay_ms(500);
 004E 04EF              ldi R16,500
 0050 11E0              ldi R17,1
 0052 0E940000          xcall _delay_ms
 0056           L8:
 0056                   .dbline 50
 0056           L9:
 0056                   .dbline 49
 0056           ;  
 0056           ;  while(!at4541_check_busy())
 0056 0E940000          xcall _at4541_check_busy
 005A 0023              tst R16
 005C E1F3              breq L8
 005E                   .dbline 52
 005E           ;   ;//忙等待
 005E           ;   
 005E           ;  if(at4541_check_busy())
 005E 0E940000          xcall _at4541_check_busy
 0062 0023              tst R16
 0064 99F0              breq L18
 0066                   .dbline 53
 0066           ;  {
 0066                   .dbline 54
 0066           ;   at4541_commond_send(0xe800,0x00);
 0066 2227              clr R18
 0068 3327              clr R19
 006A 00E0              ldi R16,59392
 006C 18EE              ldi R17,232
 006E 0E940000          xcall _at4541_commond_send
 0072                   .dbline 55
 0072           ;   for(i=0;i<10;i++)
 0072 4427              clr R20
 0074 09C0              xjmp L16
 0076           L13:
 0076                   .dbline 56
 0076                   .dbline 57
 0076 0E940000          xcall _at4541_read
 007A CE01              movw R24,R28
 007C E42F              mov R30,R20
 007E FF27              clr R31
 0080 E80F              add R30,R24
 0082 F91F              adc R31,R25
 0084 0083              std z+0,R16
 0086                   .dbline 58
 0086           L14:
 0086                   .dbline 55
 0086 4395              inc R20
 0088           L16:
 0088                   .dbline 55
 0088 4A30              cpi R20,10
 008A A8F3              brlo L13
 008C                   .dbline 59
 008C           ;   {
 008C           ;    receive_buf[i]=at4541_read();
 008C           ;   }
 008C           ;  }
 008C           L17:
 008C                   .dbline 61
 008C           L18:
 008C                   .dbline 60
 008C FFCF              xjmp L17
 008E           X0:
 008E                   .dbline -2
 008E           L3:
 008E 2A96              adiw R28,10
 0090                   .dbline 0 ; func end
 0090 0895              ret
 0092                   .dbsym l temp1 1 i
 0092                   .dbsym r temp2 22 c
 0092                   .dbsym l receive_buf 0 A[10:10]c
 0092                   .dbsym r i 20 c
 0092                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -