⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 基于MEAG16的电机PID控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -