📄 ac15-3.lis
字号:
02C4 ; /********************************************/
02C4 ; while(1)
02C4 ; {
02C4 .dbline 232
02C4 ; DisplayOneChar(9,0,wr_val/100+0x30);
02C4 14E6 ldi R17,100
02C6 042F mov R16,R20
02C8 0E940000 xcall div8u
02CC 802F mov R24,R16
02CE 805D subi R24,208 ; addi 48
02D0 8883 std y+0,R24
02D2 2227 clr R18
02D4 09E0 ldi R16,9
02D6 D3DE xcall _DisplayOneChar
02D8 .dbline 233
02D8 ; delay_ms(10);
02D8 0AE0 ldi R16,10
02DA 10E0 ldi R17,0
02DC 99D0 xcall _delay_ms
02DE .dbline 234
02DE ; DisplayOneChar(10,0,(wr_val/10)%10+0x30);
02DE 1AE0 ldi R17,10
02E0 042F mov R16,R20
02E2 0E940000 xcall div8u
02E6 1AE0 ldi R17,10
02E8 0E940000 xcall mod8u
02EC 802F mov R24,R16
02EE 805D subi R24,208 ; addi 48
02F0 8883 std y+0,R24
02F2 2227 clr R18
02F4 0AE0 ldi R16,10
02F6 C3DE xcall _DisplayOneChar
02F8 .dbline 235
02F8 ; delay_ms(10);
02F8 0AE0 ldi R16,10
02FA 10E0 ldi R17,0
02FC 89D0 xcall _delay_ms
02FE .dbline 236
02FE ; DisplayOneChar(11,0,wr_val%10+0x30);
02FE 1AE0 ldi R17,10
0300 042F mov R16,R20
0302 0E940000 xcall mod8u
0306 802F mov R24,R16
0308 805D subi R24,208 ; addi 48
030A 8883 std y+0,R24
030C 2227 clr R18
030E 0BE0 ldi R16,11
0310 B6DE xcall _DisplayOneChar
0312 .dbline 237
0312 ; delay_ms(10);
0312 0AE0 ldi R16,10
0314 10E0 ldi R17,0
0316 7CD0 xcall _delay_ms
0318 .dbline 239
0318 ;
0318 ; DisplayOneChar(8,1,rd_val/100+0x30);
0318 14E6 ldi R17,100
031A 062F mov R16,R22
031C 0E940000 xcall div8u
0320 802F mov R24,R16
0322 805D subi R24,208 ; addi 48
0324 8883 std y+0,R24
0326 21E0 ldi R18,1
0328 08E0 ldi R16,8
032A A9DE xcall _DisplayOneChar
032C .dbline 240
032C ; delay_ms(10);
032C 0AE0 ldi R16,10
032E 10E0 ldi R17,0
0330 6FD0 xcall _delay_ms
0332 .dbline 241
0332 ; DisplayOneChar(9,1,(rd_val/10%10)+0x30);
0332 1AE0 ldi R17,10
0334 062F mov R16,R22
0336 0E940000 xcall div8u
033A 1AE0 ldi R17,10
033C 0E940000 xcall mod8u
0340 802F mov R24,R16
0342 805D subi R24,208 ; addi 48
0344 8883 std y+0,R24
0346 21E0 ldi R18,1
0348 09E0 ldi R16,9
034A 99DE xcall _DisplayOneChar
034C .dbline 242
034C ; delay_ms(10);
034C 0AE0 ldi R16,10
034E 10E0 ldi R17,0
0350 5FD0 xcall _delay_ms
0352 .dbline 243
0352 ; DisplayOneChar(10,1,rd_val%10+0x30);
0352 1AE0 ldi R17,10
0354 062F mov R16,R22
0356 0E940000 xcall mod8u
035A 802F mov R24,R16
035C 805D subi R24,208 ; addi 48
035E 8883 std y+0,R24
0360 21E0 ldi R18,1
0362 0AE0 ldi R16,10
0364 8CDE xcall _DisplayOneChar
0366 .dbline 244
0366 ; delay_ms(10);
0366 0AE0 ldi R16,10
0368 10E0 ldi R17,0
036A 52D0 xcall _delay_ms
036C .dbline 246
036C ;
036C ; key_val=scan_key();
036C F9DE xcall _scan_key
036E A02E mov R10,R16
0370 .dbline 247
0370 ; switch(key_val)
0370 CA2C mov R12,R10
0372 DD24 clr R13
0374 C601 movw R24,R12
0376 8F3B cpi R24,191
0378 E0E0 ldi R30,0
037A 9E07 cpc R25,R30
037C 11F1 breq L91
037E 8FEB ldi R24,191
0380 8C15 cp R24,R12
0382 9D05 cpc R25,R13
0384 34F0 brlt L94
0386 L93:
0386 C601 movw R24,R12
0388 8F37 cpi R24,127
038A E0E0 ldi R30,0
038C 9E07 cpc R25,R30
038E 11F1 breq L92
0390 29C0 xjmp L83
0392 L94:
0392 C601 movw R24,R12
0394 8F3D cpi R24,223
0396 E0E0 ldi R30,0
0398 9E07 cpc R25,R30
039A 71F0 breq L88
039C 8F3D cpi R24,223
039E E0E0 ldi R30,0
03A0 9E07 cpc R25,R30
03A2 04F1 brlt L83
03A4 L95:
03A4 C601 movw R24,R12
03A6 8F3E cpi R24,239
03A8 E0E0 ldi R30,0
03AA 9E07 cpc R25,R30
03AC 09F0 breq L85
03AE 1AC0 xjmp L83
03B0 X0:
03B0 .dbline 248
03B0 ; {
03B0 L85:
03B0 .dbline 249
03B0 ; case 0xef:if(wr_val<255)wr_val++;break;
03B0 4F3F cpi R20,255
03B2 C0F4 brsh L83
03B4 .dbline 249
03B4 4395 inc R20
03B6 .dbline 249
03B6 16C0 xjmp L83
03B8 L88:
03B8 .dbline 250
03B8 ; case 0xdf:if(wr_val>0)wr_val--;break;
03B8 2224 clr R2
03BA 2416 cp R2,R20
03BC 98F4 brsh L83
03BE .dbline 250
03BE 4A95 dec R20
03C0 .dbline 250
03C0 11C0 xjmp L83
03C2 L91:
03C2 .dbline 251
03C2 ; case 0xbf:i2c_Write(10,wr_val);
03C2 242F mov R18,R20
03C4 0AE0 ldi R16,10
03C6 1EDF xcall _i2c_Write
03C8 .dbline 252
03C8 ; DisplayOneChar(15,0,0xef);break;
03C8 8FEE ldi R24,239
03CA 8883 std y+0,R24
03CC 2227 clr R18
03CE 0FE0 ldi R16,15
03D0 56DE xcall _DisplayOneChar
03D2 .dbline 252
03D2 08C0 xjmp L83
03D4 L92:
03D4 .dbline 253
03D4 ; case 0x7f:rd_val=i2c_Read(10);
03D4 0AE0 ldi R16,10
03D6 C6DE xcall _i2c_Read
03D8 602F mov R22,R16
03DA .dbline 254
03DA ; DisplayOneChar(15,1,0xef);break;
03DA 8FEE ldi R24,239
03DC 8883 std y+0,R24
03DE 21E0 ldi R18,1
03E0 0FE0 ldi R16,15
03E2 4DDE xcall _DisplayOneChar
03E4 .dbline 254
03E4 .dbline 255
03E4 ; default:break;
03E4 L83:
03E4 .dbline 257
03E4 08EC ldi R16,200
03E6 10E0 ldi R17,0
03E8 13D0 xcall _delay_ms
03EA .dbline 258
03EA 80E2 ldi R24,32
03EC 8883 std y+0,R24
03EE 2227 clr R18
03F0 0FE0 ldi R16,15
03F2 45DE xcall _DisplayOneChar
03F4 .dbline 258
03F4 0AE0 ldi R16,10
03F6 10E0 ldi R17,0
03F8 0BD0 xcall _delay_ms
03FA .dbline 259
03FA 80E2 ldi R24,32
03FC 8883 std y+0,R24
03FE 21E0 ldi R18,1
0400 0FE0 ldi R16,15
0402 3DDE xcall _DisplayOneChar
0404 .dbline 259
0404 0AE0 ldi R16,10
0406 10E0 ldi R17,0
0408 03D0 xcall _delay_ms
040A .dbline 261
040A L80:
040A .dbline 230
040A 5CCF xjmp L79
040C X1:
040C .dbline -2
040C L78:
040C 2296 adiw R28,2
040E .dbline 0 ; func end
040E 0895 ret
0410 .dbsym r key_val 10 c
0410 .dbsym r rd_val 22 c
0410 .dbsym r wr_val 20 c
0410 .dbend
0410 .dbfunc e delay_ms _delay_ms fV
0410 ; time -> R20,R21
.even
0410 _delay_ms::
0410 0E940000 xcall push_gset1
0414 A801 movw R20,R16
0416 .dbline -1
0416 .dbline 267
0416 ; }
0416 ; delay_ms(200);
0416 ; DisplayOneChar(15,0,0x20);delay_ms(10);
0416 ; DisplayOneChar(15,1,0x20);delay_ms(10);
0416 ;
0416 ; }
0416 ;
0416 ; }
0416 ;
0416 ; /*********************延时time*1ms子函数*********************/
0416 ; void delay_ms(unsigned int time)
0416 ; {
0416 05C0 xjmp L98
0418 L97:
0418 .dbline 269
0418 .dbline 270
0418 08EE ldi R16,1000
041A 13E0 ldi R17,3
041C 08D0 xcall _delay_us
041E .dbline 271
041E 4150 subi R20,1
0420 5040 sbci R21,0
0422 .dbline 272
0422 L98:
0422 .dbline 268
0422 ; while(time!=0)
0422 4030 cpi R20,0
0424 4507 cpc R20,R21
0426 C1F7 brne L97
0428 X2:
0428 .dbline -2
0428 L96:
0428 0E940000 xcall pop_gset1
042C .dbline 0 ; func end
042C 0895 ret
042E .dbsym r time 20 i
042E .dbend
042E .dbfunc e delay_us _delay_us fV
042E ; time -> R16,R17
.even
042E _delay_us::
042E .dbline -1
042E .dbline 277
042E ; {
042E ; delay_us(1000);
042E ; time--;
042E ; }
042E ; }
042E ;
042E ; /********************延时子函数*********************/
042E ; void delay_us(int time)
042E ; {
042E L101:
042E .dbline 279
042E ; do
042E ; {
042E .dbline 280
042E ; time--;
042E 0150 subi R16,1
0430 1040 sbci R17,0
0432 .dbline 281
0432 ; }
0432 L102:
0432 .dbline 282
0432 ; while (time>1);
0432 81E0 ldi R24,1
0434 90E0 ldi R25,0
0436 8017 cp R24,R16
0438 9107 cpc R25,R17
043A CCF3 brlt L101
043C .dbline -2
043C L100:
043C .dbline 0 ; func end
043C 0895 ret
043E .dbsym r time 16 I
043E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -