📄 doo1.lis
字号:
00D6 .dbsym r len 10 c
00D6 .dbsym r data 20 pc
00D6 .dbend
00D6 .dbfunc e addr_f _addr_f fV
00D6 ; j -> <dead>
00D6 ; i -> <dead>
.even
00D6 _addr_f::
00D6 .dbline -1
00D6 .dbline 125
00D6 ; }
00D6 ;
00D6 ;
00D6 ; //地址计算
00D6 ; void addr_f(void)
00D6 ; {
00D6 .dbline 128
00D6 ; unsigned char i;
00D6 ; unsigned char j;
00D6 ; data[0]=EEPROM_read(0);
00D6 0027 clr R16
00D8 00D0 rcall _EEPROM_read
00DA 00930300 sts _data,R16
00DE .dbline 129
00DE ; data[1]=EEPROM_read(1); //EEPORM内地址,最大FFFF
00DE 01E0 ldi R16,1
00E0 00D0 rcall _EEPROM_read
00E2 00930400 sts _data+1,R16
00E6 .dbline 130
00E6 ; data[2]=0;
00E6 2224 clr R2
00E8 20920500 sts _data+2,R2
00EC .dbline 131
00EC ; if(GetADC()<327) data[2]|=0x80;
00EC 9FDF rcall _GetADC
00EE 0734 cpi R16,71
00F0 E1E0 ldi R30,1
00F2 1E07 cpc R17,R30
00F4 28F4 brsh L25
00F6 .dbline 131
00F6 80910500 lds R24,_data+2
00FA 8068 ori R24,128
00FC 80930500 sts _data+2,R24
0100 L25:
0100 .dbline 132
0100 ; if(powbit) data[2]|=0x40;
0100 20900600 lds R2,_powbit
0104 2220 tst R2
0106 29F0 breq L28
0108 .dbline 132
0108 80910500 lds R24,_data+2
010C 8064 ori R24,64
010E 80930500 sts _data+2,R24
0112 L28:
0112 .dbline 133
0112 ; data[2]+=CRC3(data,3);
0112 23E0 ldi R18,3
0114 00E0 ldi R16,<_data
0116 10E0 ldi R17,>_data
0118 9BDF rcall _CRC3
011A 20900500 lds R2,_data+2
011E 200E add R2,R16
0120 20920500 sts _data+2,R2
0124 .dbline -2
0124 L22:
0124 .dbline 0 ; func end
0124 0895 ret
0126 .dbsym l j 1 c
0126 .dbsym l i 1 c
0126 .dbend
0126 .dbfunc e data_1 _data_1 fV
.even
0126 _data_1::
0126 .dbline -1
0126 .dbline 137
0126 ; }
0126 ; //要发送的数据1
0126 ; void data_1(void)
0126 ; {
0126 .dbline 138
0126 ; RF_OFF;
0126 C198 cbi 0x18,1
0128 .dbline 139
0128 ; del(700);
0128 0CEB ldi R16,700
012A 12E0 ldi R17,2
012C 00D0 rcall _del
012E .dbline 140
012E ; RF_ON;
012E C19A sbi 0x18,1
0130 .dbline 141
0130 ; del(350);
0130 0EE5 ldi R16,350
0132 11E0 ldi R17,1
0134 00D0 rcall _del
0136 .dbline -2
0136 L32:
0136 .dbline 0 ; func end
0136 0895 ret
0138 .dbend
0138 .dbfunc e data_0 _data_0 fV
.even
0138 _data_0::
0138 .dbline -1
0138 .dbline 145
0138 ; }
0138 ; //要发送的数据0
0138 ; void data_0(void)
0138 ; {
0138 .dbline 146
0138 ; RF_OFF;
0138 C198 cbi 0x18,1
013A .dbline 147
013A ; del(350);
013A 0EE5 ldi R16,350
013C 11E0 ldi R17,1
013E 00D0 rcall _del
0140 .dbline 148
0140 ; RF_ON;
0140 C19A sbi 0x18,1
0142 .dbline 149
0142 ; del(700);
0142 0CEB ldi R16,700
0144 12E0 ldi R17,2
0146 00D0 rcall _del
0148 .dbline -2
0148 L33:
0148 .dbline 0 ; func end
0148 0895 ret
014A .dbend
014A .dbfunc e rf _rf fV
014A ; i -> R20
014A ; j -> R10
014A ; dataf -> R22,R23
.even
014A _rf::
014A 00D0 rcall push_gset3
014C 602F mov R22,R16
014E 712F mov R23,R17
0150 .dbline -1
0150 .dbline 153
0150 ; }
0150 ; //发送数据
0150 ; void rf (unsigned char *dataf)
0150 ; {
0150 .dbline 156
0150 ; unsigned char i;
0150 ; unsigned char j;
0150 ; RF_ON; //起始位
0150 C19A sbi 0x18,1
0152 .dbline 157
0152 ; del(350);
0152 0EE5 ldi R16,350
0154 11E0 ldi R17,1
0156 00D0 rcall _del
0158 .dbline 158
0158 ; for(i=0;i<3;i++)
0158 4427 clr R20
015A 1BC0 rjmp L38
015C L35:
015C .dbline 159
015C ; { for(j=0;j<8;j++)
015C .dbline 159
015C AA24 clr R10
015E 13C0 rjmp L42
0160 L39:
0160 .dbline 160
0160 ; {
0160 .dbline 161
0160 ; if(*dataf& (0x80>>j)) //如果该位为1
0160 2A2D mov R18,R10
0162 3327 clr R19
0164 00E8 ldi R16,128
0166 10E0 ldi R17,0
0168 00D0 rcall asr16
016A E62F mov R30,R22
016C F72F mov R31,R23
016E 2080 ldd R2,z+0
0170 3324 clr R3
0172 2022 and R2,R16
0174 3122 and R3,R17
0176 2220 tst R2
0178 11F4 brne X1
017A 3320 tst R3
017C 11F0 breq L43
017E X1:
017E .dbline 162
017E ; data_1();
017E D3DF rcall _data_1
0180 01C0 rjmp L44
0182 L43:
0182 .dbline 163
0182 ; else data_0();
0182 DADF rcall _data_0
0184 L44:
0184 .dbline 164
0184 L40:
0184 .dbline 159
0184 A394 inc R10
0186 L42:
0186 .dbline 159
0186 8A2D mov R24,R10
0188 8830 cpi R24,8
018A 50F3 brlo L39
018C .dbline 165
018C 6F5F subi R22,255 ; offset = 1
018E 7F4F sbci R23,255
0190 .dbline 166
0190 L36:
0190 .dbline 158
0190 4395 inc R20
0192 L38:
0192 .dbline 158
0192 4330 cpi R20,3
0194 18F3 brlo L35
0196 .dbline 167
0196 ; }
0196 ; dataf++;
0196 ; }
0196 ; RF_OFF;
0196 C198 cbi 0x18,1
0198 .dbline -2
0198 L34:
0198 00D0 rcall pop_gset3
019A .dbline 0 ; func end
019A 0895 ret
019C .dbsym r i 20 c
019C .dbsym r j 10 c
019C .dbsym r dataf 22 pc
019C .dbend
019C .dbfunc e main _main fV
019C ; i -> R20
.even
019C _main::
019C .dbline -1
019C .dbline 171
019C ; }
019C ; //主函数!不用解释了
019C ; void main()
019C ; {
019C .dbline 175
019C ;
019C ; unsigned char i;
019C ; //以下初始化硬件
019C ; port_init(); //端口初始化
019C 31DF rcall _port_init
019E .dbline 176
019E ; adc_init(); //ADC初始化
019E 35DF rcall _adc_init
01A0 .dbline 177
01A0 ; watchdog_init();//初始化看门狗
01A0 3FDF rcall _watchdog_init
01A2 .dbline 178
01A2 ; POWER_ON;
01A2 C29A sbi 0x18,2
01A4 .dbline 179
01A4 ; if(!(PINB&0X10)) powbit=1;
01A4 B499 sbic 0x16,4
01A6 03C0 rjmp L46
01A8 .dbline 179
01A8 81E0 ldi R24,1
01AA 80930600 sts _powbit,R24
01AE L46:
01AE .dbline 180
01AE ; delay(1);
01AE 01E0 ldi R16,1
01B0 10E0 ldi R17,0
01B2 00D0 rcall _delay
01B4 22C0 rjmp L49
01B6 L48:
01B6 .dbline 183
01B6 ;
01B6 ; while(1)
01B6 ; {
01B6 .dbline 184
01B6 ; WDR();
01B6 A895 wdr
01B8 .dbline 185
01B8 ; LED_ON;
01B8 C09A sbi 0x18,0
01BA .dbline 186
01BA ; delay(100);
01BA 04E6 ldi R16,100
01BC 10E0 ldi R17,0
01BE 00D0 rcall _delay
01C0 .dbline 187
01C0 ; addr_f();
01C0 8ADF rcall _addr_f
01C2 .dbline 188
01C2 ; for(i=0;i<50;i++)
01C2 4427 clr R20
01C4 13C0 rjmp L54
01C6 L51:
01C6 .dbline 189
01C6 .dbline 190
01C6 20900300 lds R2,_data
01CA 20920000 sts _dataf,R2
01CE .dbline 191
01CE 20900400 lds R2,_data+1
01D2 20920100 sts _dataf+1,R2
01D6 .dbline 192
01D6 20900500 lds R2,_data+2
01DA 20920200 sts _dataf+2,R2
01DE .dbline 193
01DE 00E0 ldi R16,<_dataf
01E0 10E0 ldi R17,>_dataf
01E2 B3DF rcall _rf
01E4 .dbline 194
01E4 03E0 ldi R16,3
01E6 10E0 ldi R17,0
01E8 00D0 rcall _delay
01EA .dbline 195
01EA L52:
01EA .dbline 188
01EA 4395 inc R20
01EC L54:
01EC .dbline 188
01EC 4233 cpi R20,50
01EE 58F3 brlo L51
01F0 .dbline 196
01F0 C298 cbi 0x18,2
01F2 .dbline 197
01F2 04E6 ldi R16,100
01F4 10E0 ldi R17,0
01F6 00D0 rcall _delay
01F8 .dbline 198
01F8 C098 cbi 0x18,0
01FA .dbline 199
01FA L49:
01FA .dbline 182
01FA DDCF rjmp L48
01FC X2:
01FC .dbline -2
01FC L45:
01FC .dbline 0 ; func end
01FC 0895 ret
01FE .dbsym r i 20 c
01FE .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\abol\file\EMD\programme\EM-PB-2129\DOO1.c
0000 _dataf::
0000 .blkb 3
0003 .dbsym e dataf _dataf A[3:3]c
0003 _data::
0003 .blkb 3
0006 .dbsym e data _data A[3:3]c
0006 _DECODER_CODE0::
0006 .blkb 1
0007 .dbsym e DECODER_CODE0 _DECODER_CODE0 c
0007 _DECODER_CODE1::
0007 .blkb 1
0008 .dbsym e DECODER_CODE1 _DECODER_CODE1 c
0008 _flagl::
0008 .blkb 1
0009 .dbsym e flagl _flagl c
0009 _j::
0009 .blkb 1
000A .dbsym e j _j c
000A _i::
000A .blkb 1
000B .dbsym e i _i c
000B _aa::
000B .blkb 2
000D .dbsym e aa _aa i
000D _ai::
000D .blkb 2
000F .dbsym e ai _ai i
000F _crc::
000F .blkb 1
0010 .dbsym e crc _crc c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -