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

📄 sudu.lis

📁 用AVR单片机实现脉冲采集源代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01A2           L10:
 01A2 00D0              rcall pop_gset2
 01A4                   .dbline 0 ; func end
 01A4 0895              ret
 01A6                   .dbend
 01A6                   .dbfunc e e2rom_write _e2rom_write fV
 01A6           ;         e2data -> R18
 01A6           ;         e2addr -> R16,R17
                        .even
 01A6           _e2rom_write::
 01A6                   .dbline -1
 01A6                   .dbline 100
 01A6           ; 
 01A6           ; void e2rom_write(uint e2addr,uchar e2data)  //EEROM写数据
 01A6           ; {
 01A6           L12:
 01A6                   .dbline 101
 01A6           L13:
 01A6                   .dbline 101
 01A6           ;        while(EECR & (1<<EEWE));
 01A6 E199              sbic 0x1c,1
 01A8 FECF              rjmp L12
 01AA                   .dbline 102
 01AA           ;        EEAR = e2addr;
 01AA 1FBB              out 0x1f,R17
 01AC 0EBB              out 0x1e,R16
 01AE                   .dbline 103
 01AE           ;        EEDR = e2data;
 01AE 2DBB              out 0x1d,R18
 01B0                   .dbline 105
 01B0           ;        
 01B0           ;        EECR |= (1<<EEMWE);
 01B0 E29A              sbi 0x1c,2
 01B2                   .dbline 106
 01B2           ;        EECR |= (1<<EEWE);
 01B2 E19A              sbi 0x1c,1
 01B4                   .dbline -2
 01B4                   .dbline 107
 01B4           ; }
 01B4           L11:
 01B4                   .dbline 0 ; func end
 01B4 0895              ret
 01B6                   .dbsym r e2data 18 c
 01B6                   .dbsym r e2addr 16 i
 01B6                   .dbend
 01B6                   .dbfunc e e2rom_read _e2rom_read fc
 01B6           ;         e2addr -> R16,R17
                        .even
 01B6           _e2rom_read::
 01B6                   .dbline -1
 01B6                   .dbline 110
 01B6           ; 
 01B6           ; uchar e2rom_read(uint e2addr)   //EEROM读数据
 01B6           ; {
 01B6           L16:
 01B6                   .dbline 111
 01B6           L17:
 01B6                   .dbline 111
 01B6           ;     while(EECR & (1<<EEWE));
 01B6 E199              sbic 0x1c,1
 01B8 FECF              rjmp L16
 01BA                   .dbline 112
 01BA           ;       EEAR = e2addr;
 01BA 1FBB              out 0x1f,R17
 01BC 0EBB              out 0x1e,R16
 01BE                   .dbline 113
 01BE           ;       EECR |= (1<<EERE);
 01BE E09A              sbi 0x1c,0
 01C0                   .dbline 114
 01C0           ;       return EEDR;
 01C0 0DB3              in R16,0x1d
 01C2                   .dbline -2
 01C2           L15:
 01C2                   .dbline 0 ; func end
 01C2 0895              ret
 01C4                   .dbsym r e2addr 16 i
 01C4                   .dbend
 01C4                   .dbfunc e num_read _num_read fV
                        .even
 01C4           _num_read::
 01C4                   .dbline -1
 01C4                   .dbline 118
 01C4           ; }
 01C4           ; 
 01C4           ; void num_read(void)     //从EEROM读出num
 01C4           ; {
 01C4                   .dbline 119
 01C4           ;     numLL = e2rom_read(E2ADDRLL);
 01C4 0027              clr R16
 01C6 1127              clr R17
 01C8 F6DF              rcall _e2rom_read
 01CA 00930F00          sts _numLL,R16
 01CE                   .dbline 120
 01CE           ;       numLH = e2rom_read(E2ADDRLH);
 01CE 01E0              ldi R16,1
 01D0 10E0              ldi R17,0
 01D2 F1DF              rcall _e2rom_read
 01D4 00930E00          sts _numLH,R16
 01D8                   .dbline 121
 01D8           ;       numHL = e2rom_read(E2ADDRHL);
 01D8 02E0              ldi R16,2
 01DA 10E0              ldi R17,0
 01DC ECDF              rcall _e2rom_read
 01DE 00930D00          sts _numHL,R16
 01E2                   .dbline 122
 01E2           ;       numHH = e2rom_read(E2ADDRHH);
 01E2 03E0              ldi R16,3
 01E4 10E0              ldi R17,0
 01E6 E7DF              rcall _e2rom_read
 01E8 00930C00          sts _numHH,R16
 01EC                   .dbline 123
 01EC           ;       combination();
 01EC                   .dbline -2
 01EC                   .dbline 125
 01EC           ;       
 01EC           ; }
 01EC           L19:
 01EC                   .dbline 0 ; func end
 01EC 55CF              rjmp _combination
 01EE                   .dbend
 01EE                   .dbfunc e num_write _num_write fV
                        .even
 01EE           _num_write::
 01EE                   .dbline -1
 01EE                   .dbline 128
 01EE           ; 
 01EE           ; void num_write(void)    //将num写入EEROM
 01EE           ; {
 01EE                   .dbline 129
 01EE           ;     decompose();
 01EE 17DF              rcall _decompose
 01F0                   .dbline 130
 01F0           ;       e2rom_write(E2ADDRLL,numLL);
 01F0 20910F00          lds R18,_numLL
 01F4 0027              clr R16
 01F6 1127              clr R17
 01F8 D6DF              rcall _e2rom_write
 01FA                   .dbline 131
 01FA           ;       e2rom_write(E2ADDRLH,numLH);
 01FA 20910E00          lds R18,_numLH
 01FE 01E0              ldi R16,1
 0200 10E0              ldi R17,0
 0202 D1DF              rcall _e2rom_write
 0204                   .dbline 132
 0204           ;       e2rom_write(E2ADDRHL,numHL);
 0204 20910D00          lds R18,_numHL
 0208 02E0              ldi R16,2
 020A 10E0              ldi R17,0
 020C CCDF              rcall _e2rom_write
 020E                   .dbline 133
 020E           ;       e2rom_write(E2ADDRHH,numHH);
 020E 20910C00          lds R18,_numHH
 0212 03E0              ldi R16,3
 0214 10E0              ldi R17,0
 0216                   .dbline -2
 0216                   .dbline 134
 0216           ; }
 0216           L20:
 0216                   .dbline 0 ; func end
 0216 C7CF              rjmp _e2rom_write
 0218                   .dbend
 0218                   .dbfunc e DataTransmit _DataTransmit fV
                        .even
 0218           _DataTransmit::
 0218                   .dbline -1
 0218                   .dbline 137
 0218           ;       
 0218           ; void DataTransmit(void)   //串行485数据发送
 0218           ; {
 0218                   .dbline 139
 0218           ;     //ndata[2] = nLL;
 0218           ;        ndata[3] = n;
 0218 20901600          lds R2,_n
 021C 30901700          lds R3,_n+1
 0220 20920300          sts _ndata+3,R2
 0224                   .dbline 140
 0224           ;       ndata[4] = numLL;
 0224 20900F00          lds R2,_numLL
 0228 20920400          sts _ndata+4,R2
 022C                   .dbline 141
 022C           ;       ndata[5] = numLH;
 022C 20900E00          lds R2,_numLH
 0230 20920500          sts _ndata+5,R2
 0234                   .dbline 142
 0234           ;       ndata[6] = numHL;
 0234 20900D00          lds R2,_numHL
 0238 20920600          sts _ndata+6,R2
 023C                   .dbline 143
 023C           ;       ndata[7] = numHH;
 023C 20900C00          lds R2,_numHH
 0240 20920700          sts _ndata+7,R2
 0244                   .dbline 144
 0244           ;       UCSRB|=(1<<TXCIE);
 0244 569A              sbi 0xa,6
 0246                   .dbline 145
 0246           ;       UDR = ndata[0];
 0246 20900000          lds R2,_ndata
 024A 2CB8              out 0xc,R2
 024C                   .dbline -2
 024C                   .dbline 147
 024C           ;     
 024C           ;       }
 024C           L21:
 024C                   .dbline 0 ; func end
 024C 0895              ret
 024E                   .dbend
                        .area vector(rom, abs)
                        .org 26
 001A 27C1              rjmp _uart0_tx_isr
                        .area text(rom, con, rel)
 024E                   .dbfile sudu.c
 024E                   .dbfunc e uart0_tx_isr _uart0_tx_isr fV
                        .even
 024E           _uart0_tx_isr::
 024E 2A92              st -y,R2
 0250 8A93              st -y,R24
 0252 9A93              st -y,R25
 0254 EA93              st -y,R30
 0256 FA93              st -y,R31
 0258 2FB6              in R2,0x3f
 025A 2A92              st -y,R2
 025C                   .dbline -1
 025C                   .dbline 152
 025C           ; 
 025C           ; 
 025C           ; #pragma interrupt_handler uart0_tx_isr:iv_USART_TXC
 025C           ; void uart0_tx_isr(void)
 025C           ; {
 025C                   .dbline 154
 025C           ;           
 025C           ; if(K<7)
 025C 80910B00          lds R24,_K
 0260 8730              cpi R24,7
 0262 68F4              brsh L28
 0264                   .dbline 155
 0264           ;      {K=K+1;
 0264                   .dbline 155
 0264 8F5F              subi R24,255    ; addi 1
 0266 80930B00          sts _K,R24
 026A                   .dbline 156
 026A           ;        UDR=ndata[K];
 026A 80E0              ldi R24,<_ndata
 026C 90E0              ldi R25,>_ndata
 026E E0910B00          lds R30,_K
 0272 FF27              clr R31
 0274 E80F              add R30,R24
 0276 F91F              adc R31,R25
 0278 2080              ldd R2,z+0
 027A 2CB8              out 0xc,R2
 027C                   .dbline 157
 027C           ;        }  
 027C 04C0              rjmp L29
 027E           L28:
 027E                   .dbline 160
 027E                   .dbline 161
 027E 2224              clr R2
 0280 20920B00          sts _K,R2
 0284                   .dbline 162
 0284 5698              cbi 0xa,6
 0286                   .dbline 163
 0286           L29:
 0286                   .dbline -2
 0286                   .dbline 166
 0286           ;        
 0286           ;      else
 0286           ;     {
 0286           ;       K=0;   
 0286           ;       UCSRB&=~(1<<TXCIE);  //1?UART ?¤?é?¨a?D??
 0286           ;       } 
 0286           ;      
 0286           ;      
 0286           ; }
 0286           L27:
 0286 2990              ld R2,y+
 0288 2FBE              out 0x3f,R2
 028A F991              ld R31,y+
 028C E991              ld R30,y+
 028E 9991              ld R25,y+
 0290 8991              ld R24,y+
 0292 2990              ld R2,y+
 0294                   .dbline 0 ; func end
 0294 1895              reti
 0296                   .dbend
 0296                   .dbfunc e USART_Init _USART_Init fV
                        .even
 0296           _USART_Init::
 0296                   .dbline -1
 0296                   .dbline 169
 0296           ; 
 0296           ; void USART_Init(void)    //串行初始化
 0296           ; {
 0296                   .dbline 170
 0296           ;     UCSRB|=(1<<TXEN);//允许发送
 0296 539A              sbi 0xa,3
 0298                   .dbline 171
 0298           ;   UBRRL=(fosc/16/(baud+1))%256; //波特率的设置
 0298 84E3              ldi R24,52
 029A 89B9              out 0x9,R24
 029C                   .dbline 172
 029C           ;   UBRRH=(fosc/16/(baud+1))/256;
 029C 2224              clr R2
 029E 20BC              out 0x20,R2
 02A0                   .dbline 173
 02A0           ;   UCSRC=0x86;//8 位数据+1 位STOP 位
 02A0 86E8              ldi R24,134
 02A2 80BD              out 0x20,R24
 02A4                   .dbline -2
 02A4                   .dbline 175
 02A4           ;        
 02A4           ; }
 02A4           L30:
 02A4                   .dbline 0 ; func end
 02A4 0895              ret
 02A6                   .dbend
                        .area vector(rom, abs)
                        .org 18
 0012 53C1              rjmp _tim0Ovf
                        .area text(rom, con, rel)
 02A6                   .dbfile sudu.c
 02A6                   .dbfunc e tim0Ovf _tim0Ovf fV
                        .even
 02A6           _tim0Ovf::
 02A6 2A92              st -y,R2
 02A8 8A93              st -y,R24
 02AA 9A93              st -y,R25
 02AC 2FB6              in R2,0x3f
 02AE 2A92              st -y,R2
 02B0                   .dbline -1
 02B0                   .dbline 182

⌨️ 快捷键说明

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