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

📄 server.lis

📁 这是关于AVR单片机学习的初步开发
💻 LIS
字号:
                        .module server.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:\单片机教学\调试程序\实验二舵机串口\server.c
 0001                   .dbsym e flag _flag c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\单片机教学\调试程序\实验二舵机串口\server.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 10
 0000           ; //ICC-AVR application builder : 2005-3-29 下午 10:34:28
 0000           ; // Target : M8
 0000           ; // Crystal: 11.059Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; char flag = 0;
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 11
 0000           ;  PORTB = 0xFF;
 0000 8FEF              ldi R24,255
 0002 88BB              out 0x18,R24
 0004                   .dbline 12
 0004           ;  DDRB  = 0x02;//设置PB1为输出;
 0004 82E0              ldi R24,2
 0006 87BB              out 0x17,R24
 0008                   .dbline 13
 0008           ;  PORTC = 0x7F; //m103 output only
 0008 8FE7              ldi R24,127
 000A 85BB              out 0x15,R24
 000C                   .dbline 14
 000C           ;  DDRC  = 0x00;
 000C 2224              clr R2
 000E 24BA              out 0x14,R2
 0010                   .dbline 15
 0010           ;  PORTD = 0xFF;
 0010 8FEF              ldi R24,255
 0012 82BB              out 0x12,R24
 0014                   .dbline 16
 0014           ;  DDRD  = 0x00;
 0014 21BA              out 0x11,R2
 0016                   .dbline -2
 0016                   .dbline 17
 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 25
 0018           ; 
 0018           ; //设置PWM输出方式;
 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 26
 0018           ;  TCCR1B = 0x00; //stop
 0018 2224              clr R2
 001A 2EBC              out 0x2e,R2
 001C                   .dbline 28
 001C           ;  
 001C           ;  TCNT1H = 0x00; //setup
 001C 2DBC              out 0x2d,R2
 001E                   .dbline 29
 001E           ;  TCNT1L = 0x00;
 001E 2CBC              out 0x2c,R2
 0020                   .dbline 31
 0020           ;   
 0020           ;  OCR1AH = 0x08;
 0020 88E0              ldi R24,8
 0022 8BBD              out 0x2b,R24
 0024                   .dbline 32
 0024           ;  OCR1AL = 0x19;
 0024 89E1              ldi R24,25
 0026 8ABD              out 0x2a,R24
 0028                   .dbline 33
 0028           ;  OCR1BH = 0x08;
 0028 88E0              ldi R24,8
 002A 89BD              out 0x29,R24
 002C                   .dbline 34
 002C           ;  OCR1BL = 0x19;
 002C 89E1              ldi R24,25
 002E 88BD              out 0x28,R24
 0030                   .dbline 36
 0030           ;    
 0030           ;  ICR1H  = 0x6B;
 0030 8BE6              ldi R24,107
 0032 87BD              out 0x27,R24
 0034                   .dbline 37
 0034           ;  ICR1L  = 0xFE;
 0034 8EEF              ldi R24,254
 0036 86BD              out 0x26,R24
 0038                   .dbline 39
 0038           ;  
 0038           ;  TCCR1A = 0xA2;
 0038 82EA              ldi R24,162
 003A 8FBD              out 0x2f,R24
 003C                   .dbline 40
 003C           ;  TCCR1B = 0x1A; //start Timer
 003C 8AE1              ldi R24,26
 003E 8EBD              out 0x2e,R24
 0040                   .dbline -2
 0040                   .dbline 41
 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 50
 0042           ; 
 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 51
 0042           ;  UCSRB = 0x00; //disable while setting baud rate
 0042 2224              clr R2
 0044 2AB8              out 0xa,R2
 0046                   .dbline 52
 0046           ;  UCSRA = 0x00;
 0046 2BB8              out 0xb,R2
 0048                   .dbline 53
 0048           ;  UCSRC = 0x86;
 0048 86E8              ldi R24,134
 004A 80BD              out 0x20,R24
 004C                   .dbline 54
 004C           ;  UBRRL = 0x47; //set baud rate lo
 004C 87E4              ldi R24,71
 004E 89B9              out 0x9,R24
 0050                   .dbline 55
 0050           ;  UBRRH = 0x00; //set baud rate hi
 0050 20BC              out 0x20,R2
 0052                   .dbline 56
 0052           ;  UCSRB = 0x98;
 0052 88E9              ldi R24,152
 0054 8AB9              out 0xa,R24
 0056                   .dbline -2
 0056                   .dbline 57
 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:\单片机教学\调试程序\实验二舵机串口\server.c
 0058                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
 0058           ;           data -> R16
 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 8A93              st -y,R24
 0066 0FB6              in R0,0x3f
 0068 0A92              st -y,R0
 006A                   .dbline -1
 006A                   .dbline 61
 006A           ; 
 006A           ; #pragma interrupt_handler uart0_rx_isr:12
 006A           ; void uart0_rx_isr(void)
 006A           ; {
 006A                   .dbline 66
 006A           ;  //uart has received a character in UDR
 006A           ;  char data;
 006A           ;  unsigned int time;
 006A           ;  
 006A           ;  data = UDR;//取出数据;
 006A 0CB1              in R16,0xc
 006C                   .dbline 67
 006C           ;  UDR =  data;//返回接收的数据;
 006C 0CB9              out 0xc,R16
 006E                   .dbline 68
 006E           ;  time = data*31;//注意需要先乘,后移位防止溢出;
 006E 8FE1              ldi R24,31
 0070 809F              mul R24,R16
 0072 8001              movw R16,R0
 0074                   .dbline 69
 0074           ;  time = ( time>>1)+691;//注意运算符的优先级顺序;
 0074 1695              lsr R17
 0076 0795              ror R16
 0078 0D54              subi R16,77  ; offset = 691
 007A 1D4F              sbci R17,253
 007C                   .dbline 70
 007C           ;  OCR1AH = time >>8;//16位寄存器先写高位,后写低位;
 007C 1801              movw R2,R16
 007E 232C              mov R2,R3
 0080 3324              clr R3
 0082 2BBC              out 0x2b,R2
 0084                   .dbline 71
 0084           ;  OCR1AL = time; 
 0084 0ABD              out 0x2a,R16
 0086                   .dbline -2
 0086                   .dbline 72
 0086           ; }
 0086           L4:
 0086 0990              ld R0,y+
 0088 0FBE              out 0x3f,R0
 008A 8991              ld R24,y+
 008C 1991              ld R17,y+
 008E 0991              ld R16,y+
 0090 3990              ld R3,y+
 0092 2990              ld R2,y+
 0094 1990              ld R1,y+
 0096 0990              ld R0,y+
 0098                   .dbline 0 ; func end
 0098 1895              reti
 009A                   .dbsym r data 16 c
 009A                   .dbsym r time 16 i
 009A                   .dbend
 009A                   .dbfunc e init_devices _init_devices fV
                        .even
 009A           _init_devices::
 009A                   .dbline -1
 009A                   .dbline 76
 009A           ; 
 009A           ; //call this routine to initialise all peripherals
 009A           ; void init_devices(void)
 009A           ; {
 009A                   .dbline 78
 009A           ;  //stop errant interrupts until set up
 009A           ;  CLI(); //disable all interrupts
 009A F894              cli
 009C                   .dbline 79
 009C           ;  port_init();
 009C B1DF              rcall _port_init
 009E                   .dbline 80
 009E           ;  timer1_init();
 009E BCDF              rcall _timer1_init
 00A0                   .dbline 81
 00A0           ;  uart0_init();
 00A0 D0DF              rcall _uart0_init
 00A2                   .dbline 83
 00A2           ; 
 00A2           ;  MCUCR = 0x00;
 00A2 2224              clr R2
 00A4 25BE              out 0x35,R2
 00A6                   .dbline 84
 00A6           ;  GICR  = 0x00;
 00A6 2BBE              out 0x3b,R2
 00A8                   .dbline 85
 00A8           ;  TIMSK = 0x00; //timer interrupt sources
 00A8 29BE              out 0x39,R2
 00AA                   .dbline 86
 00AA           ;  SEI(); //re-enable interrupts
 00AA 7894              sei
 00AC                   .dbline -2
 00AC                   .dbline 88
 00AC           ;  //all peripherals are now initialised
 00AC           ; }
 00AC           L5:
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbend
 00AE                   .dbfunc e main _main fV
                        .even
 00AE           _main::
 00AE                   .dbline -1
 00AE                   .dbline 92
 00AE           ; 
 00AE           ; //
 00AE           ; void main(void)
 00AE           ; {
 00AE                   .dbline 93
 00AE           ;  init_devices();
 00AE F5DF              rcall _init_devices
 00B0           L7:
 00B0                   .dbline 95
 00B0           L8:
 00B0                   .dbline 95
 00B0 FFCF              rjmp L7
 00B2           X0:
 00B2                   .dbline -2
 00B2                   .dbline 96
 00B2           ;  //insert your functional code here...
 00B2           ;  while(1);
 00B2           ; }
 00B2           L6:
 00B2                   .dbline 0 ; func end
 00B2 0895              ret
 00B4                   .dbend

⌨️ 快捷键说明

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