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

📄 main.lis

📁 ARM单片机控制SD卡的读写
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\SOUCER~1\M162MMC\main.c
 0000                   .dbfunc e main _main fV
 0000           ;              i -> R20,R21
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 21
 0000           ; /******************************************
 0000           ; * 程序名称: MMC(SD)卡读写程序
 0000           ; * 程序功能: 主函数
 0000           ; * 目标硬件: AVR MCU "ATMEGA162" 16.0000MHz
 0000           ; * 创建日期: 2007-12
 0000           ; * 原创作者: XuGuoHong 
 0000           ; *           kk20y@yahoo.com.cn
 0000           ; * 修改记录: 无
 0000           ; ******************************************/
 0000           ; 
 0000           ; /* INCLUDE参数  */
 0000           ; #include <iom162v.h>
 0000           ; 
 0000           ; /* 全局变量 */
 0000           ; unsigned char sector[512];
 0000           ; 
 0000           ; /*******************************
 0000           ; *          主 函 数
 0000           ; *******************************/
 0000           ; void main(void)
 0000           ; {
 0000                   .dbline 23
 0000           ;       unsigned int i;
 0000           ;     SPL = 0XFF;                               /* 堆栈初始化 */
 0000 8FEF              ldi R24,255
 0002 8DBF              out 0x3d,R24
 0004                   .dbline 24
 0004           ;     SPH = 0X04;
 0004 84E0              ldi R24,4
 0006 8EBF              out 0x3e,R24
 0008                   .dbline 25
 0008           ;     uart1_init();
 0008 0E940000          xcall _uart1_init
 000C                   .dbline 26
 000C           ;     spi_init();
 000C 0E940000          xcall _spi_init
 0010                   .dbline 27
 0010           ;       DelayMs(100);
 0010 04E6              ldi R16,100
 0012 10E0              ldi R17,0
 0014 30D0              xcall _DelayMs
 0016                   .dbline 28
 0016           ;       MMCInit();
 0016 0E940000          xcall _MMCInit
 001A                   .dbline 33
 001A           ;     //asm("sei");             /* 系统总中断开 */
 001A           ; 
 001A           ;       
 001A           ;       // 测试1:将数据写入第255个扇区
 001A           ;       for(i=0; i<512; i++)
 001A 4427              clr R20
 001C 5527              clr R21
 001E 09C0              xjmp L5
 0020           L2:
 0020                   .dbline 34
 0020 80E0              ldi R24,<_sector
 0022 90E0              ldi R25,>_sector
 0024 FA01              movw R30,R20
 0026 E80F              add R30,R24
 0028 F91F              adc R31,R25
 002A 88E8              ldi R24,136
 002C 8083              std z+0,R24
 002E           L3:
 002E                   .dbline 33
 002E 4F5F              subi R20,255  ; offset = 1
 0030 5F4F              sbci R21,255
 0032           L5:
 0032                   .dbline 33
 0032 4030              cpi R20,0
 0034 E2E0              ldi R30,2
 0036 5E07              cpc R21,R30
 0038 98F3              brlo L2
 003A                   .dbline 35
 003A           ;          sector[i]=0X88;
 003A           ;       MMCWrBlock1(255);
 003A 0FEF              ldi R16,255
 003C 10E0              ldi R17,0
 003E 0E940000          xcall _MMCWrBlock1
 0042                   .dbline 38
 0042           ;       
 0042           ;       // 测试2:将第1个扇区的数据读出
 0042           ;       MMCRdBolck1(0);
 0042 0027              clr R16
 0044 1127              clr R17
 0046 0E940000          xcall _MMCRdBolck1
 004A                   .dbline 39
 004A           ;     for(i=0; i<512; i++)
 004A 4427              clr R20
 004C 5527              clr R21
 004E 0BC0              xjmp L9
 0050           L6:
 0050                   .dbline 40
 0050 80E0              ldi R24,<_sector
 0052 90E0              ldi R25,>_sector
 0054 FA01              movw R30,R20
 0056 E80F              add R30,R24
 0058 F91F              adc R31,R25
 005A 0081              ldd R16,z+0
 005C 1127              clr R17
 005E 0E940000          xcall _uart1_send
 0062           L7:
 0062                   .dbline 39
 0062 4F5F              subi R20,255  ; offset = 1
 0064 5F4F              sbci R21,255
 0066           L9:
 0066                   .dbline 39
 0066 4030              cpi R20,0
 0068 E2E0              ldi R30,2
 006A 5E07              cpc R21,R30
 006C 88F3              brlo L6
 006E 01C0              xjmp L11
 0070           L10:
 0070                   .dbline 43
 0070                   .dbline 44
 0070 0000              nop
 0072                   .dbline 45
 0072           L11:
 0072                   .dbline 42
 0072 FECF              xjmp L10
 0074           X0:
 0074                   .dbline -2
 0074           L1:
 0074                   .dbline 0 ; func end
 0074 0895              ret
 0076                   .dbsym r i 20 i
 0076                   .dbend
 0076                   .dbfunc e DelayMs _DelayMs fV
 0076           ;          count -> R20,R21
 0076           ;           temp -> R22,R23
 0076           ;           time -> R16,R17
                        .even
 0076           _DelayMs::
 0076 0E940000          xcall push_gset2
 007A                   .dbline -1
 007A                   .dbline 53
 007A           ;           uart1_send(sector[i]);
 007A           ;               
 007A           ;       while(1)
 007A           ;       {
 007A           ;          asm("nop");
 007A           ;       }
 007A           ; }
 007A           ; 
 007A           ; /******************************************
 007A           ; * 名称:  DelayMs
 007A           ; * 描述:  软件延时函数,单位ms
 007A           ; ******************************************/
 007A           ; void DelayMs(unsigned int time)
 007A           ; {
 007A                   .dbline 56
 007A           ;     unsigned int temp;
 007A           ;       unsigned int count;
 007A           ;       count = 2663;
 007A 47E6              ldi R20,2663
 007C 5AE0              ldi R21,10
 007E 09C0              xjmp L15
 0080           L14:
 0080                   .dbline 58
 0080           ;       while(count--)
 0080           ;       {
 0080                   .dbline 59
 0080 6627              clr R22
 0082 7727              clr R23
 0084 02C0              xjmp L20
 0086           L17:
 0086                   .dbline 59
 0086           L18:
 0086                   .dbline 59
 0086 6F5F              subi R22,255  ; offset = 1
 0088 7F4F              sbci R23,255
 008A           L20:
 008A                   .dbline 59
 008A 6017              cp R22,R16
 008C 7107              cpc R23,R17
 008E D8F3              brlo L17
 0090                   .dbline 60
 0090                   .dbline 61
 0090 0000              nop
 0092                   .dbline 62
 0092                   .dbline 63
 0092           L15:
 0092                   .dbline 57
 0092 1A01              movw R2,R20
 0094 4150              subi R20,1
 0096 5040              sbci R21,0
 0098 2220              tst R2
 009A 91F7              brne L14
 009C 3320              tst R3
 009E 81F7              brne L14
 00A0           X1:
 00A0                   .dbline -2
 00A0           L13:
 00A0 0E940000          xcall pop_gset2
 00A4                   .dbline 0 ; func end
 00A4 0895              ret
 00A6                   .dbsym r count 20 i
 00A6                   .dbsym r temp 22 i
 00A6                   .dbsym r time 16 i
 00A6                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\SOUCER~1\M162MMC\main.c
 0000           _sector::
 0000                   .blkb 512
 0200                   .dbsym e sector _sector A[512:512]c

⌨️ 快捷键说明

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