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

📄 led.lis

📁 atmega8的关于LED的代码
💻 LIS
字号:
                        .module LED.C
                        .area text(rom, con, rel)
 0000                   .dbfile F:\辛涛\实验板\实验板程序\数码管显示\LED.C
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 18
 0000           ; /*********************************************
 0000           ; ************PC0==>DATA
 0000           ; ************PC1==>SCLK
 0000           ; ************PC2==>C0
 0000           ; ************PC3==>C1
 0000           ; ************PC4==>C2
 0000           ; ************PC5==>C3
 0000           ; ************PC6==>C4
 0000           ; **********************************************/
 0000           ; //ICC-AVR application builder : 2007-4-4 15:05:58
 0000           ; // Target : M8
 0000           ; // Crystal: 11.059Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 19
 0000           ;  PORTB = 0xFF;
 0000 8FEF              ldi R24,255
 0002 88BB              out 0x18,R24
 0004                   .dbline 20
 0004           ;  DDRB  = 0x00;
 0004 2224              clr R2
 0006 27BA              out 0x17,R2
 0008                   .dbline 21
 0008           ;  PORTC = 0x7F; //m103 output only
 0008 8FE7              ldi R24,127
 000A 85BB              out 0x15,R24
 000C                   .dbline 22
 000C           ;  DDRC  = 0x7F;
 000C 84BB              out 0x14,R24
 000E                   .dbline 23
 000E           ;  PORTD = 0xFF;
 000E 8FEF              ldi R24,255
 0010 82BB              out 0x12,R24
 0012                   .dbline 24
 0012           ;  DDRD  = 0x00;
 0012 21BA              out 0x11,R2
 0014                   .dbline -2
 0014                   .dbline 25
 0014           ; }
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e delay_1ms _delay_1ms fV
 0016           ;              i -> R16,R17
                        .even
 0016           _delay_1ms::
 0016                   .dbline -1
 0016                   .dbline 28
 0016           ; /*****************************延时函数**************************************/
 0016           ; void delay_1ms(void)//1ms延时函数
 0016           ; {
 0016                   .dbline 30
 0016           ;  unsigned int i;
 0016           ;  for (i=1;i<1571;i++)
 0016 01E0              ldi R16,1
 0018 10E0              ldi R17,0
 001A 02C0              rjmp L6
 001C           L3:
 001C                   .dbline 31
 001C           L4:
 001C                   .dbline 30
 001C 0F5F              subi R16,255  ; offset = 1
 001E 1F4F              sbci R17,255
 0020           L6:
 0020                   .dbline 30
 0020 0332              cpi R16,35
 0022 E6E0              ldi R30,6
 0024 1E07              cpc R17,R30
 0026 D0F3              brlo L3
 0028                   .dbline -2
 0028                   .dbline 32
 0028           ;  ;
 0028           ; }
 0028           L2:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbsym r i 16 i
 002A                   .dbend
 002A                   .dbfunc e delay_ms _delay_ms fV
 002A           ;              i -> R20,R21
 002A           ;              n -> R22,R23
                        .even
 002A           _delay_ms::
 002A 00D0              rcall push_gset2
 002C B801              movw R22,R16
 002E                   .dbline -1
 002E                   .dbline 34
 002E           ; void delay_ms (unsigned int n)
 002E           ; {
 002E                   .dbline 35
 002E           ;  unsigned int i=0;
 002E 4427              clr R20
 0030 5527              clr R21
 0032                   .dbline 36
 0032           ;  for (i=0;i<n;i++)
 0032 03C0              rjmp L11
 0034           L8:
 0034                   .dbline 37
 0034 F0DF              rcall _delay_1ms
 0036           L9:
 0036                   .dbline 36
 0036 4F5F              subi R20,255  ; offset = 1
 0038 5F4F              sbci R21,255
 003A           L11:
 003A                   .dbline 36
 003A 4617              cp R20,R22
 003C 5707              cpc R21,R23
 003E D0F3              brlo L8
 0040                   .dbline -2
 0040                   .dbline 38
 0040           ;  delay_1ms();
 0040           ; } 
 0040           L7:
 0040 00D0              rcall pop_gset2
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbsym r i 20 i
 0044                   .dbsym r n 22 i
 0044                   .dbend
 0044                   .dbfunc e VUART0 _VUART0 fc
 0044           ;         count1 -> <dead>
 0044           ;           VBUF -> R20
 0044           ;         count2 -> R22
 0044           ;        bit_ctr -> R10
 0044           ;        Display -> R22
                        .even
 0044           _VUART0::
 0044 00D0              rcall push_gset3
 0046 602F              mov R22,R16
 0048                   .dbline -1
 0048                   .dbline 41
 0048           ; /************************虚拟串行显示通道0***************************/
 0048           ; unsigned char VUART0 (unsigned char Display)
 0048           ; {
 0048                   .dbline 43
 0048           ;  unsigned char VBUF,bit_ctr,count1,count2;
 0048           ;   VBUF=Display;
 0048                   .dbline 44
 0048           ;   bit_ctr=0x01;
 0048                   .dbline 45
 0048           ;   for (count2=0;count2<8;count2++)
 0048 462F              mov R20,R22
 004A AA24              clr R10
 004C A394              inc R10
 004E 6627              clr R22
 0050 19C0              rjmp L16
 0052           L13:
 0052                   .dbline 46
 0052           ;   {
 0052                   .dbline 47
 0052           ;   if ((VBUF&bit_ctr)==0x00)
 0052 242E              mov R2,R20
 0054 2A20              and R2,R10
 0056 69F4              brne L17
 0058                   .dbline 48
 0058           ;    {//数据为0   
 0058                   .dbline 49
 0058           ;     PORTC=0b00111100;//PC0=RXD数据
 0058 8CE3              ldi R24,60
 005A 85BB              out 0x15,R24
 005C                   .dbline 50
 005C           ;       delay_ms (2);       
 005C 02E0              ldi R16,2
 005E 10E0              ldi R17,0
 0060 E4DF              rcall _delay_ms
 0062                   .dbline 51
 0062           ;       PORTC=0b00111110;//PC1=TXD时钟  
 0062 8EE3              ldi R24,62
 0064 85BB              out 0x15,R24
 0066                   .dbline 52
 0066           ;       delay_ms (2);
 0066 02E0              ldi R16,2
 0068 10E0              ldi R17,0
 006A DFDF              rcall _delay_ms
 006C                   .dbline 53
 006C           ;     PORTC=0b00111111;//PC1=TXD时钟
 006C 8FE3              ldi R24,63
 006E 85BB              out 0x15,R24
 0070                   .dbline 54
 0070           ;    }
 0070 07C0              rjmp L18
 0072           L17:
 0072                   .dbline 56
 0072           ;   else
 0072           ;    {//数据为1
 0072                   .dbline 57
 0072           ;     PORTC=0b00111101;//PC0=RXD数据
 0072 8DE3              ldi R24,61
 0074 85BB              out 0x15,R24
 0076                   .dbline 58
 0076           ;       delay_ms (2);
 0076 02E0              ldi R16,2
 0078 10E0              ldi R17,0
 007A D7DF              rcall _delay_ms
 007C                   .dbline 59
 007C           ;     PORTC=0b00111111;//PC1=TXD时钟    
 007C 8FE3              ldi R24,63
 007E 85BB              out 0x15,R24
 0080                   .dbline 60
 0080           ;    }
 0080           L18:
 0080                   .dbline 61
 0080 AA0C              lsl R10
 0082                   .dbline 62
 0082           L14:
 0082                   .dbline 45
 0082 6395              inc R22
 0084           L16:
 0084                   .dbline 45
 0084 6830              cpi R22,8
 0086 28F3              brlo L13
 0088                   .dbline -2
 0088                   .dbline 64
 0088           ;    bit_ctr<<=1;
 0088           ;   }
 0088           ; 
 0088           ; }
 0088           L12:
 0088 00D0              rcall pop_gset3
 008A                   .dbline 0 ; func end
 008A 0895              ret
 008C                   .dbsym l count1 1 c
 008C                   .dbsym r VBUF 20 c
 008C                   .dbsym r count2 22 c
 008C                   .dbsym r bit_ctr 10 c
 008C                   .dbsym r Display 22 c
 008C                   .dbend
 008C                   .dbfunc e init_devices _init_devices fV
                        .even
 008C           _init_devices::
 008C                   .dbline -1
 008C                   .dbline 67
 008C           ; //call this routine to initialise all peripherals
 008C           ; void init_devices(void)
 008C           ; {
 008C                   .dbline 69
 008C           ;  //stop errant interrupts until set up
 008C           ;  CLI(); //disable all interrupts
 008C F894              cli
 008E                   .dbline 70
 008E           ;  port_init();
 008E B8DF              rcall _port_init
 0090                   .dbline 72
 0090           ; 
 0090           ;  MCUCR = 0x00;
 0090 2224              clr R2
 0092 25BE              out 0x35,R2
 0094                   .dbline 73
 0094           ;  GICR  = 0x00;
 0094 2BBE              out 0x3b,R2
 0096                   .dbline 74
 0096           ;  TIMSK = 0x00; //timer interrupt sources
 0096 29BE              out 0x39,R2
 0098                   .dbline 75
 0098           ;  SEI(); //re-enable interrupts
 0098 7894              sei
 009A                   .dbline -2
 009A                   .dbline 77
 009A           ;  //all peripherals are now initialised
 009A           ; }
 009A           L19:
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbend
 009C                   .dbfunc e main _main fV
                        .even
 009C           _main::
 009C                   .dbline -1
 009C                   .dbline 79
 009C           ; void main()
 009C           ; {
 009C                   .dbline 80
 009C           ;  init_devices(); 
 009C F7DF              rcall _init_devices
 009E                   .dbline 84
 009E           ;  
 009E           ;  //while(1) 
 009E           ;  // {
 009E           ;     VUART0 (0xff);
 009E 0FEF              ldi R16,255
 00A0                   .dbline -2
 00A0                   .dbline 86
 00A0           ;   //} 
 00A0           ; }
 00A0           L20:
 00A0                   .dbline 0 ; func end
 00A0 D1CF              rjmp _VUART0
 00A2                   .dbend

⌨️ 快捷键说明

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