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

📄 ma16.lis

📁 本代码是AVR单片机的完整IIC通信程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00F8 09C0              xjmp L25
 00FA           L24:
 00FA                   .dbline 111
 00FA           ;               else
 00FA           ;                       {
 00FA                   .dbline 112
 00FA           ;                       GPS_receive_buffer[71]=GPS_data_end;
 00FA 20900300          lds R2,_GPS_data_end
 00FE 20929500          sts _GPS_receive_buffer+71,R2
 0102                   .dbline 113
 0102           ;                       GPS_validframe_flag=TRUE;
 0102 80919700          lds R24,_bit_flag
 0106 8260              ori R24,2
 0108 80939700          sts _bit_flag,R24
 010C                   .dbline 114
 010C           ;                       }
 010C           L25:
 010C                   .dbline 115
 010C           ;               GPS_status_frame=0x00;
 010C 2224              clr R2
 010E 20929600          sts _GPS_status_frame,R2
 0112                   .dbline 116
 0112           ;               receive_data_flag=TRUE;
 0112 80919700          lds R24,_bit_flag
 0116 8460              ori R24,4
 0118 80939700          sts _bit_flag,R24
 011C                   .dbline 117
 011C           ;               }
 011C           L22:
 011C           L19:
 011C           L15:
 011C                   .dbline -2
 011C           L11:
 011C 2990              ld R2,y+
 011E 2FBE              out 0x3f,R2
 0120 F991              ld R31,y+
 0122 E991              ld R30,y+
 0124 9991              ld R25,y+
 0126 8991              ld R24,y+
 0128 2990              ld R2,y+
 012A                   .dbline 0 ; func end
 012A 1895              reti
 012C                   .dbend
 012C                   .dbfunc e uart0_tx_isr _uart0_tx_isr fV
                        .even
 012C           _uart0_tx_isr::
 012C 2A92              st -y,R2
 012E 3A92              st -y,R3
 0130 8A93              st -y,R24
 0132 9A93              st -y,R25
 0134 EA93              st -y,R30
 0136 FA93              st -y,R31
 0138 2FB6              in R2,0x3f
 013A 2A92              st -y,R2
 013C                   .dbline -1
 013C                   .dbline 120
 013C           ; }
 013C           ; void uart0_tx_isr(void) 
 013C           ;     { 
 013C                   .dbline 121
 013C           ;        UCSRA|=(1<<TXC);//清发送中断标志 
 013C 5E9A              sbi 0xb,6
 013E                   .dbline 122
 013E           ;        if(com_datasen_len>0)/////////////数据缓冲区数据没有发送完毕
 013E 2224              clr R2
 0140 30900000          lds R3,_com_datasen_len
 0144 2314              cp R2,R3
 0146 88F4              brsh L28
 0148                   .dbline 123
 0148           ;               {
 0148                   .dbline 124
 0148           ;               UDR=*com_send_ptr;
 0148 E0910100          lds R30,_com_send_ptr
 014C F0910200          lds R31,_com_send_ptr+1
 0150 2080              ldd R2,z+0
 0152 2CB8              out 0xc,R2
 0154                   .dbline 125
 0154           ;               com_send_ptr++;
 0154 CF01              movw R24,R30
 0156 0196              adiw R24,1
 0158 90930200          sts _com_send_ptr+1,R25
 015C 80930100          sts _com_send_ptr,R24
 0160                   .dbline 126
 0160           ;               com_datasen_len--;
 0160 832D              mov R24,R3
 0162 8150              subi R24,1
 0164 80930000          sts _com_datasen_len,R24
 0168                   .dbline 127
 0168           ;               }
 0168 05C0              xjmp L29
 016A           L28:
 016A                   .dbline 129
 016A                   .dbline 130
 016A 80919700          lds R24,_bit_flag
 016E 8E7F              andi R24,254
 0170 80939700          sts _bit_flag,R24
 0174                   .dbline 131
 0174           L29:
 0174                   .dbline -2
 0174           L27:
 0174 2990              ld R2,y+
 0176 2FBE              out 0x3f,R2
 0178 F991              ld R31,y+
 017A E991              ld R30,y+
 017C 9991              ld R25,y+
 017E 8991              ld R24,y+
 0180 3990              ld R3,y+
 0182 2990              ld R2,y+
 0184                   .dbline 0 ; func end
 0184 1895              reti
 0186                   .dbend
 0186                   .dbfunc e init_devices _init_devices fV
                        .even
 0186           _init_devices::
 0186                   .dbline -1
 0186                   .dbline 134
 0186           ;       else
 0186           ;               {
 0186           ;               send_busy_flag=FALSE;
 0186           ;               }
 0186           ;    }
 0186           ; void init_devices(void)
 0186           ; {
 0186                   .dbline 135
 0186           ;  CLI(); //disable all interrupts
 0186 F894              cli
 0188                   .dbline 136
 0188           ;  port_init();
 0188 56DF              xcall _port_init
 018A                   .dbline 137
 018A           ;  uart0_init();
 018A 61DF              xcall _uart0_init
 018C                   .dbline 138
 018C           ;  OSCCAL=0xb9;
 018C 89EB              ldi R24,185
 018E 81BF              out 0x31,R24
 0190                   .dbline 139
 0190           ; send_busy_flag=FALSE;
 0190 80919700          lds R24,_bit_flag
 0194 8E7F              andi R24,254
 0196 80939700          sts _bit_flag,R24
 019A                   .dbline 140
 019A           ;  MCUCR = 0x00;
 019A 2224              clr R2
 019C 25BE              out 0x35,R2
 019E                   .dbline 141
 019E           ;  GICR  = 0x00;
 019E 2BBE              out 0x3b,R2
 01A0                   .dbline 142
 01A0           ;  TIMSK = 0x00; //timer interrupt sources
 01A0 29BE              out 0x39,R2
 01A2                   .dbline 143
 01A2           ;  SEI(); //re-enable interrupts
 01A2 7894              sei
 01A4                   .dbline -2
 01A4           L30:
 01A4                   .dbline 0 ; func end
 01A4 0895              ret
 01A6                   .dbend
 01A6                   .dbfunc e system_init _system_init fV
                        .even
 01A6           _system_init::
 01A6                   .dbline -1
 01A6                   .dbline 147
 01A6           ;  //all peripherals are now initialized
 01A6           ; }
 01A6           ; void system_init()
 01A6           ; {
 01A6                   .dbline 148
 01A6           ;  GPS_data_conut=1;
 01A6 81E0              ldi R24,1
 01A8 80930500          sts _GPS_data_conut,R24
 01AC                   .dbline 149
 01AC           ; GPS_status_frame=0x00;
 01AC 2224              clr R2
 01AE 20929600          sts _GPS_status_frame,R2
 01B2                   .dbline 150
 01B2           ; GPS_validframe_flag=FALSE;
 01B2 80919700          lds R24,_bit_flag
 01B6 8D7F              andi R24,253
 01B8 80939700          sts _bit_flag,R24
 01BC                   .dbline 151
 01BC           ; receive_data_flag=FALSE;
 01BC 8B7F              andi R24,251
 01BE 80939700          sts _bit_flag,R24
 01C2                   .dbline -2
 01C2           L31:
 01C2                   .dbline 0 ; func end
 01C2 0895              ret
 01C4                   .dbend
 01C4                   .dbfunc e send_com_data _send_com_data fV
                        .even
 01C4           _send_com_data::
 01C4                   .dbline -1
 01C4                   .dbline 154
 01C4                   .dbline 155
 01C4 80919700          lds R24,_bit_flag
 01C8 8170              andi R24,1
 01CA D9F4              brne L33
 01CC                   .dbline 156
 01CC                   .dbline 157
 01CC 88E4              ldi R24,72
 01CE 80930000          sts _com_datasen_len,R24
 01D2                   .dbline 158
 01D2 8150              subi R24,1
 01D4 80930000          sts _com_datasen_len,R24
 01D8                   .dbline 159
 01D8 80E0              ldi R24,<_GPS_receive_buffer
 01DA 90E0              ldi R25,>_GPS_receive_buffer
 01DC 90930200          sts _com_send_ptr+1,R25
 01E0 80930100          sts _com_send_ptr,R24
 01E4                   .dbline 160
 01E4 80919700          lds R24,_bit_flag
 01E8 8160              ori R24,1
 01EA 80939700          sts _bit_flag,R24
 01EE                   .dbline 161
 01EE E0910100          lds R30,_com_send_ptr
 01F2 F0910200          lds R31,_com_send_ptr+1
 01F6 2190              ld R2,Z+
 01F8 F0930200          sts _com_send_ptr+1,R31
 01FC E0930100          sts _com_send_ptr,R30
 0200 2CB8              out 0xc,R2
 0202                   .dbline 162
 0202           L33:
 0202                   .dbline -2
 0202           L32:
 0202                   .dbline 0 ; func end
 0202 0895              ret
 0204                   .dbend
 0204                   .dbfunc e main _main fV
 0204           ;              i -> <dead>
                        .even
 0204           _main::
 0204                   .dbline -1
 0204                   .dbline 165
 0204           ; }
 0204           ; void send_com_data()
 0204           ; {
 0204           ;       if(!send_busy_flag)
 0204           ;               {
 0204           ;               com_datasen_len=72;
 0204           ;               com_datasen_len--;
 0204           ;               com_send_ptr=GPS_receive_buffer;
 0204           ;               send_busy_flag=TRUE;
 0204           ;               UDR=*com_send_ptr++;
 0204           ;               }
 0204           ; }
 0204           ; void main(void)
 0204           ; {
 0204                   .dbline 167
 0204           ;   Uchar i;
 0204           ;   init_devices();
 0204 C0DF              xcall _init_devices
 0206                   .dbline 168
 0206           ;   system_init();
 0206 CFDF              xcall _system_init
 0208 12C0              xjmp L37
 020A           L36:
 020A                   .dbline 170
 020A           ;   while(1)
 020A           ;   {
 020A                   .dbline 171
 020A           ;       if(receive_data_flag)
 020A 80919700          lds R24,_bit_flag
 020E 8695              lsr R24
 0210 8695              lsr R24
 0212 8170              andi R24,1
 0214 61F0              breq L39
 0216                   .dbline 172
 0216           ;               {
 0216                   .dbline 173
 0216           ;               send_com_data();
 0216 D6DF              xcall _send_com_data
 0218                   .dbline 174
 0218           ;               receive_data_flag=FALSE;
 0218 80919700          lds R24,_bit_flag
 021C 8B7F              andi R24,251
 021E 80939700          sts _bit_flag,R24
 0222                   .dbline 175
 0222           ;               GPS_validframe_flag=FALSE;
 0222 8D7F              andi R24,253
 0224 80939700          sts _bit_flag,R24
 0228                   .dbline 176
 0228           ;               GPS_data_conut=1;
 0228 81E0              ldi R24,1
 022A 80930500          sts _GPS_data_conut,R24
 022E                   .dbline 177
 022E           ;               }
 022E           L39:
 022E                   .dbline 178
 022E           L37:
 022E                   .dbline 169
 022E EDCF              xjmp L36
 0230           X1:
 0230                   .dbline -2
 0230           L35:
 0230                   .dbline 0 ; func end
 0230 0895              ret
 0232                   .dbsym l i 1 c
 0232                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\avr_prm\ATmege16\ma16.c
 0000           _com_datasen_len::
 0000                   .blkb 1
 0001                   .dbsym e com_datasen_len _com_datasen_len c
 0001           _com_send_ptr::
 0001                   .blkb 2
 0003                   .dbsym e com_send_ptr _com_send_ptr pc
 0003           _GPS_data_end::
 0003                   .blkb 1
 0004                   .dbsym e GPS_data_end _GPS_data_end c
 0004           _GPS_data_start::
 0004                   .blkb 1
 0005                   .dbsym e GPS_data_start _GPS_data_start c
 0005           _GPS_data_conut::
 0005                   .blkb 1
 0006                   .dbsym e GPS_data_conut _GPS_data_conut c
 0006           _GPS_send_buffer::
 0006                   .blkb 72
 004E                   .dbsym e GPS_send_buffer _GPS_send_buffer A[72:72]c
 004E           _GPS_receive_buffer::
 004E                   .blkb 72
 0096                   .dbsym e GPS_receive_buffer _GPS_receive_buffer A[72:72]c
 0096           _GPS_status_frame::
 0096                   .blkb 1
 0097                   .dbsym e GPS_status_frame _GPS_status_frame c
 0097           _bit_flag::
 0097                   .blkb 1
 0098                   .dbsym e bit_flag _bit_flag X

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -