📄 ocr0.lst
字号:
(0189) data_0();
013C DF5F RCALL _data_0
(0190) data_0();
013D DF5E RCALL _data_0
(0191) data_0();
013E DF5D RCALL _data_0
(0192) end();
013F DF67 RCALL _end
(0193) break;
0140 C062 RJMP 0x01A3
(0194) case 8: //PORTB=0x08;
(0195) header();
0141 DF43 RCALL _header
(0196) data_0();
0142 DF59 RCALL _data_0
(0197) data_0();
0143 DF58 RCALL _data_0
(0198) data_0();
0144 DF57 RCALL _data_0
(0199) data_1();
0145 DF4B RCALL _data_1
(0200) data_0();
0146 DF55 RCALL _data_0
(0201) data_0();
0147 DF54 RCALL _data_0
(0202) data_0();
0148 DF53 RCALL _data_0
(0203) data_0();
0149 DF52 RCALL _data_0
(0204) end();
014A DF5C RCALL _end
(0205) break;
014B C057 RJMP 0x01A3
(0206) case 9: // PORTB=0x09;
(0207) header();
014C DF38 RCALL _header
(0208) data_1();
014D DF43 RCALL _data_1
(0209) data_0();
014E DF4D RCALL _data_0
(0210) data_0();
014F DF4C RCALL _data_0
(0211) data_1();
0150 DF40 RCALL _data_1
(0212) data_0();
0151 DF4A RCALL _data_0
(0213) data_0();
0152 DF49 RCALL _data_0
(0214) data_0();
0153 DF48 RCALL _data_0
(0215) data_0();
0154 DF47 RCALL _data_0
(0216) end();
0155 DF51 RCALL _end
(0217) break;
0156 C04C RJMP 0x01A3
(0218) case 10: //PORTB=0x0a;
(0219) header();
0157 DF2D RCALL _header
(0220) data_0();
0158 DF43 RCALL _data_0
(0221) data_1();
0159 DF37 RCALL _data_1
(0222) data_0();
015A DF41 RCALL _data_0
(0223) data_1();
015B DF35 RCALL _data_1
(0224) data_0();
015C DF3F RCALL _data_0
(0225) data_0();
015D DF3E RCALL _data_0
(0226) data_0();
015E DF3D RCALL _data_0
(0227) data_0();
015F DF3C RCALL _data_0
(0228) end();
0160 DF46 RCALL _end
(0229) break;
0161 C041 RJMP 0x01A3
(0230) case 11: //PORTB=0x0b;
(0231) header();
0162 DF22 RCALL _header
(0232) data_1();
0163 DF2D RCALL _data_1
(0233) data_1();
0164 DF2C RCALL _data_1
(0234) data_0();
0165 DF36 RCALL _data_0
(0235) data_1();
0166 DF2A RCALL _data_1
(0236) data_0();
0167 DF34 RCALL _data_0
(0237) data_0();
0168 DF33 RCALL _data_0
(0238) data_0();
0169 DF32 RCALL _data_0
(0239) data_0();
016A DF31 RCALL _data_0
(0240) end();
016B DF3B RCALL _end
(0241) break;
016C C036 RJMP 0x01A3
(0242) case 12: //PORTB=0x0c;
(0243) header();
016D DF17 RCALL _header
(0244) data_0();
016E DF2D RCALL _data_0
(0245) data_0();
016F DF2C RCALL _data_0
(0246) data_1();
0170 DF20 RCALL _data_1
(0247) data_1();
0171 DF1F RCALL _data_1
(0248) data_0();
0172 DF29 RCALL _data_0
(0249) data_0();
0173 DF28 RCALL _data_0
(0250) data_0();
0174 DF27 RCALL _data_0
(0251) data_0();
0175 DF26 RCALL _data_0
(0252) end();
0176 DF30 RCALL _end
(0253) break;
0177 C02B RJMP 0x01A3
(0254) case 13: //PORTB=0x0d;
(0255) header();
0178 DF0C RCALL _header
(0256) data_1();
0179 DF17 RCALL _data_1
(0257) data_0();
017A DF21 RCALL _data_0
(0258) data_1();
017B DF15 RCALL _data_1
(0259) data_1();
017C DF14 RCALL _data_1
(0260) data_0();
017D DF1E RCALL _data_0
(0261) data_0();
017E DF1D RCALL _data_0
(0262) data_0();
017F DF1C RCALL _data_0
(0263) data_0();
0180 DF1B RCALL _data_0
(0264) end();
0181 DF25 RCALL _end
(0265) break;
0182 C020 RJMP 0x01A3
(0266) case 14: //PORTB=0x0e;
(0267) header();
0183 DF01 RCALL _header
(0268) data_0();
0184 DF17 RCALL _data_0
(0269) data_1();
0185 DF0B RCALL _data_1
(0270) data_1();
0186 DF0A RCALL _data_1
(0271) data_1();
0187 DF09 RCALL _data_1
(0272) data_0();
0188 DF13 RCALL _data_0
(0273) data_0();
0189 DF12 RCALL _data_0
(0274) data_0();
018A DF11 RCALL _data_0
(0275) data_0();
018B DF10 RCALL _data_0
(0276) end();
018C DF1A RCALL _end
(0277) break;
018D C015 RJMP 0x01A3
(0278) case 15: //PORTB=0x0f;
(0279) header();
018E DEF6 RCALL _header
(0280) data_1();
018F DF01 RCALL _data_1
(0281) data_1();
0190 DF00 RCALL _data_1
(0282) data_1();
0191 DEFF RCALL _data_1
(0283) data_1();
0192 DEFE RCALL _data_1
(0284) data_0();
0193 DF08 RCALL _data_0
(0285) data_0();
0194 DF07 RCALL _data_0
(0286) data_0();
0195 DF06 RCALL _data_0
(0287) data_0();
0196 DF05 RCALL _data_0
(0288) end();
0197 DF0F RCALL _end
(0289) break;
0198 C00A RJMP 0x01A3
(0290) case 0: //PORTB=0x00;
(0291)
(0292) header();
0199 DEEB RCALL _header
(0293) data_0();
019A DF01 RCALL _data_0
(0294) data_0();
019B DF00 RCALL _data_0
(0295) data_0();
019C DEFF RCALL _data_0
(0296) data_0();
019D DEFE RCALL _data_0
(0297) data_0();
019E DEFD RCALL _data_0
(0298) data_0();
019F DEFC RCALL _data_0
(0299) data_0();
01A0 DEFB RCALL _data_0
(0300) data_0();
01A1 DEFA RCALL _data_0
(0301) end();
01A2 DF04 RCALL _end
01A3 CF2C RJMP 0x00D0
01A4 9508 RET
_scan_key:
i --> R22
temp --> R10
01A5 940E0244 CALL push_gset3
(0302)
(0303) break;
(0304)
(0305) default: break;
(0306) }
(0307)
(0308) }
(0309)
(0310)
(0311) }
(0312)
(0313) //--------------------4x4key-----------------------------------//
(0314) unsigned char scan_key(void) //不作按键释放检查的键盘扫描函数
(0315) {
(0316) unsigned char i,temp;
(0317) DDRC=0x0f;
01A7 E08F LDI R24,0xF
01A8 BB84 OUT 0x14,R24
(0318) PORTC=0xff;
01A9 EF8F LDI R24,0xFF
01AA BB85 OUT 0x15,R24
(0319) for(i=0;i<4;i++)
01AB 2766 CLR R22
01AC C05F RJMP 0x020C
(0320) {
(0321) PORTC=~(1<<i);
01AD E001 LDI R16,1
01AE 2F16 MOV R17,R22
01AF 940E025F CALL lsl8
01B1 2E20 MOV R2,R16
01B2 9420 COM R2
01B3 BA25 OUT 0x15,R2
(0322) delay(10);
01B4 E00A LDI R16,0xA
01B5 E010 LDI R17,0
01B6 DEBF RCALL _delay
(0323) temp=PINC&0xf0;
01B7 B383 IN R24,0x13
01B8 7F80 ANDI R24,0xF0
01B9 2EA8 MOV R10,R24
(0324) if(temp!=0xf0)
01BA 3F80 CPI R24,0xF0
01BB F409 BNE 0x01BD
01BC C04C RJMP 0x0209
(0325) {
(0326) delay(15);
01BD E00F LDI R16,0xF
01BE E010 LDI R17,0
01BF DEB6 RCALL _delay
(0327) temp=PINC&0xf0;
01C0 B383 IN R24,0x13
01C1 7F80 ANDI R24,0xF0
01C2 2EA8 MOV R10,R24
(0328) if(temp!=0xf0)
01C3 3F80 CPI R24,0xF0
01C4 F409 BNE 0x01C6
01C5 C043 RJMP 0x0209
(0329) {
(0330) temp&=0xf0;
01C6 7F80 ANDI R24,0xF0
01C7 2EA8 MOV R10,R24
(0331) switch(temp)
01C8 2F48 MOV R20,R24
01C9 2755 CLR R21
01CA 3B40 CPI R20,0xB0
01CB E0E0 LDI R30,0
01CC 075E CPC R21,R30
01CD F0F9 BEQ 0x01ED
01CE EB80 LDI R24,0xB0
01CF E090 LDI R25,0
01D0 1784 CP R24,R20
01D1 0795 CPC R25,R21
01D2 F02C BLT 0x01D8
01D3 3740 CPI R20,0x70
01D4 E0E0 LDI R30,0
01D5 075E CPC R21,R30
01D6 F071 BEQ 0x01E5
01D7 C02D RJMP 0x0205
01D8 3D40 CPI R20,0xD0
01D9 E0E0 LDI R30,0
01DA 075E CPC R21,R30
01DB F0C9 BEQ 0x01F5
01DC 3D40 CPI R20,0xD0
01DD E0E0 LDI R30,0
01DE 075E CPC R21,R30
01DF F12C BLT 0x0205
01E0 3E40 CPI R20,0xE0
01E1 E0E0 LDI R30,0
01E2 075E CPC R21,R30
01E3 F0C9 BEQ 0x01FD
01E4 C020 RJMP 0x0205
(0332) {
(0333) case 0x70: temp=15-(3-i)*4; break;
01E5 E013 LDI R17,3
01E6 1B16 SUB R17,R22
01E7 E004 LDI R16,4
01E8 0201 MULS R16,R17
01E9 E08F LDI R24,0xF
01EA 2EA8 MOV R10,R24
01EB 18A0 SUB R10,R0
01EC C01A RJMP 0x0207
(0334) case 0xb0: temp=14-(3-i)*4; break;
01ED E013 LDI R17,3
01EE 1B16 SUB R17,R22
01EF E004 LDI R16,4
01F0 0201 MULS R16,R17
01F1 E08E LDI R24,0xE
01F2 2EA8 MOV R10,R24
01F3 18A0 SUB R10,R0
01F4 C012 RJMP 0x0207
(0335) case 0xd0: temp=13-(3-i)*4; break;
01F5 E013 LDI R17,3
01F6 1B16 SUB R17,R22
01F7 E004 LDI R16,4
01F8 0201 MULS R16,R17
01F9 E08D LDI R24,0xD
01FA 2EA8 MOV R10,R24
01FB 18A0 SUB R10,R0
01FC C00A RJMP 0x0207
(0336) case 0xe0: temp=12-(3-i)*4; break;
01FD E013 LDI R17,3
01FE 1B16 SUB R17,R22
01FF E004 LDI R16,4
0200 0201 MULS R16,R17
0201 E08C LDI R24,0xC
0202 2EA8 MOV R10,R24
0203 18A0 SUB R10,R0
0204 C002 RJMP 0x0207
(0337) default:temp=0x7f;
0205 E78F LDI R24,0x7F
0206 2EA8 MOV R10,R24
(0338) }
(0339) return temp;
0207 2D0A MOV R16,R10
0208 C007 RJMP 0x0210
(0340) }
(0341) }
(0342) PORTC=0xff;
0209 EF8F LDI R24,0xFF
020A BB85 OUT 0x15,R24
020B 9563 INC R22
020C 3064 CPI R22,4
020D F408 BCC 0x020F
020E CF9E RJMP 0x01AD
(0343) }
(0344) return 0x7f;
020F E70F LDI R16,0x7F
0210 940E023D CALL pop_gset3
0212 9508 RET
_keypad:
temp1 --> R20
temp2 --> R22
0213 940E0246 CALL push_gset2
(0345) }
(0346)
(0347)
(0348) unsigned char keypad(void) //有按键释放检查的键盘扫描函数
(0349) {
(0350) unsigned char temp1,temp2;
(0351) temp1=scan_key();
0215 DF8F RCALL _scan_key
0216 2F40 MOV R20,R16
(0352) if (temp1==0x7f)
0217 370F CPI R16,0x7F
0218 F411 BNE 0x021B
(0353) return 0x7f;
0219 E70F LDI R16,0x7F
021A C005 RJMP 0x0220
(0354) do
(0355) temp2=scan_key();
021B DF89 RCALL _scan_key
021C 2F60 MOV R22,R16
(0356) while (temp1==temp2);
021D 1746 CP R20,R22
021E F3E1 BEQ 0x021B
(0357) return temp1;
021F 2F04 MOV R16,R20
0220 940E023A CALL pop_gset2
0222 9508 RET
(0358)
(0359) }
(0360)
(0361)
(0362) unsigned char EEPROM_read(unsigned int uiAddress)
(0363) {
(0364) while(EECR&(1<<EEWE));
_EEPROM_read:
uiAddress --> R16
0223 99E1 SBIC 0x1C,1
0224 CFFE RJMP _EEPROM_read
(0365) EEAR=uiAddress;
0225 BB1F OUT 0x1F,R17
0226 BB0E OUT 0x1E,R16
(0366) EECR|=(1<<EERE);
0227 9AE0 SBI 0x1C,0
(0367) return EEDR;
FILE: <library>
0228 B30D IN R16,0x1D
0229 9508 RET
empy16s:
022A 920A ST R0,-Y
022B 921A ST R1,-Y
022C 938A ST R24,-Y
022D 939A ST R25,-Y
022E 9F02 MUL R16,R18
022F 01C0 MOVW R24,R0
0230 9F12 MUL R17,R18
0231 0D90 ADD R25,R0
0232 9F03 MUL R16,R19
0233 0D90 ADD R25,R0
0234 018C MOVW R16,R24
0235 9199 LD R25,Y+
0236 9189 LD R24,Y+
0237 9019 LD R1,Y+
0238 9009 LD R0,Y+
0239 9508 RET
pop_gset2:
023A E0E2 LDI R30,2
023B 940C024C JMP pop
pop_gset3:
023D E0E4 LDI R30,4
023E 940C024C JMP pop
push_gset5:
0240 92FA ST R15,-Y
0241 92EA ST R14,-Y
push_gset4:
0242 92DA ST R13,-Y
0243 92CA ST R12,-Y
push_gset3:
0244 92BA ST R11,-Y
0245 92AA ST R10,-Y
push_gset2:
0246 937A ST R23,-Y
0247 936A ST R22,-Y
push_gset1:
0248 935A ST R21,-Y
0249 934A ST R20,-Y
024A 9508 RET
pop_gset1:
024B E0E1 LDI R30,1
pop:
024C 9149 LD R20,Y+
024D 9159 LD R21,Y+
024E FDE0 SBRC R30,0
024F 9508 RET
0250 9169 LD R22,Y+
0251 9179 LD R23,Y+
0252 FDE1 SBRC R30,1
0253 9508 RET
0254 90A9 LD R10,Y+
0255 90B9 LD R11,Y+
0256 FDE2 SBRC R30,2
0257 9508 RET
0258 90C9 LD R12,Y+
0259 90D9 LD R13,Y+
025A FDE3 SBRC R30,3
025B 9508 RET
025C 90E9 LD R14,Y+
025D 90F9 LD R15,Y+
025E 9508 RET
lsl8:
025F 2311 TST R17
0260 F019 BEQ 0x0264
0261 0F00 LSL R16
0262 951A DEC R17
0263 CFFB RJMP lsl8
0264 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -