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

📄 3.lis

📁 这是关于AVR单片机学习的初步开发
💻 LIS
字号:
                        .module _3.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\单片机教学\调试程序\实验二舵机串口\3.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; //ICC-AVR application builder : 2005-3-29 下午 11:37:28
 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 10
 0000           ;  PORTB = 0xFF;
 0000 8FEF              ldi R24,255
 0002 88BB              out 0x18,R24
 0004                   .dbline 11
 0004           ;  DDRB  = 0x02;
 0004 82E0              ldi R24,2
 0006 87BB              out 0x17,R24
 0008                   .dbline 12
 0008           ;  PORTC = 0x7F; //m103 output only
 0008 8FE7              ldi R24,127
 000A 85BB              out 0x15,R24
 000C                   .dbline 13
 000C           ;  DDRC  = 0x00;
 000C 2224              clr R2
 000E 24BA              out 0x14,R2
 0010                   .dbline 14
 0010           ;  PORTD = 0xFF;
 0010 8FEF              ldi R24,255
 0012 82BB              out 0x12,R24
 0014                   .dbline 15
 0014           ;  DDRD  = 0x00;
 0014 21BA              out 0x11,R2
 0016                   .dbline -2
 0016                   .dbline 16
 0016           ; }
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbend
 0018                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0018           _timer1_init::
 0018                   .dbline -1
 0018                   .dbline 23
 0018           ; 
 0018           ; //TIMER1 initialisation - prescale:8
 0018           ; // WGM: 14) PWM fast, TOP=ICRn
 0018           ; // desired value: 50Hz
 0018           ; // actual value: 50.001Hz (0.0%)
 0018           ; void timer1_init(void)
 0018           ; {
 0018                   .dbline 24
 0018           ;  TCCR1B = 0x00; //stop
 0018 2224              clr R2
 001A 2EBC              out 0x2e,R2
 001C                   .dbline 25
 001C           ;  TCNT1H = 0x00; //setup
 001C 2DBC              out 0x2d,R2
 001E                   .dbline 26
 001E           ;  TCNT1L = 0x00;
 001E 2CBC              out 0x2c,R2
 0020                   .dbline 27
 0020           ;  OCR1AH = 0x08;
 0020 88E0              ldi R24,8
 0022 8BBD              out 0x2b,R24
 0024                   .dbline 28
 0024           ;  OCR1AL = 0x19;
 0024 89E1              ldi R24,25
 0026 8ABD              out 0x2a,R24
 0028                   .dbline 29
 0028           ;  OCR1BH = 0x6B;
 0028 8BE6              ldi R24,107
 002A 89BD              out 0x29,R24
 002C                   .dbline 30
 002C           ;  OCR1BL = 0xFE;
 002C 8EEF              ldi R24,254
 002E 88BD              out 0x28,R24
 0030                   .dbline 31
 0030           ;  ICR1H  = 0x6B;
 0030 8BE6              ldi R24,107
 0032 87BD              out 0x27,R24
 0034                   .dbline 32
 0034           ;  ICR1L  = 0xFE;
 0034 8EEF              ldi R24,254
 0036 86BD              out 0x26,R24
 0038                   .dbline 33
 0038           ;  TCCR1A = 0xA2;
 0038 82EA              ldi R24,162
 003A 8FBD              out 0x2f,R24
 003C                   .dbline 34
 003C           ;  TCCR1B = 0x1A; //start Timer
 003C 8AE1              ldi R24,26
 003E 8EBD              out 0x2e,R24
 0040                   .dbline -2
 0040                   .dbline 35
 0040           ; }
 0040           L2:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbend
 0042                   .dbfunc e uart0_init _uart0_init fV
                        .even
 0042           _uart0_init::
 0042                   .dbline -1
 0042                   .dbline 43
 0042           ; 
 0042           ; //UART0 initialisation
 0042           ; // desired baud rate: 9600
 0042           ; // actual: baud rate:9600 (0.0%)
 0042           ; // char size: 8 bit
 0042           ; // parity: Disabled
 0042           ; void uart0_init(void)
 0042           ; {
 0042                   .dbline 44
 0042           ;  UCSRB = 0x00; //disable while setting baud rate
 0042 2224              clr R2
 0044 2AB8              out 0xa,R2
 0046                   .dbline 45
 0046           ;  UCSRA = 0x00;
 0046 2BB8              out 0xb,R2
 0048                   .dbline 46
 0048           ;  UCSRC = 0x86;
 0048 86E8              ldi R24,134
 004A 80BD              out 0x20,R24
 004C                   .dbline 47
 004C           ;  UBRRL = 0x47; //set baud rate lo
 004C 87E4              ldi R24,71
 004E 89B9              out 0x9,R24
 0050                   .dbline 48
 0050           ;  UBRRH = 0x00; //set baud rate hi
 0050 20BC              out 0x20,R2
 0052                   .dbline 49
 0052           ;  UCSRB = 0xD8;
 0052 88ED              ldi R24,216
 0054 8AB9              out 0xa,R24
 0056                   .dbline -2
 0056                   .dbline 50
 0056           ; }
 0056           L3:
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbend
                        .area vector(rom, abs)
                        .org 22
 0016 2CC0              rjmp _uart0_rx_isr
                        .area text(rom, con, rel)
 0058                   .dbfile F:\单片机教学\调试程序\实验二舵机串口\3.c
 0058                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
 0058           ;           data -> R16
 0058           ;           temp -> R18
 0058           ;           time -> R16,R17
                        .even
 0058           _uart0_rx_isr::
 0058 0A92              st -y,R0
 005A 1A92              st -y,R1
 005C 2A92              st -y,R2
 005E 3A92              st -y,R3
 0060 0A93              st -y,R16
 0062 1A93              st -y,R17
 0064 2A93              st -y,R18
 0066 8A93              st -y,R24
 0068 0FB6              in R0,0x3f
 006A 0A92              st -y,R0
 006C                   .dbline -1
 006C                   .dbline 54
 006C           ; 
 006C           ; #pragma interrupt_handler uart0_rx_isr:12
 006C           ; void uart0_rx_isr(void)
 006C           ; {
 006C                   .dbline 59
 006C           ;  //uart has received a character in UDR
 006C           ;   char temp,data;
 006C           ;  unsigned int time;
 006C           ;  
 006C           ;  temp = UDR;
 006C 2CB1              in R18,0xc
 006E                   .dbline 60
 006E           ;  data = temp;
 006E 022F              mov R16,R18
 0070                   .dbline 61
 0070           ;  time = (data *31>>1)+691;
 0070 8FE1              ldi R24,31
 0072 809F              mul R24,R16
 0074 8001              movw R16,R0
 0076 1595              asr R17
 0078 0795              ror R16
 007A 0D54              subi R16,77  ; offset = 691
 007C 1D4F              sbci R17,253
 007E                   .dbline 62
 007E           ;  OCR1AH = time >>8;
 007E 1801              movw R2,R16
 0080 232C              mov R2,R3
 0082 3324              clr R3
 0084 2BBC              out 0x2b,R2
 0086                   .dbline 63
 0086           ;  OCR1AL = time;
 0086 0ABD              out 0x2a,R16
 0088                   .dbline 64
 0088           ;  UDR =  0x00;
 0088 2224              clr R2
 008A 2CB8              out 0xc,R2
 008C                   .dbline -2
 008C                   .dbline 65
 008C           ; }
 008C           L4:
 008C 0990              ld R0,y+
 008E 0FBE              out 0x3f,R0
 0090 8991              ld R24,y+
 0092 2991              ld R18,y+
 0094 1991              ld R17,y+
 0096 0991              ld R16,y+
 0098 3990              ld R3,y+
 009A 2990              ld R2,y+
 009C 1990              ld R1,y+
 009E 0990              ld R0,y+
 00A0                   .dbline 0 ; func end
 00A0 1895              reti
 00A2                   .dbsym r data 16 c
 00A2                   .dbsym r temp 18 c
 00A2                   .dbsym r time 16 i
 00A2                   .dbend
                        .area vector(rom, abs)
                        .org 26
 001A 51C0              rjmp _uart0_tx_isr
                        .area text(rom, con, rel)
 00A2                   .dbfile F:\单片机教学\调试程序\实验二舵机串口\3.c
 00A2                   .dbfunc e uart0_tx_isr _uart0_tx_isr fV
                        .even
 00A2           _uart0_tx_isr::
 00A2                   .dbline -1
 00A2                   .dbline 69
 00A2           ; 
 00A2           ; #pragma interrupt_handler uart0_tx_isr:14
 00A2           ; void uart0_tx_isr(void)
 00A2           ; {
 00A2                   .dbline 71
 00A2           ;  //character has been transmitted
 00A2           ;  ;
 00A2                   .dbline -2
 00A2                   .dbline 73
 00A2           ;  
 00A2           ; }
 00A2           L5:
 00A2                   .dbline 0 ; func end
 00A2 1895              reti
 00A4                   .dbend
 00A4                   .dbfunc e init_devices _init_devices fV
                        .even
 00A4           _init_devices::
 00A4                   .dbline -1
 00A4                   .dbline 77
 00A4           ; 
 00A4           ; //call this routine to initialise all peripherals
 00A4           ; void init_devices(void)
 00A4           ; {
 00A4                   .dbline 79
 00A4           ;  //stop errant interrupts until set up
 00A4           ;  CLI(); //disable all interrupts
 00A4 F894              cli
 00A6                   .dbline 80
 00A6           ;  port_init();
 00A6 ACDF              rcall _port_init
 00A8                   .dbline 81
 00A8           ;  timer1_init();
 00A8 B7DF              rcall _timer1_init
 00AA                   .dbline 82
 00AA           ;  uart0_init();
 00AA CBDF              rcall _uart0_init
 00AC                   .dbline 84
 00AC           ; 
 00AC           ;  MCUCR = 0x00;
 00AC 2224              clr R2
 00AE 25BE              out 0x35,R2
 00B0                   .dbline 85
 00B0           ;  GICR  = 0x00;
 00B0 2BBE              out 0x3b,R2
 00B2                   .dbline 86
 00B2           ;  TIMSK = 0x04; //timer interrupt sources
 00B2 84E0              ldi R24,4
 00B4 89BF              out 0x39,R24
 00B6                   .dbline 87
 00B6           ;  SEI(); //re-enable interrupts
 00B6 7894              sei
 00B8                   .dbline -2
 00B8                   .dbline 89
 00B8           ;  //all peripherals are now initialised
 00B8           ; }
 00B8           L6:
 00B8                   .dbline 0 ; func end
 00B8 0895              ret
 00BA                   .dbend
 00BA                   .dbfunc e main _main fV
                        .even
 00BA           _main::
 00BA                   .dbline -1
 00BA                   .dbline 93
 00BA           ; 
 00BA           ; //
 00BA           ; void main(void)
 00BA           ; {
 00BA                   .dbline 94
 00BA           ;  init_devices();
 00BA F4DF              rcall _init_devices
 00BC           L8:
 00BC                   .dbline 96
 00BC           L9:
 00BC                   .dbline 96
 00BC FFCF              rjmp L8
 00BE           X0:
 00BE                   .dbline -2
 00BE                   .dbline 97
 00BE           ;  //insert your functional code here...
 00BE           ;  while(1);
 00BE           ; }
 00BE           L7:
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbend

⌨️ 快捷键说明

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