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

📄 2.lis

📁 这是关于AVR单片机学习的初步开发
💻 LIS
字号:
                        .module _2.c
                        .area data(ram, con, rel)
 0000           _flag::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile F:\单片机教学\调试程序\实验二舵机串口\2.c
 0001                   .dbsym e flag _flag c
 0001           _data::
 0001                   .blkb 1
                        .area idata
 0001 5A                .byte 90
                        .area data(ram, con, rel)
 0002                   .dbfile F:\单片机教学\调试程序\实验二舵机串口\2.c
 0002                   .dbsym e data _data c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\单片机教学\调试程序\实验二舵机串口\2.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 12
 0000           ; //ICC-AVR application builder : 2005-3-29 下午 11:17:39
 0000           ; // Target : M8
 0000           ; // Crystal: 11.059Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; char flag = 0;
 0000           ; char data = 90;
 0000           ; 
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 13
 0000           ;  PORTB = 0xFF;
 0000 8FEF              ldi R24,255
 0002 88BB              out 0x18,R24
 0004                   .dbline 14
 0004           ;  DDRB  = 0x02;
 0004 82E0              ldi R24,2
 0006 87BB              out 0x17,R24
 0008                   .dbline 15
 0008           ;  PORTC = 0x7F; //m103 output only
 0008 8FE7              ldi R24,127
 000A 85BB              out 0x15,R24
 000C                   .dbline 16
 000C           ;  DDRC  = 0x00;
 000C 2224              clr R2
 000E 24BA              out 0x14,R2
 0010                   .dbline 17
 0010           ;  PORTD = 0xFF;
 0010 8FEF              ldi R24,255
 0012 82BB              out 0x12,R24
 0014                   .dbline 18
 0014           ;  DDRD  = 0x00;
 0014 21BA              out 0x11,R2
 0016                   .dbline -2
 0016                   .dbline 19
 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 26
 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 27
 0018           ;  TCCR1B = 0x00; //stop
 0018 2224              clr R2
 001A 2EBC              out 0x2e,R2
 001C                   .dbline 28
 001C           ;  TCNT1H = 0x00; //setup
 001C 2DBC              out 0x2d,R2
 001E                   .dbline 29
 001E           ;  TCNT1L = 0x00;
 001E 2CBC              out 0x2c,R2
 0020                   .dbline 30
 0020           ;  OCR1AH = 0x08;
 0020 88E0              ldi R24,8
 0022 8BBD              out 0x2b,R24
 0024                   .dbline 31
 0024           ;  OCR1AL = 0x79;
 0024 89E7              ldi R24,121
 0026 8ABD              out 0x2a,R24
 0028                   .dbline 32
 0028           ;  OCR1BH = 0x6B;
 0028 8BE6              ldi R24,107
 002A 89BD              out 0x29,R24
 002C                   .dbline 33
 002C           ;  OCR1BL = 0xFE;
 002C 8EEF              ldi R24,254
 002E 88BD              out 0x28,R24
 0030                   .dbline 34
 0030           ;  ICR1H  = 0x6B;
 0030 8BE6              ldi R24,107
 0032 87BD              out 0x27,R24
 0034                   .dbline 35
 0034           ;  ICR1L  = 0xFE;
 0034 8EEF              ldi R24,254
 0036 86BD              out 0x26,R24
 0038                   .dbline 36
 0038           ;  TCCR1A = 0x82;
 0038 82E8              ldi R24,130
 003A 8FBD              out 0x2f,R24
 003C                   .dbline 37
 003C           ;  TCCR1B = 0x1A; //start Timer
 003C 8AE1              ldi R24,26
 003E 8EBD              out 0x2e,R24
 0040                   .dbline -2
 0040                   .dbline 38
 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 46
 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 47
 0042           ;  UCSRB = 0x00; //disable while setting baud rate
 0042 2224              clr R2
 0044 2AB8              out 0xa,R2
 0046                   .dbline 48
 0046           ;  UCSRA = 0x00;
 0046 2BB8              out 0xb,R2
 0048                   .dbline 49
 0048           ;  UCSRC = 0x86;
 0048 86E8              ldi R24,134
 004A 80BD              out 0x20,R24
 004C                   .dbline 50
 004C           ;  UBRRL = 0x47; //set baud rate lo
 004C 87E4              ldi R24,71
 004E 89B9              out 0x9,R24
 0050                   .dbline 51
 0050           ;  UBRRH = 0x00; //set baud rate hi
 0050 20BC              out 0x20,R2
 0052                   .dbline 52
 0052           ;  UCSRB = 0x98;
 0052 88E9              ldi R24,152
 0054 8AB9              out 0xa,R24
 0056                   .dbline -2
 0056                   .dbline 53
 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:\单片机教学\调试程序\实验二舵机串口\2.c
 0058                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
                        .even
 0058           _uart0_rx_isr::
 0058 2A92              st -y,R2
 005A 8A93              st -y,R24
 005C 2FB6              in R2,0x3f
 005E 2A92              st -y,R2
 0060                   .dbline -1
 0060                   .dbline 57
 0060           ; 
 0060           ; #pragma interrupt_handler uart0_rx_isr:12
 0060           ; void uart0_rx_isr(void)
 0060           ; {
 0060                   .dbline 60
 0060           ;  //uart has received a character in UDR
 0060           ;    
 0060           ;  data= UDR;
 0060 2CB0              in R2,0xc
 0062 20920100          sts _data,R2
 0066                   .dbline 61
 0066           ;  UDR =  data;
 0066 2CB8              out 0xc,R2
 0068                   .dbline 62
 0068           ;  flag = 1;
 0068 81E0              ldi R24,1
 006A 80930000          sts _flag,R24
 006E                   .dbline -2
 006E                   .dbline 65
 006E           ;  
 006E           ;  
 006E           ; }
 006E           L4:
 006E 2990              ld R2,y+
 0070 2FBE              out 0x3f,R2
 0072 8991              ld R24,y+
 0074 2990              ld R2,y+
 0076                   .dbline 0 ; func end
 0076 1895              reti
 0078                   .dbend
 0078                   .dbfunc e init_devices _init_devices fV
                        .even
 0078           _init_devices::
 0078                   .dbline -1
 0078                   .dbline 69
 0078           ; 
 0078           ; //call this routine to initialise all peripherals
 0078           ; void init_devices(void)
 0078           ; {
 0078                   .dbline 71
 0078           ;  //stop errant interrupts until set up
 0078           ;  CLI(); //disable all interrupts
 0078 F894              cli
 007A                   .dbline 72
 007A           ;  port_init();
 007A C2DF              rcall _port_init
 007C                   .dbline 73
 007C           ;  timer1_init();
 007C CDDF              rcall _timer1_init
 007E                   .dbline 74
 007E           ;  uart0_init();
 007E E1DF              rcall _uart0_init
 0080                   .dbline 76
 0080           ; 
 0080           ;  MCUCR = 0x00;
 0080 2224              clr R2
 0082 25BE              out 0x35,R2
 0084                   .dbline 77
 0084           ;  GICR  = 0x00;
 0084 2BBE              out 0x3b,R2
 0086                   .dbline 78
 0086           ;  TIMSK = 0x04; //timer interrupt sources
 0086 84E0              ldi R24,4
 0088 89BF              out 0x39,R24
 008A                   .dbline 79
 008A           ;  SEI(); //re-enable interrupts
 008A 7894              sei
 008C                   .dbline -2
 008C                   .dbline 81
 008C           ;  //all peripherals are now initialised
 008C           ; }
 008C           L5:
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbend
 008E                   .dbfunc e main _main fV
 008E           ;           time -> R20,R21
                        .even
 008E           _main::
 008E                   .dbline -1
 008E                   .dbline 85
 008E           ; 
 008E           ; //
 008E           ; void main(void)
 008E           ; {
 008E                   .dbline 87
 008E           ;  unsigned int time;
 008E           ;  init_devices();
 008E F4DF              rcall _init_devices
 0090 15C0              rjmp L8
 0092           L7:
 0092                   .dbline 90
 0092           ;  //insert your functional code here...
 0092           ;  while(1)
 0092           ;  {
 0092                   .dbline 91
 0092           ;   if(flag == 1)
 0092 80910000          lds R24,_flag
 0096 8130              cpi R24,1
 0098 89F4              brne L10
 009A                   .dbline 92
 009A           ;   {   
 009A                   .dbline 93
 009A           ;       time = data *31;
 009A 20900100          lds R2,_data
 009E 8FE1              ldi R24,31
 00A0 829D              mul R24,R2
 00A2 A001              movw R20,R0
 00A4                   .dbline 94
 00A4           ;       time = (time>>1)+691;
 00A4 5695              lsr R21
 00A6 4795              ror R20
 00A8 4D54              subi R20,77  ; offset = 691
 00AA 5D4F              sbci R21,253
 00AC                   .dbline 95
 00AC           ;       OCR1AH = time >>8;
 00AC 1A01              movw R2,R20
 00AE 232C              mov R2,R3
 00B0 3324              clr R3
 00B2 2BBC              out 0x2b,R2
 00B4                   .dbline 96
 00B4           ;       OCR1AL = time; 
 00B4 4ABD              out 0x2a,R20
 00B6                   .dbline 97
 00B6           ;       flag = 0;
 00B6 2224              clr R2
 00B8 20920000          sts _flag,R2
 00BC                   .dbline 98
 00BC           ;   }
 00BC           L10:
 00BC                   .dbline 99
 00BC           L8:
 00BC                   .dbline 89
 00BC EACF              rjmp L7
 00BE           X0:
 00BE                   .dbline -2
 00BE                   .dbline 101
 00BE           ; }
 00BE           ; 
 00BE           ; }
 00BE           L6:
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbsym r time 20 i
 00C0                   .dbend

⌨️ 快捷键说明

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