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

📄 main.lis

📁 AVR单片机系统开发经典实例部分源程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\AVR\t1\main.c
 0000                   .dbfunc e delay_1ms _delay_1ms fV
 0000           ;              i -> R16,R17
                        .even
 0000           _delay_1ms::
 0000                   .dbline -1
 0000                   .dbline 8
 0000           ; #include<iom128v.h>
 0000           ; #include<STDIO.h>
 0000           ; #include<STRING.h>
 0000           ; #include<stdlib.h>
 0000           ; #include<MATH.h>
 0000           ; #define xtal 4
 0000           ; void delay_1ms(void)
 0000           ;        {
 0000                   .dbline 10
 0000           ;         unsigned int i;
 0000           ;         for(i=1;i<(unsigned int)(xtal*143-2);i++)
 0000 01E0              ldi R16,1
 0002 10E0              ldi R17,0
 0004 02C0              xjmp L5
 0006           L2:
 0006                   .dbline 11
 0006           L3:
 0006                   .dbline 10
 0006 0F5F              subi R16,255  ; offset = 1
 0008 1F4F              sbci R17,255
 000A           L5:
 000A                   .dbline 10
 000A 0A33              cpi R16,58
 000C E2E0              ldi R30,2
 000E 1E07              cpc R17,R30
 0010 D0F3              brlo L2
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r i 16 i
 0014                   .dbend
 0014                   .dbfunc e readfile _readfile fV
 0014           ;            map -> R0,R1
                        .even
 0014           _readfile::
 0014                   .dbline -1
 0014                   .dbline 15
 0014           ;               ; 
 0014           ;        }
 0014           ; 
 0014           ; void readfile(int map[50][50])
 0014           ; {
 0014                   .dbline 17
 0014           ;       //加入打开地图
 0014           ;    ;
 0014                   .dbline -2
 0014           L6:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbsym l map 0 pA[100:50]I
 0016                   .dbend
 0016                   .dbfunc e save _save fV
 0016           ;         walked -> R0,R1
                        .even
 0016           _save::
 0016                   .dbline -1
 0016                   .dbline 22
 0016           ;       
 0016           ; }
 0016           ; 
 0016           ; void save(int walked [50])
 0016           ; {
 0016                   .dbline 24
 0016           ; //    //保存地图
 0016           ; ;
 0016                   .dbline -2
 0016           L7:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbsym l walked 0 pI
 0018                   .dbend
 0018                   .dbfunc e judge _judge fI
 0018           ;         walked -> R0,R1
                        .even
 0018           _judge::
 0018                   .dbline -1
 0018                   .dbline 29
 0018           ; 
 0018           ; }
 0018           ; 
 0018           ; int judge(int walked [50])
 0018           ; {
 0018                   .dbline 30
 0018           ;       ;
 0018                   .dbline 32
 0018           ;       //判断部分
 0018           ; ;
 0018                   .dbline -2
 0018           L8:
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbsym l walked 0 pI
 001A                   .dbend
 001A                   .dbfunc e renew _renew fV
 001A           ;         walked -> R0,R1
                        .even
 001A           _renew::
 001A                   .dbline -1
 001A                   .dbline 36
 001A           ; }
 001A           ; 
 001A           ; void renew(int walked [50])
 001A           ; {
 001A                   .dbline 37
 001A           ;       ;
 001A                   .dbline -2
 001A           L9:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym l walked 0 pI
 001C                   .dbend
 001C                   .dbfunc e freenode _freenode fV
 001C           ;              H -> R22,R23
 001C           ;           head -> R20,R21
 001C           ;             aa -> R10,R11
 001C           ;             hh -> R16,R17
                        .even
 001C           _freenode::
 001C 0E940000          xcall push_gset4
 0020                   .dbline -1
 0020                   .dbline 43
 0020           ;       //随机
 0020           ; }
 0020           ; 
 0020           ;   
 0020           ;  void freenode(int hh)
 0020           ; {
 0020 10C0              xjmp L12
 0022           L11:
 0022                   .dbline 46
 0022           ;    int aa,head,H;
 0022           ;    while(aa!=head)
 0022           ;    {
 0022                   .dbline 47
 0022           ;     H=aa;
 0022 B501              movw R22,R10
 0024                   .dbline 48
 0024           ;       aa=aa||head;
 0024 6030              cpi R22,0
 0026 6707              cpc R22,R23
 0028 19F4              brne L16
 002A           X0:
 002A 4030              cpi R20,0
 002C 4507              cpc R20,R21
 002E 21F0              breq L14
 0030           X1:
 0030           L16:
 0030 81E0              ldi R24,1
 0032 90E0              ldi R25,0
 0034 6C01              movw R12,R24
 0036 02C0              xjmp L15
 0038           L14:
 0038 CC24              clr R12
 003A DD24              clr R13
 003C           L15:
 003C 5601              movw R10,R12
 003E                   .dbline 49
 003E 6627              clr R22
 0040 7727              clr R23
 0042                   .dbline 50
 0042           L12:
 0042                   .dbline 45
 0042 A416              cp R10,R20
 0044 B506              cpc R11,R21
 0046 69F7              brne L11
 0048                   .dbline 50
 0048           ;       H=0;
 0048           ;    }; 
 0048                   .dbline -2
 0048           L10:
 0048 0E940000          xcall pop_gset4
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbsym r H 22 I
 004E                   .dbsym r head 20 I
 004E                   .dbsym r aa 10 I
 004E                   .dbsym r hh 16 I
 004E                   .dbend
 004E                   .dbfunc e addstack _addstack fV
 004E           ;          flag1 -> R20,R21
 004E           ;           head -> R22,R23
 004E           ;              p -> R16,R17
                        .even
 004E           _addstack::
 004E 0E940000          xcall push_gset3
 0052                   .dbline -1
 0052                   .dbline 55
 0052           ;   // 节点;
 0052           ; }
 0052           ; 
 0052           ; void addstack(int p)
 0052           ;  {
 0052 13C0              xjmp L19
 0054           L18:
 0054                   .dbline 58
 0054           ;     int head,flag1;                           //把路径读入数组
 0054           ;       while(p&&p!=head)
 0054           ;        {
 0054                   .dbline 59
 0054           ;      switch(p=flag1)
 0054 8A01              movw R16,R20
 0056 5A01              movw R10,R20
 0058 4130              cpi R20,1
 005A E0E0              ldi R30,0
 005C 5E07              cpc R21,R30
 005E 69F0              breq L22
 0060 4230              cpi R20,2
 0062 E0E0              ldi R30,0
 0064 5E07              cpc R21,R30
 0066 49F0              breq L22
 0068 4330              cpi R20,3
 006A E0E0              ldi R30,0
 006C 5E07              cpc R21,R30
 006E 29F0              breq L22
 0070 4430              cpi R20,4
 0072 E0E0              ldi R30,0
 0074 5E07              cpc R21,R30
 0076 09F0              breq L22
 0078 00C0              xjmp L22
 007A           X2:
 007A                   .dbline 60
 007A           ;        {
 007A                   .dbline 62
 007A           ;           case 1:
 007A           ;            ;
 007A                   .dbline 64
 007A           ;               case 2:
 007A           ;                       ;
 007A                   .dbline 66
 007A           ;               case 3:
 007A           ;                       ;
 007A                   .dbline 68
 007A           ;               case 4:
 007A           ;                       ;
 007A                   .dbline 70
 007A           ;               default:
 007A           ;                break ;
 007A           L22:
 007A                   .dbline 72
 007A                   .dbline 73
 007A           L19:
 007A                   .dbline 57
 007A 0030              cpi R16,0
 007C 0107              cpc R16,R17
 007E 19F0              breq L28
 0080           X3:
 0080 0617              cp R16,R22
 0082 1707              cpc R17,R23
 0084 39F7              brne L18
 0086           L28:
 0086                   .dbline -2
 0086           L17:
 0086 0E940000          xcall pop_gset3
 008A                   .dbline 0 ; func end
 008A 0895              ret
 008C                   .dbsym r flag1 20 I
 008C                   .dbsym r head 22 I
 008C                   .dbsym r p 16 I
 008C                   .dbend
 008C                   .dbfunc e judgewalk _judgewalk fV
 008C           ;              p -> <dead>
 008C           ;              i -> <dead>
 008C           ;              f -> R20,R21
 008C           ;              y -> R14,R15
 008C           ;           head -> R22,R23
 008C           ;           flag -> R22,R23
 008C           ;              a -> y+12
 008C           ;              t -> y+10
 008C           ;        start_y -> R10,R11
 008C           ;        start_x -> R12,R13
                        .even
 008C           _judgewalk::
 008C 0E940000          xcall push_gset5
 0090 5901              movw R10,R18
 0092 6801              movw R12,R16
 0094                   .dbline -1
 0094                   .dbline 78
 0094           ;        }
 0094           ;     ;//
 0094           ;        }
 0094           ;       
 0094           ;  }
 0094           ; 
 0094           ; void judgewalk(int start_x,int start_y,int t,int a[50][50])                  //判断可以行动否并建立B-树
 0094           ; {
 0094                   .dbline 79
 0094           ;       int i,f,head=0;
 0094 6627              clr R22
 0096 7727              clr R23
 0098                   .dbline 80
 0098           ;     int flag=0; 
 0098                   .dbline 82
 0098           ;       int  *p;  
 0098           ;       int y=rand()%4; 
 0098 0E940000          xcall _rand
 009C 24E0              ldi R18,4
 009E 30E0              ldi R19,0
 00A0 0E940000          xcall mod16s
 00A4 7801              movw R14,R16
 00A6                   .dbline 83
 00A6           ;   if(a[start_x][start_y]!=t)                         //没有找到灭火器或者着火点 继续找
 00A6 04E6              ldi R16,100
 00A8 10E0              ldi R17,0
 00AA 9601              movw R18,R12
 00AC 0E940000          xcall empy16s
 00B0 1801              movw R2,R16
 00B2 0C84              ldd R0,y+12
 00B4 1D84              ldd R1,y+13
 00B6 200C              add R2,R0
 00B8 311C              adc R3,R1
 00BA 02E0              ldi R16,2
 00BC 10E0              ldi R17,0
 00BE 9501              movw R18,R10
 00C0 0E940000          xcall empy16s
 00C4 F801              movw R30,R16
 00C6 E20D              add R30,R2
 00C8 F31D              adc R31,R3

⌨️ 快捷键说明

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