📄 main.lis
字号:
.module main.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:\单片机教学\调试程序\实验二舵机串口\main.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:\单片机教学\调试程序\实验二舵机串口\main.c
0002 .dbsym e data _data c
.area text(rom, con, rel)
0000 .dbfile F:\单片机教学\调试程序\实验二舵机串口\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 14
0000 ; //在主程序中进行数据转换;
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 ; //定义全局变量;
0000 ; char flag = 0;
0000 ; char data = 90;
0000 ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 15
0000 ; PORTB = 0xFF;
0000 8FEF ldi R24,255
0002 88BB out 0x18,R24
0004 .dbline 16
0004 ; DDRB = 0x02;
0004 82E0 ldi R24,2
0006 87BB out 0x17,R24
0008 .dbline 17
0008 ; PORTC = 0x7F; //m103 output only
0008 8FE7 ldi R24,127
000A 85BB out 0x15,R24
000C .dbline 18
000C ; DDRC = 0x00;
000C 2224 clr R2
000E 24BA out 0x14,R2
0010 .dbline 19
0010 ; PORTD = 0xFF;
0010 8FEF ldi R24,255
0012 82BB out 0x12,R24
0014 .dbline 20
0014 ; DDRD = 0x00;
0014 21BA out 0x11,R2
0016 .dbline -2
0016 .dbline 21
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 28
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 29
0018 ; TCCR1B = 0x00; //stop
0018 2224 clr R2
001A 2EBC out 0x2e,R2
001C .dbline 31
001C ;
001C ; TCNT1H = 0x00; //setup
001C 2DBC out 0x2d,R2
001E .dbline 32
001E ; TCNT1L = 0x00;
001E 2CBC out 0x2c,R2
0020 .dbline 34
0020 ;
0020 ; OCR1AH = 0x08;
0020 88E0 ldi R24,8
0022 8BBD out 0x2b,R24
0024 .dbline 35
0024 ; OCR1AL = 0x19;
0024 89E1 ldi R24,25
0026 8ABD out 0x2a,R24
0028 .dbline 36
0028 ; OCR1BH = 0x08;
0028 88E0 ldi R24,8
002A 89BD out 0x29,R24
002C .dbline 37
002C ; OCR1BL = 0x19;
002C 89E1 ldi R24,25
002E 88BD out 0x28,R24
0030 .dbline 39
0030 ;
0030 ; ICR1H = 0x6B;
0030 8BE6 ldi R24,107
0032 87BD out 0x27,R24
0034 .dbline 40
0034 ; ICR1L = 0xFE;
0034 8EEF ldi R24,254
0036 86BD out 0x26,R24
0038 .dbline 42
0038 ;
0038 ; TCCR1A = 0xA2;
0038 82EA ldi R24,162
003A 8FBD out 0x2f,R24
003C .dbline 43
003C ; TCCR1B = 0x1A; //start Timer
003C 8AE1 ldi R24,26
003E 8EBD out 0x2e,R24
0040 .dbline -2
0040 .dbline 44
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 52
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 53
0042 ; UCSRB = 0x00; //disable while setting baud rate
0042 2224 clr R2
0044 2AB8 out 0xa,R2
0046 .dbline 54
0046 ; UCSRA = 0x00;
0046 2BB8 out 0xb,R2
0048 .dbline 55
0048 ; UCSRC = 0x86;
0048 86E8 ldi R24,134
004A 80BD out 0x20,R24
004C .dbline 56
004C ; UBRRL = 0x47; //set baud rate lo
004C 87E4 ldi R24,71
004E 89B9 out 0x9,R24
0050 .dbline 57
0050 ; UBRRH = 0x00; //set baud rate hi
0050 20BC out 0x20,R2
0052 .dbline 58
0052 ; UCSRB = 0x98;
0052 88E9 ldi R24,152
0054 8AB9 out 0xa,R24
0056 .dbline -2
0056 .dbline 59
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:\单片机教学\调试程序\实验二舵机串口\main.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 63
0060 ;
0060 ; #pragma interrupt_handler uart0_rx_isr:12
0060 ; void uart0_rx_isr(void)
0060 ; {
0060 .dbline 65
0060 ; //uart has received a character in UDR
0060 ; data= UDR;
0060 2CB0 in R2,0xc
0062 20920100 sts _data,R2
0066 .dbline 66
0066 ; UDR = data;
0066 2CB8 out 0xc,R2
0068 .dbline 67
0068 ; flag = 1;
0068 81E0 ldi R24,1
006A 80930000 sts _flag,R24
006E .dbline -2
006E .dbline 68
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 72
0078 ;
0078 ; //call this routine to initialise all peripherals
0078 ; void init_devices(void)
0078 ; {
0078 .dbline 74
0078 ; //stop errant interrupts until set up
0078 ; CLI(); //disable all interrupts
0078 F894 cli
007A .dbline 75
007A ; port_init();
007A C2DF rcall _port_init
007C .dbline 76
007C ; timer1_init();
007C CDDF rcall _timer1_init
007E .dbline 77
007E ; uart0_init();
007E E1DF rcall _uart0_init
0080 .dbline 79
0080 ;
0080 ; MCUCR = 0x00;
0080 2224 clr R2
0082 25BE out 0x35,R2
0084 .dbline 80
0084 ; GICR = 0x00;
0084 2BBE out 0x3b,R2
0086 .dbline 81
0086 ; TIMSK = 0x00; //timer interrupt sources
0086 29BE out 0x39,R2
0088 .dbline 82
0088 ; SEI(); //re-enable interrupts
0088 7894 sei
008A .dbline -2
008A .dbline 84
008A ; //all peripherals are now initialised
008A ; }
008A L5:
008A .dbline 0 ; func end
008A 0895 ret
008C .dbend
008C .dbfunc e main _main fV
008C ; time -> R20,R21
.even
008C _main::
008C .dbline -1
008C .dbline 88
008C ;
008C ; //
008C ; void main(void)
008C ; {
008C .dbline 90
008C ; unsigned int time;
008C ; init_devices();
008C F5DF rcall _init_devices
008E 15C0 rjmp L8
0090 L7:
0090 .dbline 93
0090 ; //insert your functional code here...
0090 ; while(1)
0090 ; {
0090 .dbline 94
0090 ; if(flag == 1)
0090 80910000 lds R24,_flag
0094 8130 cpi R24,1
0096 89F4 brne L10
0098 .dbline 95
0098 ; {
0098 .dbline 96
0098 ; time = data *31;
0098 20900100 lds R2,_data
009C 8FE1 ldi R24,31
009E 829D mul R24,R2
00A0 A001 movw R20,R0
00A2 .dbline 97
00A2 ; time = (time>>1)+691;
00A2 5695 lsr R21
00A4 4795 ror R20
00A6 4D54 subi R20,77 ; offset = 691
00A8 5D4F sbci R21,253
00AA .dbline 98
00AA ; OCR1AH = time >>8;
00AA 1A01 movw R2,R20
00AC 232C mov R2,R3
00AE 3324 clr R3
00B0 2BBC out 0x2b,R2
00B2 .dbline 99
00B2 ; OCR1AL = time;
00B2 4ABD out 0x2a,R20
00B4 .dbline 100
00B4 ; flag = 0;
00B4 2224 clr R2
00B6 20920000 sts _flag,R2
00BA .dbline 101
00BA ; }
00BA L10:
00BA .dbline 102
00BA L8:
00BA .dbline 92
00BA EACF rjmp L7
00BC X0:
00BC .dbline -2
00BC .dbline 104
00BC ; }
00BC ;
00BC ; }
00BC L6:
00BC .dbline 0 ; func end
00BC 0895 ret
00BE .dbsym r time 20 i
00BE .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -