📄 server.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 + -