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