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

📄 210.lis

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0084           ;       ADC = 0;
 0084 2224              clr R2
 0086 3324              clr R3
 0088 35B8              out 0x5,R3
 008A 24B8              out 0x4,R2
 008C                   .dbline 103
 008C           ;       ADCSRA  |=  (1 << ADSC);        //启动AD转换
 008C 369A              sbi 0x6,6
 008E                   .dbline 105
 008E           ; 
 008E           ;       del(10);
 008E 0AE0              ldi R16,10
 0090 10E0              ldi R17,0
 0092 D4DF              rcall _del
 0094           L25:
 0094                   .dbline 106
 0094           L26:
 0094                   .dbline 106
 0094           ;       while(!(ADCSRA&(BIT(ADIF))));////ADIF=4, 表示若ADCSR的第5位置为1,则中断AD转换
 0094 349B              sbis 0x6,4
 0096 FECF              rjmp L25
 0098                   .dbline 109
 0098           ;       //loop_until_bit_is_set(ADCSRA, ADIF);//等待AD转换结束
 0098           ; 
 0098           ;       ADCSRA |= (1 << ADIF);          //写1清除标志位
 0098 349A              sbi 0x6,4
 009A                   .dbline 111
 009A           ; 
 009A           ;       adc_value = ADC;                //读转换结果
 009A 44B1              in R20,0x4
 009C 55B1              in R21,0x5
 009E                   .dbline 112
 009E           ;       DDRB&=~(1<<PB3);
 009E BB98              cbi 0x17,3
 00A0                   .dbline 113
 00A0           ;       PORTB|=(1<<PB3);
 00A0 C39A              sbi 0x18,3
 00A2                   .dbline 115
 00A2           ;       
 00A2           ;       return adc_value;
 00A2 042F              mov R16,R20
 00A4 152F              mov R17,R21
 00A6                   .dbline -2
 00A6           L24:
 00A6 00D0              rcall pop_gset1
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbsym r adc_value 20 i
 00AA                   .dbend
 00AA                   .dbfunc e CRC3 _CRC3 fc
 00AA           ;              i -> <dead>
 00AA           ;              j -> R22
 00AA           ;            len -> R10
 00AA           ;           data -> R20,R21
                        .even
 00AA           _CRC3::
 00AA 00D0              rcall push_gset3
 00AC A22E              mov R10,R18
 00AE 402F              mov R20,R16
 00B0 512F              mov R21,R17
 00B2                   .dbline -1
 00B2                   .dbline 127
 00B2           ; }
 00B2           ; /****************************************** 
 00B2           ; CRC3校验函数  
 00B2           ; 输  入:        ptr需要进行校验的数据包  
 00B2           ;         len需要校验的数据包字节数  
 00B2           ; 输  出:        校验码; 
 00B2           ; 调  用:        无; 
 00B2           ; 被调用:        从机协议打包函数; 
 00B2           ; 功  能:        将一给定的数据包进行CRC3校验给调用者返回校验码  
 00B2           ; ******************************************/ 
 00B2           ; unsigned char CRC3(unsigned char *data, unsigned char len) 
 00B2           ; { 
 00B2                   .dbline 130
 00B2           ;     unsigned char i; 
 00B2           ;     unsigned char j; 
 00B2           ;     j = 0;
 00B2 6627              clr R22
 00B4                   .dbline 131
 00B4           ;       crc=0; 
 00B4 2224              clr R2
 00B6 20920C00          sts _crc,R2
 00BA 34C0              rjmp L30
 00BC           L29:
 00BC                   .dbline 134
 00BC           ; 
 00BC           ;     while(len) 
 00BC           ;     { 
 00BC                   .dbline 136
 00BC           ;         /*多项式除法*/ 
 00BC           ;         if(*data & (0x80>>j))  //如果该位为1 
 00BC 262F              mov R18,R22
 00BE 3327              clr R19
 00C0 00E8              ldi R16,128
 00C2 10E0              ldi R17,0
 00C4 00D0              rcall asr16
 00C6 E42F              mov R30,R20
 00C8 F52F              mov R31,R21
 00CA 2080              ldd R2,z+0
 00CC 3324              clr R3
 00CE 2022              and R2,R16
 00D0 3122              and R3,R17
 00D2 2220              tst R2
 00D4 11F4              brne X0
 00D6 3320              tst R3
 00D8 29F0              breq L32
 00DA           X0:
 00DA                   .dbline 137
 00DA           ;             crc |= 0x01;  //则在余数尾部添1否则添0 
 00DA 80910C00          lds R24,_crc
 00DE 8160              ori R24,1
 00E0 80930C00          sts _crc,R24
 00E4           L32:
 00E4                   .dbline 138
 00E4           ;         if(crc >= 0x8) 
 00E4 80910C00          lds R24,_crc
 00E8 8830              cpi R24,8
 00EA 30F0              brlo L34
 00EC                   .dbline 139
 00EC           ;             crc ^= 11; 
 00EC 8BE0              ldi R24,11
 00EE 20900C00          lds R2,_crc
 00F2 2826              eor R2,R24
 00F4 20920C00          sts _crc,R2
 00F8           L34:
 00F8                   .dbline 140
 00F8           ;         crc <<= 1; 
 00F8 20900C00          lds R2,_crc
 00FC 220C              lsl R2
 00FE 20920C00          sts _crc,R2
 0102                   .dbline 141
 0102           ;         j++;
 0102 6395              inc R22
 0104                   .dbline 142
 0104           ;               if(len==1)
 0104 8A2D              mov R24,R10
 0106 8130              cpi R24,1
 0108 39F4              brne L36
 010A                   .dbline 143
 010A           ;               {
 010A                   .dbline 144
 010A           ;                 if(j == 7) 
 010A 6730              cpi R22,7
 010C 59F4              brne L37
 010E                   .dbline 145
 010E           ;          { 
 010E                   .dbline 146
 010E           ;             j = 0; 
 010E 6627              clr R22
 0110                   .dbline 147
 0110           ;             data++; 
 0110 4F5F              subi R20,255  ; offset = 1
 0112 5F4F              sbci R21,255
 0114                   .dbline 148
 0114           ;             len--; 
 0114 AA94              dec R10
 0116                   .dbline 149
 0116           ;          }
 0116                   .dbline 150
 0116           ;               }
 0116 06C0              rjmp L37
 0118           L36:
 0118                   .dbline 152
 0118           ;               else
 0118           ;               { 
 0118                   .dbline 153
 0118           ;          if(j == 8) 
 0118 6830              cpi R22,8
 011A 21F4              brne L40
 011C                   .dbline 154
 011C           ;          { 
 011C                   .dbline 155
 011C           ;             j = 0; 
 011C 6627              clr R22
 011E                   .dbline 156
 011E           ;             data++; 
 011E 4F5F              subi R20,255  ; offset = 1
 0120 5F4F              sbci R21,255
 0122                   .dbline 157
 0122           ;             len--; 
 0122 AA94              dec R10
 0124                   .dbline 158
 0124           ;          }
 0124           L40:
 0124                   .dbline 159
 0124           ;               }
 0124           L37:
 0124                   .dbline 160
 0124           L30:
 0124                   .dbline 133
 0124 AA20              tst R10
 0126 51F6              brne L29
 0128                   .dbline 161
 0128           ;       }
 0128           ;     return(crc);       
 0128 00910C00          lds R16,_crc
 012C                   .dbline -2
 012C           L28:
 012C 00D0              rcall pop_gset3
 012E                   .dbline 0 ; func end
 012E 0895              ret
 0130                   .dbsym l i 1 c
 0130                   .dbsym r j 22 c
 0130                   .dbsym r len 10 c
 0130                   .dbsym r data 20 pc
 0130                   .dbend
 0130                   .dbfunc e addr_f _addr_f fV
 0130           ;              j -> <dead>
 0130           ;              i -> <dead>
                        .even
 0130           _addr_f::
 0130                   .dbline -1
 0130                   .dbline 168
 0130           ; }
 0130           ; 
 0130           ; 
 0130           ; 
 0130           ; //地址计算
 0130           ; void addr_f(void)
 0130           ; {
 0130                   .dbline 171
 0130           ;     unsigned char i; 
 0130           ;     unsigned char j;           //data[0]data[1]地址
 0130           ; data[0]=EEPROM_read(0);
 0130 0027              clr R16
 0132 7EDF              rcall _EEPROM_read
 0134 00930300          sts _data,R16
 0138                   .dbline 172
 0138           ; data[1]=EEPROM_read(1);                  //EEPORM内地址,最大FFFF                     
 0138 01E0              ldi R16,1
 013A 7ADF              rcall _EEPROM_read
 013C 00930400          sts _data+1,R16
 0140                   .dbline 173
 0140           ; data[2]=0;
 0140 2224              clr R2
 0142 20920500          sts _data+2,R2
 0146                   .dbline 174
 0146           ; if(GetADC()<579) data[2]|=0x80;        //2.5/(3.3/13.3)/(1.1/1024)=579
 0146 9BDF              rcall _GetADC
 0148 0334              cpi R16,67
 014A E2E0              ldi R30,2
 014C 1E07              cpc R17,R30
 014E 28F4              brsh L45
 0150                   .dbline 174
 0150 80910500          lds R24,_data+2
 0154 8068              ori R24,128
 0156 80930500          sts _data+2,R24
 015A           L45:
 015A                   .dbline 175
 015A           ; if(PINBS) data[2]|=0x40;      
 015A 20900800          lds R2,_PINBS
 015E 2220              tst R2
 0160 29F0              breq L48
 0162                   .dbline 175
 0162 80910500          lds R24,_data+2
 0166 8064              ori R24,64
 0168 80930500          sts _data+2,R24
 016C           L48:
 016C                   .dbline 176
 016C           ; data[2]+=CRC3(data,3);
 016C 23E0              ldi R18,3
 016E 00E0              ldi R16,<_data
 0170 10E0              ldi R17,>_data
 0172 9BDF              rcall _CRC3
 0174 20900500          lds R2,_data+2
 0178 200E              add R2,R16
 017A 20920500          sts _data+2,R2
 017E                   .dbline -2
 017E           L42:
 017E                   .dbline 0 ; func end
 017E 0895              ret
 0180                   .dbsym l j 1 c
 0180                   .dbsym l i 1 c
 0180                   .dbend
 0180                   .dbfunc e data_1 _data_1 fV
                        .even
 0180           _data_1::
 0180                   .dbline -1
 0180                   .dbline 180
 0180           ; }
 0180           ; //要发送的数据1
 0180           ; void data_1(void)
 0180           ; {
 0180                   .dbline 181
 0180           ;  RF_OFF;
 0180 C298              cbi 0x18,2
 0182                   .dbline 182
 0182           ;  del(700);
 0182 0CEB              ldi R16,700
 0184 12E0              ldi R17,2
 0186 5ADF              rcall _del
 0188                   .dbline 183
 0188           ;  RF_ON;
 0188 C29A              sbi 0x18,2
 018A                   .dbline 184
 018A           ;  del(350);
 018A 0EE5              ldi R16,350
 018C 11E0              ldi R17,1
 018E 56DF              rcall _del
 0190                   .dbline -2
 0190           L52:
 0190                   .dbline 0 ; func end
 0190 0895              ret
 0192                   .dbend
 0192                   .dbfunc e data_0 _data_0 fV
                        .even
 0192           _data_0::
 0192                   .dbline -1
 0192                   .dbline 188
 0192           ; }
 0192           ; //要发送的数据0
 0192           ; void data_0(void)
 0192           ; {
 0192                   .dbline 189
 0192           ;  RF_OFF;
 0192 C298              cbi 0x18,2
 0194                   .dbline 190
 0194           ;  del(350);
 0194 0EE5              ldi R16,350
 0196 11E0              ldi R17,1
 0198 51DF              rcall _del
 019A                   .dbline 191
 019A           ;  RF_ON;
 019A C29A              sbi 0x18,2
 019C                   .dbline 192
 019C           ;  del(700);
 019C 0CEB              ldi R16,700
 019E 12E0              ldi R17,2
 01A0 4DDF              rcall _del
 01A2                   .dbline -2
 01A2           L53:
 01A2                   .dbline 0 ; func end
 01A2 0895              ret
 01A4                   .dbend
 01A4                   .dbfunc e rf _rf fV

⌨️ 快捷键说明

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