📄 ocr0.lis
字号:
0282 ; data_0();
0282 FFDE xcall _data_0
0284 .dbline 296
0284 ; data_0();
0284 FEDE xcall _data_0
0286 .dbline 297
0286 ; data_0();
0286 FDDE xcall _data_0
0288 .dbline 298
0288 ; data_0();
0288 FCDE xcall _data_0
028A .dbline 299
028A ; data_0();
028A FBDE xcall _data_0
028C .dbline 300
028C ; data_0();
028C FADE xcall _data_0
028E .dbline 301
028E ; end();
028E 04DF xcall _end
0290 .dbline 303
0290 ;
0290 ; break;
0290 .dbline 305
0290 ;
0290 ; default: break;
0290 L33:
0290 .dbline 308
0290 L25:
0290 .dbline 90
0290 2CCF xjmp L24
0292 X1:
0292 .dbline -2
0292 L23:
0292 .dbline 0 ; func end
0292 0895 ret
0294 .dbsym l abc 1 c
0294 .dbsym r i 20 c
0294 .dbsym r keyval1 22 c
0294 .dbsym r keyval2 10 c
0294 .dbend
0294 .dbfunc e scan_key _scan_key fc
0294 ; i -> R22
0294 ; temp -> R10
.even
0294 _scan_key::
0294 0E940000 xcall push_gset3
0298 .dbline -1
0298 .dbline 315
0298 ; }
0298 ;
0298 ; }
0298 ;
0298 ;
0298 ; }
0298 ;
0298 ; //--------------------4x4key-----------------------------------//
0298 ; unsigned char scan_key(void) //不作按键释放检查的键盘扫描函数
0298 ; {
0298 .dbline 317
0298 ; unsigned char i,temp;
0298 ; DDRC=0x0f;
0298 8FE0 ldi R24,15
029A 84BB out 0x14,R24
029C .dbline 318
029C ; PORTC=0xff;
029C 8FEF ldi R24,255
029E 85BB out 0x15,R24
02A0 .dbline 319
02A0 ; for(i=0;i<4;i++)
02A0 6627 clr R22
02A2 5FC0 xjmp L56
02A4 L53:
02A4 .dbline 320
02A4 ; {
02A4 .dbline 321
02A4 ; PORTC=~(1<<i);
02A4 01E0 ldi R16,1
02A6 162F mov R17,R22
02A8 0E940000 xcall lsl8
02AC 202E mov R2,R16
02AE 2094 com R2
02B0 25BA out 0x15,R2
02B2 .dbline 322
02B2 ; delay(10);
02B2 0AE0 ldi R16,10
02B4 10E0 ldi R17,0
02B6 BFDE xcall _delay
02B8 .dbline 323
02B8 ; temp=PINC&0xf0;
02B8 83B3 in R24,0x13
02BA 807F andi R24,240
02BC A82E mov R10,R24
02BE .dbline 324
02BE ; if(temp!=0xf0)
02BE 803F cpi R24,240
02C0 09F4 brne X5
02C2 4CC0 xjmp L57
02C4 X5:
02C4 .dbline 325
02C4 ; {
02C4 .dbline 326
02C4 ; delay(15);
02C4 0FE0 ldi R16,15
02C6 10E0 ldi R17,0
02C8 B6DE xcall _delay
02CA .dbline 327
02CA ; temp=PINC&0xf0;
02CA 83B3 in R24,0x13
02CC 807F andi R24,240
02CE A82E mov R10,R24
02D0 .dbline 328
02D0 ; if(temp!=0xf0)
02D0 803F cpi R24,240
02D2 09F4 brne X6
02D4 43C0 xjmp L59
02D6 X6:
02D6 .dbline 329
02D6 ; {
02D6 .dbline 330
02D6 ; temp&=0xf0;
02D6 807F andi R24,240
02D8 A82E mov R10,R24
02DA .dbline 331
02DA ; switch(temp)
02DA 482F mov R20,R24
02DC 5527 clr R21
02DE 403B cpi R20,176
02E0 E0E0 ldi R30,0
02E2 5E07 cpc R21,R30
02E4 F9F0 breq L65
02E6 80EB ldi R24,176
02E8 90E0 ldi R25,0
02EA 8417 cp R24,R20
02EC 9507 cpc R25,R21
02EE 2CF0 brlt L69
02F0 L68:
02F0 4037 cpi R20,112
02F2 E0E0 ldi R30,0
02F4 5E07 cpc R21,R30
02F6 71F0 breq L64
02F8 2DC0 xjmp L61
02FA L69:
02FA 403D cpi R20,208
02FC E0E0 ldi R30,0
02FE 5E07 cpc R21,R30
0300 C9F0 breq L66
0302 403D cpi R20,208
0304 E0E0 ldi R30,0
0306 5E07 cpc R21,R30
0308 2CF1 brlt L61
030A L70:
030A 403E cpi R20,224
030C E0E0 ldi R30,0
030E 5E07 cpc R21,R30
0310 C9F0 breq L67
0312 20C0 xjmp L61
0314 X4:
0314 .dbline 332
0314 ; {
0314 L64:
0314 .dbline 333
0314 ; case 0x70: temp=15-(3-i)*4; break;
0314 13E0 ldi R17,3
0316 161B sub R17,R22
0318 04E0 ldi R16,4
031A 0102 muls R16,R17
031C 8FE0 ldi R24,15
031E A82E mov R10,R24
0320 A018 sub R10,R0
0322 .dbline 333
0322 1AC0 xjmp L62
0324 L65:
0324 .dbline 334
0324 ; case 0xb0: temp=14-(3-i)*4; break;
0324 13E0 ldi R17,3
0326 161B sub R17,R22
0328 04E0 ldi R16,4
032A 0102 muls R16,R17
032C 8EE0 ldi R24,14
032E A82E mov R10,R24
0330 A018 sub R10,R0
0332 .dbline 334
0332 12C0 xjmp L62
0334 L66:
0334 .dbline 335
0334 ; case 0xd0: temp=13-(3-i)*4; break;
0334 13E0 ldi R17,3
0336 161B sub R17,R22
0338 04E0 ldi R16,4
033A 0102 muls R16,R17
033C 8DE0 ldi R24,13
033E A82E mov R10,R24
0340 A018 sub R10,R0
0342 .dbline 335
0342 0AC0 xjmp L62
0344 L67:
0344 .dbline 336
0344 ; case 0xe0: temp=12-(3-i)*4; break;
0344 13E0 ldi R17,3
0346 161B sub R17,R22
0348 04E0 ldi R16,4
034A 0102 muls R16,R17
034C 8CE0 ldi R24,12
034E A82E mov R10,R24
0350 A018 sub R10,R0
0352 .dbline 336
0352 02C0 xjmp L62
0354 L61:
0354 .dbline 337
0354 ; default:temp=0x7f;
0354 8FE7 ldi R24,127
0356 A82E mov R10,R24
0358 .dbline 338
0358 ; }
0358 L62:
0358 .dbline 339
0358 ; return temp;
0358 0A2D mov R16,R10
035A 07C0 xjmp L52
035C L59:
035C .dbline 341
035C ; }
035C ; }
035C L57:
035C .dbline 342
035C 8FEF ldi R24,255
035E 85BB out 0x15,R24
0360 .dbline 343
0360 L54:
0360 .dbline 319
0360 6395 inc R22
0362 L56:
0362 .dbline 319
0362 6430 cpi R22,4
0364 08F4 brsh X7
0366 9ECF xjmp L53
0368 X7:
0368 .dbline 344
0368 ; PORTC=0xff;
0368 ; }
0368 ; return 0x7f;
0368 0FE7 ldi R16,127
036A .dbline -2
036A L52:
036A 0E940000 xcall pop_gset3
036E .dbline 0 ; func end
036E 0895 ret
0370 .dbsym r i 22 c
0370 .dbsym r temp 10 c
0370 .dbend
0370 .dbfunc e keypad _keypad fc
0370 ; temp1 -> R20
0370 ; temp2 -> R22
.even
0370 _keypad::
0370 0E940000 xcall push_gset2
0374 .dbline -1
0374 .dbline 349
0374 ; }
0374 ;
0374 ;
0374 ; unsigned char keypad(void) //有按键释放检查的键盘扫描函数
0374 ; {
0374 .dbline 351
0374 ; unsigned char temp1,temp2;
0374 ; temp1=scan_key();
0374 8FDF xcall _scan_key
0376 402F mov R20,R16
0378 .dbline 352
0378 ; if (temp1==0x7f)
0378 0F37 cpi R16,127
037A 11F4 brne L72
037C .dbline 353
037C ; return 0x7f;
037C 0FE7 ldi R16,127
037E 05C0 xjmp L71
0380 L72:
0380 L74:
0380 .dbline 355
0380 ; do
0380 ; temp2=scan_key();
0380 89DF xcall _scan_key
0382 602F mov R22,R16
0384 L75:
0384 .dbline 356
0384 ; while (temp1==temp2);
0384 4617 cp R20,R22
0386 E1F3 breq L74
0388 .dbline 357
0388 ; return temp1;
0388 042F mov R16,R20
038A .dbline -2
038A L71:
038A 0E940000 xcall pop_gset2
038E .dbline 0 ; func end
038E 0895 ret
0390 .dbsym r temp1 20 c
0390 .dbsym r temp2 22 c
0390 .dbend
0390 .dbfunc e EEPROM_read _EEPROM_read fc
0390 ; uiAddress -> R16,R17
.even
0390 _EEPROM_read::
0390 .dbline -1
0390 .dbline 363
0390 ;
0390 ; }
0390 ;
0390 ;
0390 ; unsigned char EEPROM_read(unsigned int uiAddress)
0390 ; {
0390 L78:
0390 .dbline 364
0390 L79:
0390 .dbline 364
0390 ; while(EECR&(1<<EEWE));
0390 E199 sbic 0x1c,1
0392 FECF rjmp L78
0394 .dbline 365
0394 ; EEAR=uiAddress;
0394 1FBB out 0x1f,R17
0396 0EBB out 0x1e,R16
0398 .dbline 366
0398 ; EECR|=(1<<EERE);
0398 E09A sbi 0x1c,0
039A .dbline 367
039A ; return EEDR;
039A 0DB3 in R16,0x1d
039C .dbline -2
039C L77:
039C .dbline 0 ; func end
039C 0895 ret
039E .dbsym r uiAddress 16 i
039E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -