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

📄 main.lis

📁 一个关于AVR单片机的例程
💻 LIS
字号:
                        .module main.c
                        .area lit(rom, con, rel)
 0000           _char_7::
 0000 0000              .byte 0,0
 0002 7C82              .byte 124,130
 0004 827C              .byte 130,124
 0006 0000              .byte 0,0
 0008 0000              .byte 0,0
 000A 0084              .byte 0,132
 000C FE80              .byte 254,128
 000E 0000              .byte 0,0
 0010 0000              .byte 0,0
 0012 C4A2              .byte 196,162
 0014 928C              .byte 146,140
 0016 0000              .byte 0,0
 0018 0000              .byte 0,0
 001A 4492              .byte 'D,146
 001C 926C              .byte 146,'l
 001E 0000              .byte 0,0
 0020 0000              .byte 0,0
 0022 1814              .byte 24,20
 0024 FE10              .byte 254,16
 0026 0000              .byte 0,0
 0028 0000              .byte 0,0
 002A 9E94              .byte 158,148
 002C 9464              .byte 148,'d
 002E 0000              .byte 0,0
 0030 0000              .byte 0,0
 0032 7C92              .byte 124,146
 0034 9264              .byte 146,'d
 0036 0000              .byte 0,0
 0038 0000              .byte 0,0
 003A 02F2              .byte 2,242
 003C 0A06              .byte 10,6
 003E 0000              .byte 0,0
 0040 0000              .byte 0,0
 0042 6C92              .byte 'l,146
 0044 926C              .byte 146,'l
 0046 0000              .byte 0,0
 0048 0000              .byte 0,0
 004A 4C92              .byte 'L,146
 004C 927C              .byte 146,124
 004E 0000              .byte 0,0
 0050 1038              .byte 16,56
 0052 7CFE              .byte 124,254
 0054 3838              .byte 56,56
 0056 3838              .byte 56,56
 0058                   .dbfile C:\DOCUME~1\administrator\桌面\教程\8x8led\main.c
 0058                   .dbsym e char_7 _char_7 A[88:11:8]kc
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\administrator\桌面\教程\8x8led\main.c
 0000                   .dbfunc e display _display fV
 0000           ;            row -> R20
 0000           ;            num -> R22
                        .even
 0000           _display::
 0000 0E940000          xcall push_gset2
 0004 422F              mov R20,R18
 0006 602F              mov R22,R16
 0008                   .dbline -1
 0008                   .dbline 25
 0008           ; 
 0008           ; /*********************************************
 0008           ; 显示向左的箭头
 0008           ; Chip type : ATmega16
 0008           ; *********************************************/
 0008           ; #include <iom16v.h>
 0008           ; #include "delay.h"
 0008           ; const unsigned char char_7[][8]={
 0008           ; {0x00,0x00,0x7c,0x82,0x82,0x7c,0x00,0x00},//0
 0008           ; {0x00,0x00,0x00,0x84,0xfe,0x80,0x00,0x00},//1
 0008           ; //{0x00,0x00,0xf2,0x92,0x92,0x9e,0x00,0x00},//正2
 0008           ; {0x00,0x00,0xc4,0xa2,0x92,0x8c,0x00,0x00},//2
 0008           ; {0x00,0x00,0x44,0x92,0x92,0x6c,0x00,0x00},//3
 0008           ; //{0x00,0x00,0x92,0x92,0x92,0xfe,0x00,0x00},//正3
 0008           ; {0x00,0x00,0x18,0x14,0xfe,0x10,0x00,0x00},//4
 0008           ; {0x00,0x00,0x9e,0x94,0x94,0x64,0x00,0x00},//5
 0008           ; {0x00,0x00,0x7c,0x92,0x92,0x64,0x00,0x00},//6
 0008           ; {0x00,0x00,0x02,0xf2,0x0a,0x06,0x00,0x00},//7
 0008           ; {0x00,0x00,0x6c,0x92,0x92,0x6c,0x00,0x00},//8
 0008           ; {0x00,0x00,0x4c,0x92,0x92,0x7c,0x00,0x00},//9
 0008           ; {0x10,0x38,0x7C,0xFE,0x38,0x38,0x38,0x38},//向左箭头
 0008           ; };
 0008           ; 
 0008           ; void display(unsigned char num,char row)
 0008           ; {
 0008                   .dbline 26
 0008           ;  if(row>7)//容错处理
 0008 87E0              ldi R24,7
 000A 8417              cp R24,R20
 000C 28F4              brsh L2
 000E                   .dbline 27
 000E           ;  {
 000E                   .dbline 28
 000E           ;  PORTA = 0XFF;
 000E 8FEF              ldi R24,255
 0010 8BBB              out 0x1b,R24
 0012                   .dbline 29
 0012           ;  PORTB = 0X81; //显示中间6排
 0012 81E8              ldi R24,129
 0014 88BB              out 0x18,R24
 0016                   .dbline 30
 0016           ;  }
 0016 1AC0              xjmp L3
 0018           L2:
 0018                   .dbline 32
 0018                   .dbline 33
 0018 88E0              ldi R24,8
 001A 869F              mul R24,R22
 001C 1001              movw R2,R0
 001E 80E0              ldi R24,<_char_7
 0020 90E0              ldi R25,>_char_7
 0022 280E              add R2,R24
 0024 391E              adc R3,R25
 0026 E42F              mov R30,R20
 0028 FF27              clr R31
 002A E20D              add R30,R2
 002C F31D              adc R31,R3
 002E E491              lpm R30,Z
 0030 EBBB              out 0x1b,R30
 0032                   .dbline 34
 0032 01E0              ldi R16,1
 0034 142F              mov R17,R20
 0036 0E940000          xcall lsl8
 003A 202E              mov R2,R16
 003C 2094              com R2
 003E 28BA              out 0x18,R2
 0040                   .dbline 35
 0040 02E0              ldi R16,2
 0042 10E0              ldi R17,0
 0044 0E940000          xcall _delay_ms
 0048                   .dbline 36
 0048 8FEF              ldi R24,255
 004A 88BB              out 0x18,R24
 004C                   .dbline 37
 004C           L3:
 004C                   .dbline -2
 004C           L1:
 004C 0E940000          xcall pop_gset2
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbsym r row 20 c
 0052                   .dbsym r num 22 c
 0052                   .dbend
 0052                   .dbfunc e main _main fV
 0052           ;   time_counter -> R20,R21
 0052           ;         number -> R22
 0052           ;              i -> R10
                        .even
 0052           _main::
 0052                   .dbline -1
 0052                   .dbline 42
 0052           ;  else
 0052           ;  {
 0052           ;  PORTA = char_7[num][row];
 0052           ;  PORTB = ~(1<<row);
 0052           ;  delay_ms(2);
 0052           ;  PORTB = 0xFF;
 0052           ;  }
 0052           ; }
 0052           ; 
 0052           ; 
 0052           ; void main(void)
 0052           ; {
 0052                   .dbline 43
 0052           ; char number=0,i = 0;
 0052 6627              clr R22
 0054                   .dbline 43
 0054 AA24              clr R10
 0056                   .dbline 44
 0056           ; int time_counter=0;
 0056 4427              clr R20
 0058 5527              clr R21
 005A                   .dbline 45
 005A           ; PORTA=0xFF;
 005A 8FEF              ldi R24,255
 005C 8BBB              out 0x1b,R24
 005E                   .dbline 46
 005E           ; DDRA=0xFF;
 005E 8ABB              out 0x1a,R24
 0060                   .dbline 47
 0060           ; PORTB=0x00;
 0060 2224              clr R2
 0062 28BA              out 0x18,R2
 0064                   .dbline 48
 0064           ; DDRB=0xFF;
 0064 87BB              out 0x17,R24
 0066 15C0              xjmp L6
 0068           L5:
 0068                   .dbline 53
 0068           ; 
 0068           ; //delay_1s(); //全亮一秒
 0068           ; 
 0068           ; while (1)
 0068           ; {
 0068                   .dbline 55
 0068           ; 
 0068           ;  for(i=0;i<8;i++)
 0068 AA24              clr R10
 006A 04C0              xjmp L11
 006C           L8:
 006C                   .dbline 56
 006C                   .dbline 57
 006C 2A2D              mov R18,R10
 006E 062F              mov R16,R22
 0070 C7DF              xcall _display
 0072                   .dbline 58
 0072           L9:
 0072                   .dbline 55
 0072 A394              inc R10
 0074           L11:
 0074                   .dbline 55
 0074 8A2D              mov R24,R10
 0076 8830              cpi R24,8
 0078 C8F3              brlo L8
 007A                   .dbline 60
 007A           ;  {
 007A           ;   display(number,i);
 007A           ;  }
 007A           ;  
 007A           ;  time_counter++;
 007A 4F5F              subi R20,255  ; offset = 1
 007C 5F4F              sbci R21,255
 007E                   .dbline 61
 007E           ;  if(time_counter==100)
 007E 4436              cpi R20,100
 0080 E0E0              ldi R30,0
 0082 5E07              cpc R21,R30
 0084 31F4              brne L12
 0086                   .dbline 62
 0086           ;  {
 0086                   .dbline 63
 0086           ;  time_counter=0;
 0086 4427              clr R20
 0088 5527              clr R21
 008A                   .dbline 64
 008A           ;  number++;
 008A 6395              inc R22
 008C                   .dbline 65
 008C           ;  if(number==11) number=0; //加到九返回零
 008C 6B30              cpi R22,11
 008E 09F4              brne L14
 0090                   .dbline 65
 0090 6627              clr R22
 0092           L14:
 0092                   .dbline 66
 0092           ;  }
 0092           L12:
 0092                   .dbline 73
 0092           L6:
 0092                   .dbline 52
 0092 EACF              xjmp L5
 0094           X0:
 0094                   .dbline -2
 0094           L4:
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbsym r time_counter 20 I
 0096                   .dbsym r number 22 c
 0096                   .dbsym r i 10 c
 0096                   .dbend

⌨️ 快捷键说明

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