📄 main.lis
字号:
00BC ; UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE); //接收、发送使能,接收中断使能
00BC 88E9 ldi R24,152
00BE 8AB9 out 0xa,R24
00C0 .dbline 119
00C0 ; DDRD|=0X02; //配置TX为输出(很重要)
00C0 899A sbi 0x11,1
00C2 .dbline -2
00C2 L9:
00C2 0E940000 xcall pop_gset3
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbsym r baud 10 i
00C8 .dbend
00C8 .dbfunc e uart_sendB _uart_sendB fV
00C8 ; data -> R16
.even
00C8 _uart_sendB::
00C8 .dbline -1
00C8 .dbline 129
00C8 ; }
00C8 ; //=============================================================
00C8 ; // 函数名:void uart_sendB(unsigned char data)
00C8 ; // 功能: 串口发送一个字节
00C8 ; // 参数: unsigned char data 写入要发送的数据
00C8 ; // 返回值: none
00C8 ; // 使用方法:uart_sendB('a');
00C8 ; //=============================================================
00C8 ; void uart_sendB(unsigned char data)
00C8 ; {
00C8 L11:
00C8 .dbline 130
00C8 L12:
00C8 .dbline 130
00C8 ; while(!(UCSRA&(BIT(UDRE)))) ;
00C8 5D9B sbis 0xb,5
00CA FECF rjmp L11
00CC .dbline 131
00CC ; UDR=data;
00CC 0CB9 out 0xc,R16
00CE L14:
00CE .dbline 132
00CE L15:
00CE .dbline 132
00CE ; while(!(UCSRA&(BIT(TXC))));
00CE 5E9B sbis 0xb,6
00D0 FECF rjmp L14
00D2 .dbline 133
00D2 ; UCSRA|=BIT(TXC);
00D2 5E9A sbi 0xb,6
00D4 .dbline -2
00D4 L10:
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbsym r data 16 c
00D6 .dbend
00D6 .dbfunc e uart_send _uart_send fV
00D6 ; d -> y+0
00D6 ; data -> R20,R21
.even
00D6 _uart_send::
00D6 0E940000 xcall push_gset1
00DA A801 movw R20,R16
00DC 2497 sbiw R28,4
00DE .dbline -1
00DE .dbline 143
00DE ; }
00DE ; //=============================================================
00DE ; // 函数名:void uart_send(int data)
00DE ; // 功能: 串口发送一个4位10进制数
00DE ; // 参数: int data 写入要发送的数据
00DE ; // 返回值: none
00DE ; // 使用方法:uart_sendB(1234);
00DE ; //=============================================================
00DE ; void uart_send(int data)
00DE ; {
00DE .dbline 145
00DE ; unsigned char d[4];
00DE ; d[3]=data/1000;
00DE 28EE ldi R18,1000
00E0 33E0 ldi R19,3
00E2 8A01 movw R16,R20
00E4 0E940000 xcall div16s
00E8 0B83 std y+3,R16
00EA .dbline 146
00EA ; data=data%1000;
00EA 28EE ldi R18,1000
00EC 33E0 ldi R19,3
00EE 8A01 movw R16,R20
00F0 0E940000 xcall mod16s
00F4 A801 movw R20,R16
00F6 .dbline 147
00F6 ; d[2]=data/100;
00F6 24E6 ldi R18,100
00F8 30E0 ldi R19,0
00FA 0E940000 xcall div16s
00FE 0A83 std y+2,R16
0100 .dbline 148
0100 ; data=data%100;
0100 24E6 ldi R18,100
0102 30E0 ldi R19,0
0104 8A01 movw R16,R20
0106 0E940000 xcall mod16s
010A A801 movw R20,R16
010C .dbline 149
010C ; d[1]=data/10;
010C 2AE0 ldi R18,10
010E 30E0 ldi R19,0
0110 0E940000 xcall div16s
0114 0983 std y+1,R16
0116 .dbline 150
0116 ; d[0]=data%10;
0116 2AE0 ldi R18,10
0118 30E0 ldi R19,0
011A 8A01 movw R16,R20
011C 0E940000 xcall mod16s
0120 0883 std y+0,R16
0122 .dbline 151
0122 ; uart_sendB(d[3]+'0');
0122 0B81 ldd R16,y+3
0124 005D subi R16,208 ; addi 48
0126 D0DF xcall _uart_sendB
0128 .dbline 152
0128 ; uart_sendB(d[2]+'0');
0128 0A81 ldd R16,y+2
012A 005D subi R16,208 ; addi 48
012C CDDF xcall _uart_sendB
012E .dbline 153
012E ; uart_sendB(d[1]+'0');
012E 0981 ldd R16,y+1
0130 005D subi R16,208 ; addi 48
0132 CADF xcall _uart_sendB
0134 .dbline 154
0134 ; uart_sendB(d[0]+'0');
0134 0881 ldd R16,y+0
0136 005D subi R16,208 ; addi 48
0138 C7DF xcall _uart_sendB
013A .dbline 155
013A ; uart_sendB(';');
013A 0BE3 ldi R16,59
013C C5DF xcall _uart_sendB
013E .dbline -2
013E L17:
013E 2496 adiw R28,4
0140 0E940000 xcall pop_gset1
0144 .dbline 0 ; func end
0144 0895 ret
0146 .dbsym l d 0 A[4:4]c
0146 .dbsym r data 20 I
0146 .dbend
0146 .dbfunc e uart_senddata _uart_senddata fV
0146 ; ptr -> R20,R21
0146 ; data -> R22,R23
.even
0146 _uart_senddata::
0146 0E940000 xcall push_gset2
014A B801 movw R22,R16
014C .dbline -1
014C .dbline 165
014C ; }
014C ; //=============================================================
014C ; // 函数名:void uart_senddata(unsigned char *data)
014C ; // 功能: 通过串口发送字符串
014C ; // 参数: unsigned char *data 指针指向要发送的字符串
014C ; // 返回值: none
014C ; // 使用方法:uart_senddata(abc);
014C ; //=============================================================
014C ; void uart_senddata(unsigned char *data)
014C ; {
014C .dbline 167
014C ; unsigned char *ptr;
014C ; ptr = data;
014C AB01 movw R20,R22
014E 05C0 xjmp L26
0150 L25:
0150 .dbline 169
0150 .dbline 170
0150 FA01 movw R30,R20
0152 0081 ldd R16,z+0
0154 B9DF xcall _uart_sendB
0156 .dbline 171
0156 4F5F subi R20,255 ; offset = 1
0158 5F4F sbci R21,255
015A .dbline 172
015A L26:
015A .dbline 168
015A ; while(*ptr)
015A FA01 movw R30,R20
015C 2080 ldd R2,z+0
015E 2220 tst R2
0160 B9F7 brne L25
0162 .dbline -2
0162 L24:
0162 0E940000 xcall pop_gset2
0166 .dbline 0 ; func end
0166 0895 ret
0168 .dbsym r ptr 20 pc
0168 .dbsym r data 22 pc
0168 .dbend
0168 .dbfunc e adc_init _adc_init fV
.even
0168 _adc_init::
0168 .dbline -1
0168 .dbline 187
0168 ; {
0168 ; uart_sendB(*ptr);
0168 ; ptr++;
0168 ; }
0168 ; }
0168 ;
0168 ;
0168 ; /////////////////////////////////////////////////////////////////////////////////////////////////////////
0168 ;
0168 ;
0168 ; //=============================================================
0168 ; // 函数名:void adc_init(void)
0168 ; // 功能: Adc0 初始化 内部2.56v比较电压
0168 ; // 参数: none
0168 ; // 返回值: none
0168 ; // 使用方法:adc_init();
0168 ; //=============================================================
0168 ; void adc_init(void)
0168 ; {
0168 .dbline 188
0168 ; DDRA&=~BIT(PA0);
0168 D098 cbi 0x1a,0
016A .dbline 189
016A ; PORTA&=~BIT(PA0);
016A D898 cbi 0x1b,0
016C .dbline 190
016C ; ADMUX=0xc0;
016C 80EC ldi R24,192
016E 87B9 out 0x7,R24
0170 .dbline 191
0170 ; ADCSRA=0X80;
0170 80E8 ldi R24,128
0172 86B9 out 0x6,R24
0174 .dbline -2
0174 L28:
0174 .dbline 0 ; func end
0174 0895 ret
0176 .dbend
0176 .dbfunc e mega16_ad _mega16_ad fi
0176 ; addata -> R20,R21
.even
0176 _mega16_ad::
0176 0E940000 xcall push_gset1
017A .dbline -1
017A .dbline 201
017A ; }
017A ; //=============================================================
017A ; // 函数名:unsigned int mega16_ad(void)
017A ; // 功能: 读取一次ADC0的值
017A ; // 参数: none
017A ; // 返回值: addata
017A ; // 使用方法:add = mega16_ad();
017A ; //=============================================================
017A ; unsigned int mega16_ad(void)
017A ; {
017A .dbline 203
017A ; unsigned int addata;
017A ; ADCSRA|=BIT(ADSC);
017A 369A sbi 0x6,6
017C L30:
017C .dbline 204
017C L31:
017C .dbline 204
017C ; while(!(ADCSRA&(BIT(ADIF))));
017C 349B sbis 0x6,4
017E FECF rjmp L30
0180 .dbline 205
0180 ; addata=ADCL;
0180 44B1 in R20,0x4
0182 5527 clr R21
0184 .dbline 206
0184 ; addata=addata+ADCH*256;
0184 25B1 in R18,0x5
0186 3327 clr R19
0188 00E0 ldi R16,256
018A 11E0 ldi R17,1
018C 0E940000 xcall empy16s
0190 400F add R20,R16
0192 511F adc R21,R17
0194 .dbline 207
0194 ; return addata;
0194 8A01 movw R16,R20
0196 .dbline -2
0196 L29:
0196 0E940000 xcall pop_gset1
019A .dbline 0 ; func end
019A 0895 ret
019C .dbsym r addata 20 i
019C .dbend
.area data(ram, con, rel)
0000 .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
0000 _nRF2401_Conf::
0000 .blkb 2
.area idata
0000 8E08 .byte 142,8
.area data(ram, con, rel)
0002 .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
0002 .blkb 2
.area idata
0002 1C10 .byte 28,16
.area data(ram, con, rel)
0004 .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
0004 .blkb 2
.area idata
0004 E000 .byte 224,0
.area data(ram, con, rel)
0006 .dbfile C:\DOCUME~1\haolxy\桌面\smartcar\smartcar\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -