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

📄 led00.lis

📁 这是关于AVR单片机学习的初步开发
💻 LIS
字号:
                        .module led00.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\led\led00.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 12
 0000           ; //I/O演示程序
 0000           ; //程序流程:全亮->全灭->PD隔一步进->全亮->全灭->PD隔二步进->全亮->全灭->PB全亮->pb0置位->pb0清零->PB0反转->全灭->(循环)
 0000           ; 
 0000           ; // Target : M8
 0000           ; // Crystal: 11.059Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; //起始全亮
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 13
 0000           ;  PORTB = 0x00;
 0000 2224              clr R2
 0002 28BA              out 0x18,R2
 0004                   .dbline 14
 0004           ;  DDRB  = 0xFF;
 0004 8FEF              ldi R24,255
 0006 87BB              out 0x17,R24
 0008                   .dbline 15
 0008           ;  PORTC = 0x00; 
 0008 25BA              out 0x15,R2
 000A                   .dbline 16
 000A           ;  DDRC  = 0x7F;
 000A 8FE7              ldi R24,127
 000C 84BB              out 0x14,R24
 000E                   .dbline 17
 000E           ;  PORTD = 0x00;
 000E 22BA              out 0x12,R2
 0010                   .dbline 18
 0010           ;  DDRD  = 0xFF;
 0010 8FEF              ldi R24,255
 0012 81BB              out 0x11,R24
 0014                   .dbline -2
 0014                   .dbline 19
 0014           ; }
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e delay _delay fV
 0016           ;              i -> R20,R21
 0016           ;              j -> R22,R23
 0016           ;            tim -> R16
                        .even
 0016           _delay::
 0016 00D0              rcall push_gset2
 0018                   .dbline -1
 0018                   .dbline 23
 0018           ; 
 0018           ; //延时函数,大约1ms;
 0018           ; void delay(char tim)
 0018           ; {
 0018                   .dbline 25
 0018           ;  unsigned int i,j;
 0018           ;  for(i=0;i<tim;i++)
 0018 4427              clr R20
 001A 5527              clr R21
 001C 0BC0              rjmp L6
 001E           L3:
 001E                   .dbline 26
 001E 6627              clr R22
 0020 7727              clr R23
 0022 02C0              rjmp L10
 0024           L7:
 0024                   .dbline 26
 0024           L8:
 0024                   .dbline 26
 0024 6F5F              subi R22,255  ; offset = 1
 0026 7F4F              sbci R23,255
 0028           L10:
 0028                   .dbline 26
 0028 6031              cpi R22,16
 002A E7E2              ldi R30,39
 002C 7E07              cpc R23,R30
 002E D0F3              brlo L7
 0030           L4:
 0030                   .dbline 25
 0030 4F5F              subi R20,255  ; offset = 1
 0032 5F4F              sbci R21,255
 0034           L6:
 0034                   .dbline 25
 0034 202E              mov R2,R16
 0036 3324              clr R3
 0038 4215              cp R20,R2
 003A 5305              cpc R21,R3
 003C 80F3              brlo L3
 003E                   .dbline -2
 003E                   .dbline 27
 003E           ;       for(j=0;j<10000;j++);
 003E           ; }
 003E           L2:
 003E 00D0              rcall pop_gset2
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r i 20 i
 0042                   .dbsym r j 22 i
 0042                   .dbsym r tim 16 c
 0042                   .dbend
 0042                   .dbfunc e led_on _led_on fV
                        .even
 0042           _led_on::
 0042                   .dbline -1
 0042                   .dbline 31
 0042           ; 
 0042           ; //led全亮
 0042           ; void led_on(void)
 0042           ; {
 0042                   .dbline 32
 0042           ;  PORTB = 0x00;
 0042 2224              clr R2
 0044 28BA              out 0x18,R2
 0046                   .dbline 33
 0046           ;  PORTC = 0x00;
 0046 25BA              out 0x15,R2
 0048                   .dbline 34
 0048           ;  PORTD = 0x00;
 0048 22BA              out 0x12,R2
 004A                   .dbline 36
 004A           ;  
 004A           ;  delay(5000);
 004A 08E8              ldi R16,136
 004C                   .dbline -2
 004C                   .dbline 37
 004C           ; }
 004C           L11:
 004C                   .dbline 0 ; func end
 004C E4CF              rjmp _delay
 004E                   .dbend
 004E                   .dbfunc e led_off _led_off fV
                        .even
 004E           _led_off::
 004E                   .dbline -1
 004E                   .dbline 40
 004E           ; //led全灭
 004E           ; void led_off(void)
 004E           ; {
 004E                   .dbline 41
 004E           ;  PORTB = 0xFF;
 004E 8FEF              ldi R24,255
 0050 88BB              out 0x18,R24
 0052                   .dbline 42
 0052           ;  PORTC = 0xFF;
 0052 85BB              out 0x15,R24
 0054                   .dbline 43
 0054           ;  PORTD = 0xFF;
 0054 82BB              out 0x12,R24
 0056                   .dbline 45
 0056           ;  
 0056           ;  delay(5000);
 0056 08E8              ldi R16,136
 0058                   .dbline -2
 0058                   .dbline 46
 0058           ; }
 0058           L12:
 0058                   .dbline 0 ; func end
 0058 DECF              rjmp _delay
 005A                   .dbend
 005A                   .dbfunc e pd_1 _pd_1 fV
 005A           ;              i -> R20
                        .even
 005A           _pd_1::
 005A 00D0              rcall push_gset1
 005C                   .dbline -1
 005C                   .dbline 49
 005C           ; //PB隔1步进
 005C           ; void pd_1(void)
 005C           ; {
 005C                   .dbline 51
 005C           ;  char i;
 005C           ;  for (i = 0; i < 8; i++)
 005C 4427              clr R20
 005E 09C0              rjmp L17
 0060           L14:
 0060                   .dbline 52
 0060                   .dbline 53
 0060 01E0              ldi R16,1
 0062 142F              mov R17,R20
 0064 00D0              rcall lsl8
 0066 202E              mov R2,R16
 0068 2094              com R2
 006A 28BA              out 0x18,R2
 006C                   .dbline 54
 006C 08E8              ldi R16,136
 006E D3DF              rcall _delay
 0070                   .dbline 55
 0070           L15:
 0070                   .dbline 51
 0070 4395              inc R20
 0072           L17:
 0072                   .dbline 51
 0072 4830              cpi R20,8
 0074 A8F3              brlo L14
 0076                   .dbline -2
 0076                   .dbline 56
 0076           ;  {
 0076           ;        PORTB = ~(1 << (i));//位操作结合移位操作
 0076           ;        delay(5000);
 0076           ;  }
 0076           ; }
 0076           L13:
 0076 00D0              rcall pop_gset1
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbsym r i 20 c
 007A                   .dbend
 007A                   .dbfunc e pd_2 _pd_2 fV
 007A           ;              i -> R20
                        .even
 007A           _pd_2::
 007A 00D0              rcall push_gset1
 007C                   .dbline -1
 007C                   .dbline 59
 007C           ; //PB隔2步进
 007C           ; void pd_2(void)
 007C           ; {
 007C                   .dbline 61
 007C           ;  char i;
 007C           ;  for (i = 0; i < 8; i+=2)
 007C 4427              clr R20
 007E 09C0              rjmp L22
 0080           L19:
 0080                   .dbline 62
 0080                   .dbline 63
 0080 01E0              ldi R16,1
 0082 142F              mov R17,R20
 0084 00D0              rcall lsl8
 0086 202E              mov R2,R16
 0088 2094              com R2
 008A 28BA              out 0x18,R2
 008C                   .dbline 64
 008C 08E8              ldi R16,136
 008E C3DF              rcall _delay
 0090                   .dbline 65
 0090           L20:
 0090                   .dbline 61
 0090 4E5F              subi R20,254    ; addi 2
 0092           L22:
 0092                   .dbline 61
 0092 4830              cpi R20,8
 0094 A8F3              brlo L19
 0096                   .dbline -2
 0096                   .dbline 66
 0096           ;  {
 0096           ;        PORTB = ~(1 << (i));//位操作结合移位操作
 0096           ;        delay(5000);
 0096           ;  }
 0096           ; }
 0096           L18:
 0096 00D0              rcall pop_gset1
 0098                   .dbline 0 ; func end
 0098 0895              ret
 009A                   .dbsym r i 20 c
 009A                   .dbend
 009A                   .dbfunc e init_devices _init_devices fV
                        .even
 009A           _init_devices::
 009A                   .dbline -1
 009A                   .dbline 70
 009A           ; 
 009A           ; //call this routine to initialise all peripherals
 009A           ; void init_devices(void)
 009A           ; {
 009A                   .dbline 72
 009A           ;  //stop errant interrupts until set up
 009A           ;  CLI(); //disable all interrupts
 009A F894              cli
 009C                   .dbline 73
 009C           ;  port_init();
 009C B1DF              rcall _port_init
 009E                   .dbline 75
 009E           ; 
 009E           ;  MCUCR = 0x00;
 009E 2224              clr R2
 00A0 25BE              out 0x35,R2
 00A2                   .dbline 76
 00A2           ;  GICR  = 0x00;
 00A2 2BBE              out 0x3b,R2
 00A4                   .dbline 77
 00A4           ;  TIMSK = 0x00; //timer interrupt sources
 00A4 29BE              out 0x39,R2
 00A6                   .dbline 78
 00A6           ;  SEI(); //re-enable interrupts
 00A6 7894              sei
 00A8                   .dbline -2
 00A8                   .dbline 80
 00A8           ;  //all peripherals are now initialised
 00A8           ; }
 00A8           L23:
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbend
 00AA                   .dbfunc e main _main fV
                        .even
 00AA           _main::
 00AA                   .dbline -1
 00AA                   .dbline 84
 00AA           ; 
 00AA           ; //
 00AA           ; void main(void)
 00AA           ; {
 00AA                   .dbline 85
 00AA           ;  init_devices();
 00AA F7DF              rcall _init_devices
 00AC 1AC0              rjmp L26
 00AE           L25:
 00AE                   .dbline 88
 00AE                   .dbline 89
 00AE C9DF              rcall _led_on
 00B0                   .dbline 90
 00B0 CEDF              rcall _led_off
 00B2                   .dbline 92
 00B2 C7DF              rcall _led_on
 00B4                   .dbline 93
 00B4 CCDF              rcall _led_off
 00B6                   .dbline 96
 00B6 D1DF              rcall _pd_1
 00B8                   .dbline 98
 00B8 C4DF              rcall _led_on
 00BA                   .dbline 99
 00BA C9DF              rcall _led_off
 00BC                   .dbline 102
 00BC DEDF              rcall _pd_2
 00BE                   .dbline 104
 00BE C1DF              rcall _led_on
 00C0                   .dbline 105
 00C0 C6DF              rcall _led_off
 00C2                   .dbline 109
 00C2 8EEF              ldi R24,254
 00C4 88BB              out 0x18,R24
 00C6                   .dbline 110
 00C6 08E8              ldi R16,136
 00C8 A6DF              rcall _delay
 00CA                   .dbline 112
 00CA C09A              sbi 0x18,0
 00CC                   .dbline 113
 00CC 08E8              ldi R16,136
 00CE A3DF              rcall _delay
 00D0                   .dbline 115
 00D0 C098              cbi 0x18,0
 00D2                   .dbline 116
 00D2 08E8              ldi R16,136
 00D4 A0DF              rcall _delay
 00D6                   .dbline 118
 00D6 81E0              ldi R24,1
 00D8 28B2              in R2,0x18
 00DA 2826              eor R2,R24
 00DC 28BA              out 0x18,R2
 00DE                   .dbline 119
 00DE 08E8              ldi R16,136
 00E0 9ADF              rcall _delay
 00E2                   .dbline 120
 00E2           L26:
 00E2                   .dbline 87
 00E2 E5CF              rjmp L25
 00E4           X0:
 00E4                   .dbline -2
 00E4                   .dbline 121
 00E4           ;  
 00E4           ;  while(1)
 00E4           ;  {
 00E4           ;   led_on();
 00E4           ;   led_off();
 00E4           ;   
 00E4           ;   led_on();
 00E4           ;   led_off();
 00E4           ;   
 00E4           ;   
 00E4           ;   pd_1();
 00E4           ;   
 00E4           ;   led_on();
 00E4           ;   led_off();
 00E4           ;   
 00E4           ;   
 00E4           ;   pd_2();
 00E4           ;   
 00E4           ;   led_on();
 00E4           ;   led_off();
 00E4           ;   
 00E4           ;   
 00E4           ;   //赋值(会给所有的位以特定值),使pb0为0,led亮;
 00E4           ;   PORTB = 0xFE;
 00E4           ;   delay(5000);
 00E4           ;   //置位(不影响其他位),使pb0为1,led灭;
 00E4           ;   PORTB |= 0x01;
 00E4           ;   delay(5000);
 00E4           ;   //清零(不影响其他位),使pb0为0,led亮; 
 00E4           ;   PORTB &= ~0x01;
 00E4           ;   delay(5000);
 00E4           ;   //反转(不影响其他位),使pb0为1,led灭;
 00E4           ;   PORTB ^= 0x01;
 00E4           ;   delay(5000);
 00E4           ;  }
 00E4           ; }
 00E4           L24:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend

⌨️ 快捷键说明

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