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