📄 ds1302_18b20_1602.lst
字号:
38E 2FE4 MOV R30,R20
38F 27FF CLR R31
390 0FE8 ADD R30,R24
391 1FF9 ADC R31,R25
392 9124 LPM R18,0(Z)
393 2700 CLR R16
394 DD2B RCALL _LCD_write_byte
395 940C 0445 JMP pop_xgsetF0FC
_Write:
j --> R22
i --> R10
temp --> R20
Dat --> Y,+6
Address --> R18
RAM_CLOCK --> R16
397 940E 0465 CALL push_xgsetF00C
(0153) }
(0154) /******************************************/
(0155) void Write(uint8_t RAM_CLOCK, uint8_t Address, uint8_t Dat)
(0156) {
(0157) uint8_t i,j,temp=0x80;
399 E840 LDI R20,0x80
(0158) temp &=~ 0x01;
39A 7F4E ANDI R20,0xFE
(0159) if(RAM_CLOCK == 1)
39B 3001 CPI R16,1
39C F411 BNE 0x039F
(0160) {
(0161) temp |= (1<<6);
39D 6440 ORI R20,0x40
(0162) }
39E C001 RJMP 0x03A0
(0163) else
(0164) {
(0165) temp &=~(1<<6);
39F 7B4F ANDI R20,0xBF
(0166) }
(0167) Address <<= 1;
3A0 0F22 LSL R18
(0168) temp |= Address;
3A1 2B42 OR R20,R18
(0169) SET_RST();
3A2 9A95 SBI 0x12,5
(0170) NOP();
3A3 0000 NOP
(0171) for(j=0; j<2; j++)
3A4 2766 CLR R22
3A5 C015 RJMP 0x03BB
(0172) {
(0173) for(i=0; i<8; i++)
3A6 24AA CLR R10
3A7 C00E RJMP 0x03B6
(0174) {
(0175) if((temp & 0x01) == 0)
3A8 FD40 SBRC R20,0
3A9 C002 RJMP 0x03AC
(0176) {
(0177) CLR_IO();
3AA 9894 CBI 0x12,4
(0178) }
3AB C001 RJMP 0x03AD
(0179) else
(0180) {
(0181) SET_IO();
3AC 9A94 SBI 0x12,4
(0182) }
(0183) NOP();
3AD 0000 NOP
(0184) SET_SCLK();
3AE 9A93 SBI 0x12,3
(0185) NOP();
3AF 0000 NOP
(0186) NOP();
3B0 0000 NOP
(0187) CLR_SCLK();
3B1 9893 CBI 0x12,3
(0188) NOP();
3B2 0000 NOP
(0189) CLR_IO();
3B3 9894 CBI 0x12,4
(0190) temp >>= 1;
3B4 9546 LSR R20
3B5 94A3 INC R10
3B6 2D8A MOV R24,R10
3B7 3088 CPI R24,0x8
3B8 F378 BCS 0x03A8
(0191) }
(0192) temp = Dat;
3B9 814E LDD R20,Y+6
3BA 9563 INC R22
3BB 3062 CPI R22,2
3BC F348 BCS 0x03A6
(0193) }
(0194) CLR_IO();
3BD 9894 CBI 0x12,4
(0195) NOP();
3BE 0000 NOP
(0196) CLR_RST();
3BF 9895 CBI 0x12,5
3C0 940C 046C JMP pop_xgsetF00C
_Read_DS1302:
temp --> R20
i --> R22
Address --> R18
RAM_CLOCK --> R16
3C2 934A ST R20,-Y
3C3 936A ST R22,-Y
(0197) }
(0198) /******************************************/
(0199) unsigned char Read_DS1302(uint8_t RAM_CLOCK, uint8_t Address)
(0200) {
(0201) uint8_t i,temp=0x80;
3C4 E840 LDI R20,0x80
(0202) temp |= 0x01;
3C5 6041 ORI R20,1
(0203) if(RAM_CLOCK == 1)
3C6 3001 CPI R16,1
3C7 F411 BNE 0x03CA
(0204) {
(0205) temp |= (1<<6);
3C8 6440 ORI R20,0x40
(0206) }
3C9 C001 RJMP 0x03CB
(0207) else
(0208) {
(0209) temp &=~(1<<6);
3CA 7B4F ANDI R20,0xBF
(0210) }
(0211) Address <<= 1;
3CB 0F22 LSL R18
(0212) temp |= Address;
3CC 2B42 OR R20,R18
(0213) SET_RST();
3CD 9A95 SBI 0x12,5
(0214) NOP();
3CE 0000 NOP
(0215) for(i=0; i<7; i++)
3CF 2766 CLR R22
3D0 C00E RJMP 0x03DF
(0216) {
(0217) if((temp & 0x01) == 0)
3D1 FD40 SBRC R20,0
3D2 C002 RJMP 0x03D5
(0218) {
(0219) CLR_IO();
3D3 9894 CBI 0x12,4
(0220) }
3D4 C001 RJMP 0x03D6
(0221) else
(0222) {
(0223) SET_IO();
3D5 9A94 SBI 0x12,4
(0224) }
(0225) NOP();
3D6 0000 NOP
(0226) SET_SCLK();
3D7 9A93 SBI 0x12,3
(0227) NOP();
3D8 0000 NOP
(0228) NOP();
3D9 0000 NOP
(0229) CLR_SCLK();
3DA 9893 CBI 0x12,3
(0230) NOP();
3DB 0000 NOP
(0231) CLR_IO();
3DC 9894 CBI 0x12,4
(0232) temp >>= 1;
3DD 9546 LSR R20
3DE 9563 INC R22
3DF 3067 CPI R22,7
3E0 F380 BCS 0x03D1
(0233) }
(0234) SET_IO();
3E1 9A94 SBI 0x12,4
(0235) NOP();
3E2 0000 NOP
(0236) SET_SCLK();
3E3 9A93 SBI 0x12,3
(0237) SET_IO_INPUT();
3E4 988C CBI 0x11,4
(0238) NOP();
3E5 0000 NOP
(0239) for(i=0; i<8; i++)
3E6 2766 CLR R22
3E7 C010 RJMP 0x03F8
(0240) {
(0241) CLR_SCLK();
3E8 9893 CBI 0x12,3
(0242) NOP();
3E9 0000 NOP
(0243) if((IO_PIN & IO) == 0)
3EA 9984 SBIC 0x10,4
3EB C002 RJMP 0x03EE
(0244) {
(0245) temp &= ~0x80;
3EC 774F ANDI R20,0x7F
(0246) }
3ED C001 RJMP 0x03EF
(0247) else
(0248) {
(0249) temp |= 0x80;
3EE 6840 ORI R20,0x80
(0250) }
(0251) //temp >>=1;
(0252) if(i<7)
3EF 3067 CPI R22,7
3F0 F418 BCC 0x03F4
(0253) {
(0254) SET_SCLK();
3F1 9A93 SBI 0x12,3
(0255) temp >>=1;
3F2 9546 LSR R20
(0256) }
3F3 C001 RJMP 0x03F5
(0257) else
(0258) {
(0259) CLR_SCLK();
3F4 9893 CBI 0x12,3
(0260) }
(0261) NOP();
3F5 0000 NOP
(0262) NOP();
3F6 0000 NOP
3F7 9563 INC R22
3F8 3068 CPI R22,0x8
3F9 F370 BCS 0x03E8
(0263) }
(0264) CLR_IO();
3FA 9894 CBI 0x12,4
(0265) NOP();
3FB 0000 NOP
(0266) CLR_RST();
3FC 9895 CBI 0x12,5
(0267) return (temp);
3FD 2F04 MOV R16,R20
3FE 9169 LD R22,Y+
3FF 9149 LD R20,Y+
400 9508 RET
_DS18B20:
i --> R10
Tl --> R12
Th --> R10
401 92AA ST R10,-Y
402 92CA ST R12,-Y
(0268) }
(0269) /******************************************/
(0270) void DS18B20(void)
(0271) {
(0272) uint8_t Th, Tl, i;
(0273) i=Init_18b20();
403 DE35 RCALL _Init_18b20
(0274) Write_1_byte(0xcc);
404 EC0C LDI R16,0xCC
405 DE73 RCALL _Write_1_byte
(0275) Write_1_byte(0x44);
406 E404 LDI R16,0x44
407 DE71 RCALL _Write_1_byte
(0276) Delay_nms(100);
408 E604 LDI R16,0x64
409 E010 LDI R17,0
40A DD29 RCALL _Delay_nms
(0277) i=Init_18b20();
40B DE2D RCALL _Init_18b20
(0278) Write_1_byte(0xcc);
40C EC0C LDI R16,0xCC
40D DE6B RCALL _Write_1_byte
(0279) Write_1_byte(0xbe);
40E EB0E LDI R16,0xBE
40F DE69 RCALL _Write_1_byte
(0280) Tl=Read_1_byte();
410 DE3F RCALL _Read_1_byte
411 2EA0 MOV R10,R16
412 2CCA MOV R12,R10
(0281) Th=Read_1_byte();
413 DE3C RCALL _Read_1_byte
414 2EA0 MOV R10,R16
(0282) Temperature(Th,Tl);
415 2D2C MOV R18,R12
416 DDEE RCALL _Temperature
(0283) //Temperature(12,45);
(0284) Delay_nms(100);
FILE: <library>
417 E604 LDI R16,0x64
418 E010 LDI R17,0
419 DD1A RCALL _Delay_nms
41A 90C9 LD R12,Y+
41B 90A9 LD R10,Y+
41C 9508 RET
mod8u:
41D 9468 BSET 6
41E C001 RJMP xdiv8u
div8u:
41F 94E8 BCLR 6
xdiv8u:
420 932A ST R18,-Y
421 92FA ST R15,-Y
422 92EA ST R14,-Y
423 24FF CLR R15
424 24EE CLR R14
425 E120 LDI R18,0x10
426 0F00 LSL R16
427 1CFF ROL R15
428 1CEE ROL R14
429 16E1 CP R14,R17
42A F010 BCS 0x042D
42B 1AE1 SUB R14,R17
42C 9503 INC R16
42D 952A DEC R18
42E F7B9 BNE 0x0426
42F F40E BRTC 0x0431
430 2D0E MOV R16,R14
431 90E9 LD R14,Y+
432 90F9 LD R15,Y+
433 9129 LD R18,Y+
434 9508 RET
pop_xgset00FC:
435 90A9 LD R10,Y+
436 90B9 LD R11,Y+
437 90C9 LD R12,Y+
438 90D9 LD R13,Y+
439 90E9 LD R14,Y+
43A 90F9 LD R15,Y+
43B 9508 RET
pop_xgset30FC:
43C 90A9 LD R10,Y+
43D 90B9 LD R11,Y+
43E 90C9 LD R12,Y+
43F 90D9 LD R13,Y+
440 90E9 LD R14,Y+
441 90F9 LD R15,Y+
442 9149 LD R20,Y+
443 9159 LD R21,Y+
444 9508 RET
pop_xgsetF0FC:
445 90A9 LD R10,Y+
446 90B9 LD R11,Y+
447 90C9 LD R12,Y+
448 90D9 LD R13,Y+
449 90E9 LD R14,Y+
44A 90F9 LD R15,Y+
44B 9149 LD R20,Y+
44C 9159 LD R21,Y+
44D 9169 LD R22,Y+
44E 9179 LD R23,Y+
44F 9508 RET
push_xgsetF0FC:
450 937A ST R23,-Y
451 936A ST R22,-Y
push_xgset30FC:
452 935A ST R21,-Y
453 934A ST R20,-Y
push_xgset00FC:
454 92FA ST R15,-Y
455 92EA ST R14,-Y
push_xgset003C:
456 92DA ST R13,-Y
457 92CA ST R12,-Y
458 92BA ST R11,-Y
459 92AA ST R10,-Y
45A 9508 RET
push_xgsetF000:
45B 937A ST R23,-Y
45C 936A ST R22,-Y
45D 935A ST R21,-Y
45E 934A ST R20,-Y
45F 9508 RET
pop_xgsetF000:
460 9149 LD R20,Y+
461 9159 LD R21,Y+
462 9169 LD R22,Y+
463 9179 LD R23,Y+
464 9508 RET
push_xgsetF00C:
465 937A ST R23,-Y
466 936A ST R22,-Y
467 935A ST R21,-Y
468 934A ST R20,-Y
469 92BA ST R11,-Y
46A 92AA ST R10,-Y
46B 9508 RET
pop_xgsetF00C:
46C 90A9 LD R10,Y+
46D 90B9 LD R11,Y+
46E 9149 LD R20,Y+
46F 9159 LD R21,Y+
470 9169 LD R22,Y+
471 9179 LD R23,Y+
472 9508 RET
push_xgset303C:
473 935A ST R21,-Y
474 934A ST R20,-Y
475 92DA ST R13,-Y
476 92CA ST R12,-Y
477 92BA ST R11,-Y
478 92AA ST R10,-Y
479 9508 RET
pop_xgset303C:
47A 90A9 LD R10,Y+
47B 90B9 LD R11,Y+
47C 90C9 LD R12,Y+
47D 90D9 LD R13,Y+
47E 9149 LD R20,Y+
47F 9159 LD R21,Y+
480 9508 RET
push_xgsetF03C:
481 937A ST R23,-Y
482 936A ST R22,-Y
483 935A ST R21,-Y
484 934A ST R20,-Y
485 92DA ST R13,-Y
486 92CA ST R12,-Y
487 92BA ST R11,-Y
488 92AA ST R10,-Y
489 9508 RET
pop_xgsetF03C:
48A 90A9 LD R10,Y+
48B 90B9 LD R11,Y+
48C 90C9 LD R12,Y+
48D 90D9 LD R13,Y+
48E 9149 LD R20,Y+
48F 9159 LD R21,Y+
490 9169 LD R22,Y+
491 9179 LD R23,Y+
492 9508 RET
lsl8:
493 2311 TST R17
494 F019 BEQ 0x0498
495 0F00 LSL R16
496 951A DEC R17
497 CFFB RJMP lsl8
498 9508 RET
lsr8:
499 2311 TST R17
49A F019 BEQ 0x049E
49B 9506 LSR R16
49C 951A DEC R17
49D CFFB RJMP lsr8
49E 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -