📄 edu.lst
字号:
(0147)
(0148) unsigned char receive()//
(0149) {
(0150) unsigned char i,j;
(0151) begin: if(t>18) return 0;//goto A;
013D E182 LDI R24,0x12
013E 9020013F LDS R2,_t
0140 1582 CP R24,R2
0141 F410 BCC 0x0144
0142 2700 CLR R16
0143 C036 RJMP 0x017A
(0152) i=getchar(); //get data from RF
0144 DF63 RCALL _getchar
0145 2F40 MOV R20,R16
(0153) if(i==0x0f) //get the start signal
0146 300F CPI R16,0xF
0147 F7A9 BNE 0x013D
(0154) {
(0155) data[0]=getchar();
0148 DF5F RCALL _getchar
0149 9300006D STS _data,R16
(0156) if(data[0]==0xf0)
014B 3F00 CPI R16,0xF0
014C F781 BNE 0x013D
(0157) {
(0158) data[1]=getchar();
014D DF5A RCALL _getchar
014E 9300006E STS _data+1,R16
(0159) if(data[1]==0xdd)
0150 3D0D CPI R16,0xDD
0151 F759 BNE 0x013D
(0160) {
(0161) data[2]=getchar();
0152 DF55 RCALL _getchar
0153 9300006F STS _data+2,R16
(0162) if(data[2]==0xbb)
0155 3B0B CPI R16,0xBB
0156 F731 BNE 0x013D
(0163) {
(0164) data[3]=getchar();
0157 DF50 RCALL _getchar
0158 93000070 STS _data+3,R16
(0165) if(data[3]==host_id)
015A 90200141 LDS R2,_host_id
015C 1502 CP R16,R2
015D F6F9 BNE 0x013D
(0166) {
(0167) data[4]=getchar();
015E DF49 RCALL _getchar
015F 93000071 STS 0x71,R16
(0168) if(data[4]==guest_id||data[4]==0xfe||data[4]==0xdb)
0161 90200140 LDS R2,_guest_id
0163 1502 CP R16,R2
0164 F021 BEQ 0x0169
0165 3F0E CPI R16,0xFE
0166 F011 BEQ 0x0169
0167 3D0B CPI R16,0xDB
0168 F6A1 BNE 0x013D
(0169) {
(0170) for(j=5;j<12+ques_num;j++) //
0169 E045 LDI R20,5
016A C009 RJMP 0x0174
(0171) data[j]=getchar();
016B DF3C RCALL _getchar
016C E68D LDI R24,0x6D
016D E090 LDI R25,0
016E 2FE4 MOV R30,R20
016F 27FF CLR R31
0170 0FE8 ADD R30,R24
0171 1FF9 ADC R31,R25
0172 8300 STD Z+0,R16
0173 9543 INC R20
0174 9180006C LDS R24,_ques_num
0176 5F84 SUBI R24,0xF4
0177 1748 CP R20,R24
0178 F390 BCS 0x016B
(0172) }
(0173) else goto begin;
(0174) }
(0175) else goto begin;
(0176) }
(0177) else goto begin;
(0178) }
(0179) else goto begin;
(0180) }
(0181) else goto begin;
(0182) }
(0183) else goto begin;
(0184) return 1;
0179 E001 LDI R16,1
017A 940E0BA4 CALL pop_gset1
017C 9508 RET
_main:
d1 --> Y+1
score --> R10
temp --> Y+217
keye_flag --> Y+216
keyd_flag --> Y+215
keyb_flag --> Y+214
keya_flag --> Y+213
nques_id --> Y+212
adc_l --> R12
adc_h --> R22
key_flag --> Y+211
adc_rel --> R20
keyc_flag --> Y+210
d --> Y+209
adc_old --> Y+207
n_ques --> Y+100
n_num --> R14
key --> Y+206
ques_id --> Y+205
ans --> Y+0
j --> Y+204
k --> Y+203
i --> Y+202
017D 97EF SBIW R28,0x3F
017E 97EF SBIW R28,0x3F
017F 97EF SBIW R28,0x3F
0180 976D SBIW R28,0x1D
(0185) }
(0186)
(0187) void main()
(0188) {
(0189) unsigned char i,j,k,temp,ques_id,key,key_flag,d,d1,
(0190) n_ques[100],n_num,nques_id,score,ans[100],keya_flag,
(0191) keyb_flag,keyc_flag,keyd_flag,keye_flag,adc_h,adc_l;
(0192) unsigned int adc_rel,adc_old;
(0193) guest_id=EEPROMread(0x02);
0181 E002 LDI R16,2
0182 E010 LDI R17,0
0183 940E0BC4 CALL _EEPROMread
0185 93000140 STS _guest_id,R16
(0194) host_id=EEPROMread(0x03);
0187 E003 LDI R16,3
0188 E010 LDI R17,0
0189 940E0BC4 CALL _EEPROMread
018B 93000141 STS _host_id,R16
(0195) i=0;
018D 2400 CLR R0
018E 01FE MOVW R30,R28
018F 53E6 SUBI R30,0x36
0190 4FFF SBCI R31,0xFF
0191 8200 STD Z+0,R0
(0196) j=0;
0192 01FE MOVW R30,R28
0193 53E4 SUBI R30,0x34
0194 4FFF SBCI R31,0xFF
0195 8200 STD Z+0,R0
(0197) k=0;
0196 01FE MOVW R30,R28
0197 53E5 SUBI R30,0x35
0198 4FFF SBCI R31,0xFF
0199 8200 STD Z+0,R0
(0198) t=0;
019A 2422 CLR R2
019B 9220013F STS _t,R2
(0199) temp=0;
019D 01FE MOVW R30,R28
019E 52E7 SUBI R30,0x27
019F 4FFF SBCI R31,0xFF
01A0 8200 STD Z+0,R0
(0200) ques_num=0;
01A1 9220006C STS _ques_num,R2
(0201) ques_id=1;
01A3 2400 CLR R0
01A4 9403 INC R0
01A5 01FE MOVW R30,R28
01A6 53E3 SUBI R30,0x33
01A7 4FFF SBCI R31,0xFF
01A8 8200 STD Z+0,R0
(0202) nques_id=1;
01A9 01FE MOVW R30,R28
01AA 52EC SUBI R30,0x2C
01AB 4FFF SBCI R31,0xFF
01AC 8200 STD Z+0,R0
(0203) keya_flag=0;
01AD 2400 CLR R0
01AE 01FE MOVW R30,R28
01AF 52EB SUBI R30,0x2B
01B0 4FFF SBCI R31,0xFF
01B1 8200 STD Z+0,R0
(0204) keyb_flag=0;
01B2 01FE MOVW R30,R28
01B3 52EA SUBI R30,0x2A
01B4 4FFF SBCI R31,0xFF
01B5 8200 STD Z+0,R0
(0205) keyc_flag=0;
01B6 01FE MOVW R30,R28
01B7 52EE SUBI R30,0x2E
01B8 4FFF SBCI R31,0xFF
01B9 8200 STD Z+0,R0
(0206) keyd_flag=0;
01BA 01FE MOVW R30,R28
01BB 52E9 SUBI R30,0x29
01BC 4FFF SBCI R31,0xFF
01BD 8200 STD Z+0,R0
(0207) keye_flag=0;
01BE 01FE MOVW R30,R28
01BF 52E8 SUBI R30,0x28
01C0 4FFF SBCI R31,0xFF
01C1 8200 STD Z+0,R0
(0208) key_flag=1;
01C2 2400 CLR R0
01C3 9403 INC R0
01C4 01FE MOVW R30,R28
01C5 52ED SUBI R30,0x2D
01C6 4FFF SBCI R31,0xFF
01C7 8200 STD Z+0,R0
(0209) init_devices();
01C8 DECF RCALL _init_devices
(0210) init_lcd();
01C9 940E0A9E CALL _init_lcd
(0211) display(0x00);
01CB 2700 CLR R16
01CC 940E0AA6 CALL _display
(0212) //temp=EEPROMread(0x04);
(0213) //ques_num=EEPROMread(0x05);
(0214) //score=EEPROMread(0x06);
(0215) //for(i=0;i<100;i++)
(0216) //{
(0217) // ques[i]=EEPROMread(i+7);
(0218) // }
(0219) //for(i=0;i<100;i++)
(0220) //{
(0221) // ans[i]=EEPROMread(i+107);
(0222) // }
(0223) // while(1);
(0224) if((PIND|0x9f)==0x9f)
01CE B380 IN R24,0x10
01CF 698F ORI R24,0x9F
01D0 398F CPI R24,0x9F
01D1 F009 BEQ 0x01D3
01D2 C115 RJMP 0x02E8
(0225) {
01D3 C10D RJMP 0x02E1
(0226) while(key!=5)
(0227) {
(0228) if(keyc_flag==0)
01D4 01FE MOVW R30,R28
01D5 52EE SUBI R30,0x2E
01D6 4FFF SBCI R31,0xFF
01D7 8000 LDD R0,Z+0
01D8 2000 TST R0
01D9 F4D1 BNE 0x01F4
(0229) {
(0230) i=host_id/10;
01DA E01A LDI R17,0xA
01DB 91000141 LDS R16,_host_id
01DD 940E0B82 CALL div8u
01DF 01FE MOVW R30,R28
01E0 53E6 SUBI R30,0x36
01E1 4FFF SBCI R31,0xFF
01E2 8300 STD Z+0,R16
(0231) k=host_id-(10*i);
01E3 E08A LDI R24,0xA
01E4 2E00 MOV R0,R16
01E5 9D80 MUL R24,R0
01E6 90200141 LDS R2,_host_id
01E8 1820 SUB R2,R0
01E9 01FE MOVW R30,R28
01EA 53E5 SUBI R30,0x35
01EB 4FFF SBCI R31,0xFF
01EC 8220 STD Z+0,R2
(0232) lcd_buffer[9]=0x02;
01ED E082 LDI R24,2
01EE 9380014B STS 0x14B,R24
(0233) lcd_buffer[1]=0;
01F0 2422 CLR R2
01F1 92200143 STS _lcd_buffer+1,R2
(0234) }
01F3 C019 RJMP 0x020D
(0235) else
(0236) {
(0237) i=guest_id/10;
01F4 E01A LDI R17,0xA
01F5 91000140 LDS R16,_guest_id
01F7 940E0B82 CALL div8u
01F9 01FE MOVW R30,R28
01FA 53E6 SUBI R30,0x36
01FB 4FFF SBCI R31,0xFF
01FC 8300 STD Z+0,R16
(0238) k=guest_id-10*i;
01FD E08A LDI R24,0xA
01FE 2E00 MOV R0,R16
01FF 9D80 MUL R24,R0
0200 90200140 LDS R2,_guest_id
0202 1820 SUB R2,R0
0203 01FE MOVW R30,R28
0204 53E5 SUBI R30,0x35
0205 4FFF SBCI R31,0xFF
0206 8220 STD Z+0,R2
(0239) lcd_buffer[1]=0x02;
0207 E082 LDI R24,2
0208 93800143 STS _lcd_buffer+1,R24
(0240) lcd_buffer[9]=0;
020A 2422 CLR R2
020B 9220014B STS 0x14B,R2
(0241) }
(0242) lcd_buffer[7]=table[i];
020D E680 LDI R24,0x60
020E E090 LDI R25,0
020F 01DE MOVW R26,R28
0210 53A6 SUBI R26,0x36
0211 4FBF SBCI R27,0xFF
0212 91EC LD R30,0(X)
0213 27FF CLR R31
0214 0FE8 ADD R30,R24
0215 1FF9 ADC R31,R25
0216 8020 LDD R2,Z+0
0217 92200149 STS 0x149,R2
(0243) lcd_buffer[15]=table[k]&0xef;
0219 01DE MOVW R26,R28
021A 53A5 SUBI R26,0x35
021B 4FBF SBCI R27,0xFF
021C 91EC LD R30,0(X)
021D 27FF CLR R31
021E 0FE8 ADD R30,R24
021F 1FF9 ADC R31,R25
0220 8180 LDD R24,Z+0
0221 7E8F ANDI R24,0xEF
0222 93800151 STS 0x151,R24
(0244) send_data(14,lcd_buffer[7]);
0224 2D22 MOV R18,R2
0225 E00E LDI R16,0xE
0226 940E0A59 CALL _send_data
(0245) send_data(30,lcd_buffer[15]);
0228 91200151 LDS R18,0x151
022A E10E LDI R16,0x1E
022B 940E0A59 CALL _send_data
(0246) send_data(2,lcd_buffer[1]);
022D 91200143 LDS R18,_lcd_buffer+1
022F E002 LDI R16,2
0230 940E0A59 CALL _send_data
(0247) send_data(18,lcd_buffer[9]);
0232 9120014B LDS R18,0x14B
0234 E102 LDI R16,0x12
0235 940E0A59 CALL _send_data
(0248) key=key_scan();
0237 940E0AB7 CALL _key_scan
0239 01FE MOVW R30,R28
023A 53E2 SUBI R30,0x32
023B 4FFF SBCI R31,0xFF
023C 8300 STD Z+0,R16
(0249) if(key==3)
023D 3003 CPI R16,3
023E F449 BNE 0x0248
(0250) keyc_flag=~keyc_flag;
023F 01FE MOVW R30,R28
0240 52EE SUBI R30,0x2E
0241 4FFF SBCI R31,0xFF
0242 8000 LDD R0,Z+0
0243 9400 COM R0
0244 01FE MOVW R30,R28
0245 52EE SUBI R30,0x2E
0246 4FFF SBCI R31,0xFF
0247 8200 STD Z+0,R0
(0251) if(key==7)
0248 01FE MOVW R30,R28
0249 53E2 SUBI R30,0x32
024A 4FFF SBCI R31,0xFF
024B 8180 LDD R24,Z+0
024C 3087 CPI R24,7
024D F489 BNE 0x025F
(0252) {
(0253) if(keyc_flag==0)
024E 01FE MOVW R30,R28
024F 52EE SUBI R30,0x2E
0250 4FFF SBCI R31,0xFF
0251 8000 LDD R0,Z+0
0252 2000 TST R0
0253 F431 BNE 0x025A
(0254) host_id++;
0254 91800141 LDS R24,_host_id
0256 5F8F SUBI R24,0xFF
0257 93800141 STS _host_id,R24
0259 C005 RJMP 0x025F
(0255) else
(0256) guest_id++;
025A 91800140 LDS R24,_guest_id
025C 5F8F SUBI R24,0xFF
025D 93800140 STS _guest_id,R24
(0257) }
(0258) if(key==4)
025F 01FE MOVW R30,R28
0260 53E2 SUBI R30,0x32
0261 4FFF SBCI R31,0xFF
0262 8180 LDD R24,Z+0
0263 3084 CPI R24,4
0264 F489 BNE 0x0276
(0259) {
(0260) if(keyc_flag==0)
0265 01FE MOVW R30,R28
0266 52EE SUBI R30,0x2E
0267 4FFF SBCI R31,0xFF
0268 8000 LDD R0,Z+0
0269 2000 TST R0
026A F431 BNE 0x0271
(0261) host_id--;
026B 91800141 LDS R24,_host_id
026D 5081 SUBI R24,1
026E 93800141 STS _host_id,R24
0270 C005 RJMP 0x0276
(0262) else
(0263) guest_id--;
0271 91800140 LDS R24,_guest_id
0273 5081 SUBI R24,1
0274 93800140 STS _guest_id,R24
(0264) }
(0265) if(host_id>80||host_id<1)
0276 E580 LDI R24,0x50
0277 90200141 LDS R2,_host_id
0279 1582 CP R24,R2
027A F018 BCS 0x027E
027B 2D82 MOV R24,R2
027C 3081 CPI R24,1
027D F418 BCC 0x0281
(0266) host_id=1;
027E E081 LDI R24,1
027F 93800141 STS _host_id,R24
(0267) if(guest_id>80||guest_id<1)
0281 E580 LDI R24,0x50
0282 90200140 LDS R2,_guest_id
0284 1582 CP R24,R2
0285 F018 BCS 0x0289
0286 2D82 MOV R24,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -