久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2161|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

由OLED 萬年歷 (顯示正負溫度版)改動而來

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:997051 發(fā)表于 2022-1-4 09:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 無名氏1957 于 2022-1-4 10:06 編輯

由OLED 萬年歷 (顯示正負溫度版)改動而來
STC89C52(12T)驅(qū)動時, 秒位反應(yīng)遲鈍, 且顯示周期長短不一.

故去掉了農(nóng)歷部分. 以適應(yīng)STC89C52(12T)
屏幕也清靜不少.
運行滿意,
Output Output.rar (93.99 KB, 下載次數(shù): 17)
==============================================================
OLED 萬年歷 (注意)
OLED12864+DS3231的萬年歷制作,帶農(nóng)歷,大字體(單片機源碼+實物) - 單片機DIY制作

OLED 萬年歷 (顯示正負溫度版).rar (224.28 KB, 下載次數(shù): 1249)

0000 0213DD LJMP 13DDH  ;長轉(zhuǎn)移
  ■65     void  Delay5US()    //@12.000MHz   延時5us
  ■66     {
  ■67:    _nop_(); _nop_();  _nop_();_nop_(); //1T單片機用4個nop,12T用1個nop
0003 00   NOP
0004 00   NOP
0005 00   NOP
0006 00   NOP
  ■68:  }
0007 22   RET
=====================================
0008 00   NOP
0009 00   NOP
000A 00   NOP
000B 0216DA LJMP 16DAH  :長轉(zhuǎn)移
  /********************* 8*16的點陣**共陰、列行式、逆向輸出 *********************/
  const unsigned char code F8X16[]=         
  {
000E  00 E0 10 08 08 10 E0 00 00 0F 10 20 20 10 0F 00  ,//0 0
001E  00 10 10 F8 00 00 00 00 00 20 20 3F 20 20 00 00  ,//1 1
002E  00 70 08 08 08 88 70 00 00 30 28 24 22 21 30 00  ,//2 2
003E  00 30 08 88 88 48 30 00 00 18 20 20 20 11 0E 00  ,//3 3
004E  00 00 C0 20 10 F8 00 00 00 07 04 24 24 3F 24 00  ,//4 4
005E  00 F8 08 88 88 08 08 00 00 19 21 20 20 11 0E 00  ,//5 5
006E  00 E0 10 88 88 18 00 00 00 0F 11 20 20 11 0E 00  ,//6 6
007E  00 38 08 08 C8 38 08 00 00 00 00 3F 00 00 00 00  ,//7 7
008E  00 70 88 08 08 88 70 00 00 1C 22 21 21 22 1C 00  ,//8 8
009E  00 E0 10 08 08 10 E0 00 00 00 31 22 22 11 0F 00  ,//9 9
00AE  00 00 00 C0 C0 00 00 00 00 00 00 30 30 00 00 00  ,//: 10
00BE  00 00 00 00 00 00 00 00 00 01 01 01 01 01 01 01  ,//- 11
00CE  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ,//黑屏,12
00DE  00 00 FC 52 02 FC 00 00 1C 3E 7F 7D 7C 7F 3E 1C  ,//"溫度圖標(biāo)",13
00EE  00 00 00 00 00 00 00 00 00 30 30 00 00 00 00 00  ;/*".",14*/
/***************圖片數(shù)字 16*32****************/
00FE  00 00 F0 F8 FC 3C 1C 1C 1C 1C 3C FC F8 F0 00 00
010E  00 00 FF FF FF 00 00 00 00 00 00 FF FF FF 00 00
011E  00 00 FF FF FF 00 00 00 00 00 00 FF FF FF 00 00
012E  00 00 0F 1F 3F 3C 38 38 38 38 3C 3F 1F 0F 00 00   ;/*"0",0*/
013E  00 00 00 00 C0 E0 F0 F8 FC FC 00 00 00 00 00 00
014E  00 00 00 00 00 00 00 FF FF FF 00 00 00 00 00 00
015E  00 00 00 00 00 00 00 FF FF FF 00 00 00 00 00 00
016E  00 00 00 00 00 00 00 3F 3F 3F 00 00 00 00 00 00   ,/*"1",1*/
017E  00 00 F0 F8 FC 3C 1C 1C 1C 1C 3C FC F8 F0 00 00
018E  00 00 07 07 07 00 00 00 80 C0 E0 FF 7F 3F 00 00
019E  00 00 E0 F0 F8 3C 1E 0F 07 03 01 00 00 00 00 00
01AE  00 00 3F 3F 3F 38 38 38 38 38 38 3C 3C 3C 00 00   ,/*"2",2*/
01BE  00 00 F0 F8 FC 3C 1C 1C 1C 1C 3C FC F8 F0 00 00
01CE  00 00 07 07 C7 C0 C0 C0 C0 C0 E0 FF 7F 3F 00 00
01DE  00 00 E0 E0 E1 01 01 01 01 01 03 FF FF FE 00 00
01EE  00 00 0F 1F 3F 3C 38 38 38 38 3C 3F 1F 0F 00 00   ,/*"3",3*/
01FE  00 00 00 00 00 00 80 E0 F0 78 FC FC FC 00 00 00
020E  00 00 80 E0 F8 7E 1F 07 01 00 FF FF FF 00 00 00
021E  00 00 3F 3F 3F 38 38 38 38 38 FF FF FF 38 38 00
022E  00 00 00 00 00 00 00 00 00 00 3F 3F 3F 00 00 00   ,/*"4",4*/
023E  00 00 FC FC FC 1C 1C 1C 1C 1C 1C 1C 1C 1C 00 00
024E  00 00 FF FF FF F0 78 38 38 38 78 F8 F0 E0 00 00
025E  00 00 F0 F0 F0 00 00 00 00 00 00 FF FF FF 00 00
026E  00 00 0F 1F 3F 3C 38 38 38 38 3C 3F 1F 0F 00 00   ,/*"5",5*/
027E  00 00 F0 F8 FC 3C 1C 1C 1C 1C 3C FC F8 F0 00 00
028E  00 00 FF FF FF C0 E0 E0 E0 E0 E0 E1 C1 81 00 00
029E  00 00 FF FF FF 01 00 00 00 00 01 FF FF FF 00 00
02AE  00 00 0F 1F 3F 3C 38 38 38 38 3C 3F 1F 0F 00 00   ,/*"6",6*/
02BE  00 00 3C 3C 3C 1C 1C 1C 1C 9C FC FC 7C 1C 00 00
02CE  00 00 00 00 00 80 E0 F8 7E 1F 07 01 00 00 00 00
02DE  00 00 00 00 00 FF FF FF 00 00 00 00 00 00 00 00
02EE  00 00 00 00 00 3F 3F 3F 00 00 00 00 00 00 00 00   ,/*"7",7*/
02FE  00 00 F0 F8 FC 3C 1C 1C 1C 1C 3C FC F8 F0 00 00
030E  00 00 3F 7F FF E0 C0 C0 C0 C0 E0 FF 7F 3F 00 00
031E  00 00 FE FF FF 03 01 01 01 01 03 FF FF FE 00 00
032E  00 00 0F 1F 3F 3C 38 38 38 38 3C 3F 1F 0F 00 00   ,/*"8",8*/
033E  00 00 F0 F8 FC 3C 1C 1C 1C 1C 3C FC F8 F0 00 00
034E  00 00 FF FF FF C0 80 80 80 80 C0 FF FF FF 00 00
035E  00 00 C0 C1 C3 03 03 03 03 03 01 FF FF FF 00 00
036E  00 00 0F 1F 3F 3C 38 38 38 38 3C 3F 1F 0F 00 00   ,/*"9",9*/
037E  00 00 00 00 00 00 80 80 80 80 00 00 00 00 00 00
038E  00 00 00 00 00 0F 1F 1F 1F 1F 0F 00 00 00 00 00
039E  00 00 00 00 00 F0 F8 F8 F8 F8 F0 00 00 00 00 00
03AE  00 00 00 00 00 00 01 01 01 01 00 00 00 00 00 00   ,/*":",10*/
03BE  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
03CE  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
03DE  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
03EE  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ,/*" ",11*/
  const unsigned char code hz[]=
  {
03FE  00 00 00 FE 82 82 82 82 82 82 82 FE 00 00 00 00
040E  00 00 00 FF 40 40 40 40 40 40 40 FF 00 00 00 00   ,/*"日",0*/
041E  80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00
042E  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ,/*"一",1*/
043E  00 00 08 08 08 08 08 08 08 08 08 08 08 00 00 00
044E  10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 00   ,/*"二",2*/
045E  00 04 84 84 84 84 84 84 84 84 84 84 84 04 00 00
046E  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00   ,/*"三",3*/
047E  00 FC 04 04 04 FC 04 04 04 FC 04 04 04 FC 00 00
048E  00 7F 28 24 23 20 20 20 20 21 22 22 22 7F 00 00   ,/*"四",4*/
049E  00 02 42 42 42 C2 7E 42 42 42 42 C2 02 02 00 00
04AE  40 40 40 40 78 47 40 40 40 40 40 7F 40 40 40 00   ,/*"五",5*/
04BE  20 20 20 20 20 20 21 22 2C 20 20 20 20 20 20 00
04CE  00 40 20 10 0C 03 00 00 00 01 02 04 18 60 00 00   ,/*"六",6*/
04DE  80 80 80 80 80 40 FF 40 40 40 20 20 20 20 00 00
04EE  00 00 00 00 00 00 3F 40 40 40 40 40 40 78 00 00   ,/*"七",7*/
04FE  00 00 00 00 00 FC 00 00 00 7E 80 00 00 00 00 00
050E  00 80 60 18 07 00 00 00 00 00 03 0C 30 40 80 00   ,/*"八",8*/
051E  00 10 10 10 10 FF 10 10 10 10 F0 00 00 00 00 00
052E  80 40 20 18 07 00 00 00 00 00 3F 40 40 00 78 00   ,/*"九",9*/
053E  40 40 40 40 40 40 40 FF 40 40 40 40 40 40 40 00
054E  00 00 00 00 00 00 00 FF 00 00 00 00 00 00 00 00   ,/*"十",10*/
055E  00 00 00 BE 2A 2A 2A EA 2A 2A 2A 3E 00 00 00 00
056E  00 44 42 49 49 49 49 7F 49 49 49 49 41 40 00 00   ,/*"星",11*/
057E  00 04 FF 24 24 24 FF 04 00 FE 22 22 22 FE 00 00
058E  88 48 2F 09 09 19 AF 48 30 0F 02 42 82 7F 00 00   ,/*"期",12*/
059E  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
05AE  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ,/*" ",13*/
05BE  00 02 05 E2 18 04 02 02 02 02 02 02 04 1E 00 00
05CE  00 00 00 07 18 20 40 40 40 40 40 40 20 18 00 00   ,//"℃",14
05DE  00 02 02 C2 02 02 02 02 FE 82 82 82 82 82 02 00
05EE  20 20 20 3F 20 20 20 20 3F 20 20 20 20 20 20 00   ,/*"正",15*/
05FE  00 10 10 08 84 8B 54 64 64 94 8C 04 00 00 00 00
060E  02 02 01 01 08 10 11 22 6C C4 40 01 01 03 01 00   ,/*"冬",16*/
061E  00 FE 12 12 FE 00 44 44 7F 44 44 7F 44 44 44 00
062E  C0 3F 41 81 7F 00 00 FF 49 49 49 49 FF 00 00 00   ,/*"臘",17*/
063E  00 00 00 00 00 FF 11 11 11 11 11 FF 00 00 00 00
064E  00 40 20 10 0C 03 01 01 01 21 41 3F 00 00 00 00   ,/*"月",18*/
065E  00 08 88 C9 2E 98 48 00 08 08 F8 08 08 FC 08 00
066E  02 01 00 7F 01 02 44 20 10 0C 03 20 40 3F 00 00   ,/*"初",19*/
067E  20 20 20 20 FF 20 20 20 20 20 FF 20 20 20 20 00
068E  00 00 00 00 7F 20 20 20 20 20 7F 00 00 00 00 00   ,/*"廿",20*/
069E  00 00 00 00 00 00 FE A9 01 FE 00 00 00 00 00 00
06AE  00 00 00 00 38 7C FF FE FF 7C 38 00 00 00 00 00   ,/*"溫度圖標(biāo)",21*/
  =================================== OLED 字庫 ======================
06BE 0C   INC R4
06BF 96   SUBB A, @R0
06C0 454D  ORL A, 4DH
06C2 4A   ORL A, R2
06C3 B80D4A CJNE R0, #0DH, 0710H
06C6 4C   ORL A, R4
06C7 0D   INC R5
06C8 A5   ERROR
06C9 4125  AJMP 0225H
06CB AAB6  MOV R2, 0B6H
06CD 056A  INC 6AH
06CF 49   ORL A, R1
06D0 7AAD  MOV R2, #0ADH
06D2 BD025D CJNE R5, #02H, 0732H
06D5 5209  ANL 09H, A
06D7 2D   ADD A, R5
06D8 47   ORL A, @R1
06D9 5C   ANL A, R4
06DA 95BA  SUBB A, 0BAH
06DC 0A   INC R2
06DD 954E  SUBB A, 4EH
06DF 0B   INC R3
06E0 4A   ORL A, R2
06E1 434B55 ORL 4BH, #55H
06E4 37   ADDC A, @R1
06E5 0A   INC R2
06E6 D54A95 DJNZ 4AH, 067EH
06E9 5A   ANL A, R2
06EA BF04BA CJNE R7, #04H, 06A7H
06ED 530A5B ANL 0AH, #5BH
06F0 48   ORL A, R0
06F1 652B  XRL A, 2BH
06F3 BC052B CJNE R4, #05H, 0721H
06F6 500A  JNC 0702H
06F8 93   MOVC A, @A+DPTR
06F9 4547  ORL A, 47H
06FB 4A   ORL A, R2
06FC B906AA CJNE R1, #06H, 06A9H
06FF 4C   ORL A, R4
0700 0A   INC R2
0701 D54124 DJNZ 41H, 0728H
0704 DAB6  DJNZ R2, 06BCH
0706 04   INC A
0707 B64A69 CJNE @R0, #4AH, 0773H
070A 57   ANL A, @R1
070B 3D   ADDC A, R5
070C 0A   INC R2
070D 4E   ORL A, R6
070E 510D  ACALL 020DH
0710 26   ADD A, @R0
0711 46   ORL A, @R0
0712 5E   ANL A, R6
0713 93   MOVC A, @A+DPTR
0714 3A   ADDC A, R2
0715 0D   INC R5
0716 534D05 ANL 4DH, #05H
0719 AA43  MOV R2, 43H
071B 36   ADDC A, @R0
071C B53709 CJNE A, 37H, 0728H
071F 6D   XRL A, R5
0720 4B   ORL A, R3
0721 B4AEBF CJNE A, #0AEH, 06E3H
0724 04   INC A
0725 AD53  MOV R5, 53H
0727 0A   INC R2
0728 4D   ORL A, R5
0729 48   ORL A, R0
072A 6D   XRL A, R5
072B 25BC  ADD A, 0BCH
072D 0D   INC R5
072E 254F  ADD A, 4FH
0730 0D   INC R5
0731 5244  ANL 44H, A
0733 5D   ANL A, R5
0734 AA38  MOV R2, 38H
0736 0B   INC R3
0737 5A   ANL A, R2
0738 4C   ORL A, R4
0739 056D  INC 6DH
073B 4124  AJMP 0224H
073D ADB6  MOV R5, 0B6H
073F 04   INC A
0740 9B   SUBB A, R3
0741 4A   ORL A, R2
0742 7A4B  MOV R2, #4BH
0744 BE0A4B CJNE R6, #0AH, 0792H
0747 510A  ACALL 020AH
0749 A5   ERROR
074A 46   ORL A, @R0
074B 5B   ANL A, R3
074C 52BA  ANL 0BAH, A
074E 06   INC @R0
074F D24E  SETB 4EH
0751 0A   INC R2
0752 DA42  DJNZ R2, 0796H
0754 355B  ADDC A, 5BH
0756 37   ADDC A, @R1
0757 09   INC R1
0758 37   ADDC A, @R1
0759 4B   ORL A, R3
075A 84   DIV AB
075B 97   SUBB A, @R1
075C C104  AJMP 0604H
075E 97   SUBB A, @R1
075F 53064B ANL 06H, #4BH
0762 48   ORL A, R0
0763 66   XRL A, @R0
0764 A5   ERROR
0765 3C   ADDC A, R4
0766 0E   INC R6
0767 A5   ERROR
0768 4F   ORL A, R7
0769 06   INC @R0
076A B244  CPL 44H
076C 4A   ORL A, R2
076D B6380A CJNE @R0, #38H, 077AH
0770 AE4C  MOV R6, 4CH
0772 09   INC R1
0773 2E   ADD A, R6
0774 423C  ORL 3CH, A
0776 97   SUBB A, @R1
0777 350C  ADDC A, 0CH
0779 96   SUBB A, @R0
077A 49   ORL A, R1
077B 7D4A  MOV R5, #4AH
077D BD0D4A CJNE R5, #0DH, 07CAH
0780 510D  ACALL 020DH
0782 A5   ERROR
0783 4555  ORL A, 55H
0785 AABA  MOV R2, 0BAH
0787 056A  INC 6AH
0789 4E   ORL A, R6
078A 0A   INC R2
078B 6D   XRL A, R5
078C 43452E ORL 45H, #2EH
078F B7052D CJNE @R1, #05H, 07BFH
0792 4B   ORL A, R3
0793 8A95  MOV 95H, R2
0795 BF0A95 CJNE R7, #0AH, 072DH
0798 530B4A ANL 0BH, #4AH
079B 47   ORL A, @R1
079C 6B   XRL A, R3
079D 553B  ANL A, 3BH
079F 0A   INC R2
07A0 D54F05 DJNZ 4FH, 07A8H
07A3 5A   ANL A, R2
07A4 454A  ORL A, 4AH
07A6 5D   ANL A, R5
07A7 38   ADDC A, R0
07A8 0A   INC R2
07A9 5B   ANL A, R3
07AA 4C   ORL A, R4
07AB 052B  INC 2BH
07AD 423A  ORL 3AH, A
07AF 93   MOVC A, @A+DPTR
07B0 B60693 CJNE @R0, #06H, 0746H
07B3 49   ORL A, R1
07B4 7729  MOV @R1, #29H
07B6 BD06AA CJNE R5, #06H, 0763H
07B9 510A  ACALL 020AH
07BB D54654 DJNZ 46H, 0812H
07BE DABA  DJNZ R2, 077AH
07C0 04   INC A
07C1 B64E0A CJNE @R0, #4EH, 07CEH
07C4 57   ANL A, @R1
07C5 434527 ORL 45H, #27H
07C8 38   ADDC A, R0
07C9 0D   INC R5
07CA 26   ADD A, @R0
07CB 4A   ORL A, R2
07CC 8E93  MOV 93H, R6
07CE 3E   ADDC A, R6
07CF 0D   INC R5
07D0 5252  ANL 52H, A
07D2 0D   INC R5
07D3 AA47  MOV R2, 47H
07D5 66   XRL A, @R0
07D6 B53B05 CJNE A, 3BH, 07DEH
07D9 6D   XRL A, R5
07DA 4F   ORL A, R7
07DB 04   INC A
07DC AE45  MOV R6, 45H
07DE 4A   ORL A, R2
07DF 4E   ORL A, R6
07E0 B90A4D CJNE R1, #0AH, 0830H
07E3 4C   ORL A, R4
07E4 0D   INC R5
07E5 1541  DEC 41H
07E7 2D   ADD A, R5
07E8 92B5  MOV 0B5H, C
07EA 00   NOP
07EB 1F   DEC R7
07EC 3B   ADDC A, R3
07ED 5A   ANL A, R2
07EE 7897  MOV R0, #97H
07F0 B5D4F3 CJNE A, 0D4H, 07E6H
07F3 0111  AJMP 0011H
07F5 0130  AJMP 0030H
07F7 014E  AJMP 004EH
=====================================
  ■601     void display_nl()
  ■602     {
  ■603:      Conversion(year,month,day);   //公歷轉(zhuǎn)農(nóng)歷
07F9 AB13  MOV R3, 13H
07FB AD0F  MOV R5, 0FH
07FD AF11  MOV R7, 11H
07FF 120F14 LCALL 0F14H
  ■604:      if (month_moon==1) OLED_hzStr(0,6,15); //農(nóng)歷一月,顯示“正”
0802 E515  MOV A, 15H
0804 B40105 CJNE A, #01H, 080CH
0807 7B0F  MOV R3, #0FH
0809 120AD4 LCALL 0AD4H
  ■605:      if (month_moon==2) OLED_hzStr(0,6,2); //農(nóng)歷二月,顯示“二”
080C E515  MOV A, 15H
080E B40205 CJNE A, #02H, 0816H
0811 7B02  MOV R3, #02H
0813 120AD4 LCALL 0AD4H
  ■606:      if (month_moon==3) OLED_hzStr(0,6,3); //農(nóng)歷三月,顯示“三”
0816 E515  MOV A, 15H
0818 B40305 CJNE A, #03H, 0820H
081B 7B03   MOV R3, #03H
081D 120AE8 LCALL 0AE8H
  ■607:      if (month_moon==4) OLED_hzStr(0,6,4); //農(nóng)歷四月,顯示“四”
0820 E515  MOV A, 15H
0822 B40405 CJNE A, #04H, 082AH
0825 7B04  MOV R3, #04H
0827 120AE8 LCALL 0AE8H
  ■608:      if (month_moon==5) OLED_hzStr(0,6,5); //農(nóng)歷五月,顯示“五”
082A E515  MOV A, 15H
082C B40505 CJNE A, #05H, 0834H
082F 7B05  MOV R3, #05H
0831 120AFC LCALL 0AFCH
  ■609:      if (month_moon==6) OLED_hzStr(0,6,6); //農(nóng)歷六月,顯示“六”
0834 E515  MOV A, 15H
0836 B40605 CJNE A, #06H, 083EH
0839 7B06  MOV R3, #06H
083B 120AFC LCALL 0AFCH
  ■610:      if (month_moon==7) OLED_hzStr(0,6,7); //農(nóng)歷七月,顯示“七”
083E E515  MOV A, 15H
0840 B40705 CJNE A, #07H, 0848H
0843 7B07  MOV R3, #07H
0845 120B12 LCALL 0B12H
  ■611:      if (month_moon==8) OLED_hzStr(0,6,8); //農(nóng)歷八月,顯示“八”
0848 E515  MOV A, 15H
084A B40805 CJNE A, #08H, 0852H
084D 7B08  MOV R3, #08H
084F 120B12 LCALL 0B12H
  ■612:      if (month_moon==9) OLED_hzStr(0,6,9); //農(nóng)歷九月,顯示“九”
0852 E515  MOV A, 15H
0854 B40905 CJNE A, #09H, 085CH
0857 7B09  MOV R3, #09H
0859 120B26 LCALL 0B26H
  ■613:      if (month_moon==10) OLED_hzStr(0,6,10);//農(nóng)歷十月,顯示“十”
085C E515  MOV A, 15H
085E B40A05 CJNE A, #0AH, 0866H
0861 7B0A  MOV R3, #0AH
0863 120B26 LCALL 0B26H
  ■614:      if (month_moon==11) OLED_hzStr(0,6,16);//農(nóng)歷十一月,顯示“冬”
0866 E515  MOV A, 15H
0868 B40B05 CJNE A, #0BH, 0870H
086B 7B10  MOV R3, #10H
086D 120B44 LCALL 0B44H
  ■615:      if (month_moon==12) OLED_hzStr(0,6,17);//農(nóng)歷十二月,顯示“臘”
  ■616:  
0870 E515  MOV A, 15H
0872 B40C05 CJNE A, #0CH, 087AH
0875 7B11  MOV R3, #11H
0877 120B44 LCALL 0B44H
  ■617:      OLED_hzStr(16,6,18); //顯示“月”字
  ■618  1 
087A 7B12  MOV R3, #12H
087C 7D06  MOV R5, #06H
087E 7C00  MOV R4, #00H
0880 7F10  MOV R7, #10H
0882 12162C LCALL 162CH
  ■619:      if (day_moon==1){OLED_hzStr(32,6,19); OLED_hzStr(48,6,1);}   //農(nóng)歷一日,顯示“初一”
0885 E517  MOV A, 17H
0887 B40105 CJNE A, #01H, 088FH
088A 7B13   MOV R3, #13H
088C 1209FE LCALL 09FEH
  ■620:      if (day_moon==2){OLED_hzStr(32,6,19); OLED_hzStr(48,6,2);}   //農(nóng)歷二日,顯示“初二”
088F E517  MOV A, 17H
0891 B40205 CJNE A, #02H, 0899H
0894 7B13   MOV R3, #13H
0896 120A13 LCALL 0A13H
  ■621:      if (day_moon==3){OLED_hzStr(32,6,19); OLED_hzStr(48,6,3);}   //農(nóng)歷三日,顯示“初三”
0899 E517  MOV A, 17H
089B B40305 CJNE A, #03H, 08A3H
089E 7B13   MOV R3, #13H
08A0 1209E9 LCALL 09E9H
  ■622:      if (day_moon==4){OLED_hzStr(32,6,19); OLED_hzStr(48,6,4);}   //農(nóng)歷四日,顯示“初四”
08A3 E517  MOV A, 17H
08A5 B40405 CJNE A, #04H, 08ADH
08A8 7B13   MOV R3, #13H
08AA 120A28 LCALL 0A28H
  ■623:      if (day_moon==5){OLED_hzStr(32,6,19); OLED_hzStr(48,6,5);}   //農(nóng)歷五日,顯示“初五”
08AD E517  MOV A, 17H
08AF B40505 CJNE A, #05H, 08B7H
08B2 7B13   MOV R3, #13H
08B4 120A3D LCALL 0A3DH
  ■624:      if (day_moon==6){OLED_hzStr(32,6,19); OLED_hzStr(48,6,6);}   //農(nóng)歷六日,顯示“初六”
08B7 E517  MOV A, 17H
08B9 B40605 CJNE A, #06H, 08C1H
08BC 7B13   MOV R3, #13H
08BE 120A52 LCALL 0A52H
  ■625:      if (day_moon==7){OLED_hzStr(32,6,19); OLED_hzStr(48,6,7);}   //農(nóng)歷七日,顯示“初七”
08C1 E517  MOV A, 17H
08C3 B40705 CJNE A, #07H, 08CBH
08C6 7B13   MOV R3, #13H
08C8 120A67 LCALL 0A67H
  ■626:      if (day_moon==8){OLED_hzStr(32,6,19); OLED_hzStr(48,6,8);}   //農(nóng)歷八日,顯示“初八”
08CB E517  MOV A, 17H
08CD B40805 CJNE A, #08H, 08D5H
08D0 7B13   MOV R3, #13H
08D2 120A7C LCALL 0A7CH
  ■627:      if (day_moon==9){OLED_hzStr(32,6,19); OLED_hzStr(48,6,9);}   //農(nóng)歷九日,顯示“初九”
08D5 E517  MOV A, 17H
08D7 B40905 CJNE A, #09H, 08DFH
08DA 7B13   MOV R3, #13H
08DC 120A91 LCALL 0A91H
  ■628:      if (day_moon==10){OLED_hzStr(32,6,19); OLED_hzStr(48,6,10);}//農(nóng)歷十日,顯示“初十”
08DF E517  MOV A, 17H
08E1 B40A05 CJNE A, #0AH, 08E9H
08E4 7B13  MOV R3, #13H
08E6 1209D4 LCALL 09D4H
  ■629:      if (day_moon==11){OLED_hzStr(32,6,10); OLED_hzStr(48,6,1);}   //農(nóng)歷十一日,顯示“十一”
08E9 E517  MOV A, 17H
08EB B40B05 CJNE A, #0BH, 08F3H
08EE 7B0A  MOV R3, #0AH
08F0 1209FE LCALL 09FEH
  ■630:      if (day_moon==12){OLED_hzStr(32,6,10); OLED_hzStr(48,6,2);}   //農(nóng)歷十二日,顯示“十二”
08F3 E517  MOV A, 17H
08F5 B40C05 CJNE A, #0CH, 08FDH
08F8 7B0A  MOV R3, #0AH
08FA 120A13 LCALL 0A13H
  ■631:      if (day_moon==13){OLED_hzStr(32,6,10); OLED_hzStr(48,6,3);}   //農(nóng)歷十三日,顯示“十三”
08FD E517  MOV A, 17H
08FF B40D05 CJNE A, #0DH, 0907H
0902 7B0A  MOV R3, #0AH
0904 1209E9 LCALL 09E9H
  ■632:      if (day_moon==14){OLED_hzStr(32,6,10); OLED_hzStr(48,6,4);}   //農(nóng)歷十四日,顯示“十四”
0907 E517  MOV A, 17H
0909 B40E05 CJNE A, #0EH, 0911H
090C 7B0A  MOV R3, #0AH
090E 120A28 LCALL 0A28H
  ■633:      if (day_moon==15){OLED_hzStr(32,6,10); OLED_hzStr(48,6,5);}   //農(nóng)歷十五日,顯示“十五”
0911 E517  MOV A, 17H
0913 B40F05 CJNE A, #0FH, 091BH
0916 7B0A  MOV R3, #0AH
0918 120A3D LCALL 0A3DH
  ■634:      if (day_moon==16){OLED_hzStr(32,6,10); OLED_hzStr(48,6,6);}   //農(nóng)歷十六日,顯示“十六”
091B E517  MOV A, 17H
091D B41005 CJNE A, #10H, 0925H
0920 7B0A  MOV R3, #0AH
0922 120A52 LCALL 0A52H
  ■635:      if (day_moon==17){OLED_hzStr(32,6,10); OLED_hzStr(48,6,7);}   //農(nóng)歷十七日,顯示“十七”
0925 E517  MOV A, 17H
0927 B41105 CJNE A, #11H, 092FH
092A 7B0A  MOV R3, #0AH
092C 120A67 LCALL 0A67H
  ■636:      if (day_moon==18){OLED_hzStr(32,6,10); OLED_hzStr(48,6,8);}   //農(nóng)歷十八日,顯示“十八”
092F E517  MOV A, 17H
0931 B41205 CJNE A, #12H, 0939H
0934 7B0A  MOV R3, #0AH
0936 120A7C LCALL 0A7CH
  ■637:      if (day_moon==19){OLED_hzStr(32,6,10); OLED_hzStr(48,6,9);}   //農(nóng)歷十九日,顯示“十九”
0939 E517  MOV A, 17H
093B B41305 CJNE A, #13H, 0943H
093E 7B0A  MOV R3, #0AH
0940 120A91 LCALL 0A91H
  ■638:      if (day_moon==20){OLED_hzStr(32,6,2); OLED_hzStr(48,6,10);}   //農(nóng)歷二十日,顯示“二十”
0943 E517  MOV A, 17H
0945 B41405 CJNE A, #14H, 094DH
0948 7B02  MOV R3, #02H
094A 1209D4 LCALL 09D4H
  ■639:      if (day_moon==21){OLED_hzStr(32,6,20); OLED_hzStr(48,6,1);}   //農(nóng)歷二十一日,顯示“廿一”
094D E517  MOV A, 17H
094F B41508 CJNE A, #15H, 095AH
0952 120AA6 LCALL 0AA6H
0955 7B01  MOV R3, #01H
0957 120ABE LCALL 0ABEH
  ■640:      if (day_moon==22){OLED_hzStr(32,6,20); OLED_hzStr(48,6,2);}   //農(nóng)歷二十二日,顯示“廿二”
095A E517  MOV A, 17H
095C B41608 CJNE A, #16H, 0967H
095F 120AA6 LCALL 0AA6H
0962 7B02  MOV R3, #02H
0964 120ADE LCALL 0ADEH
  ■641:      if (day_moon==23){OLED_hzStr(32,6,20); OLED_hzStr(48,6,3);}   //農(nóng)歷二十三日,顯示“廿三”
0967 E517  MOV A, 17H
0969 B41708 CJNE A, #17H, 0974H
096C 120AB2 LCALL 0AB2H
096F 7B03   MOV R3, #03H
0971 120ABE LCALL 0ABEH
  ■642:      if (day_moon==24){OLED_hzStr(32,6,20); OLED_hzStr(48,6,4);}   //農(nóng)歷二十四日,顯示“廿四”
0974 E517  MOV A, 17H
0976 B41808 CJNE A, #18H, 0981H
0979 120AB2 LCALL 0AB2H
097C 7B04  MOV R3, #04H
097E 120ADE LCALL 0ADEH
  ■643:      if (day_moon==25){OLED_hzStr(32,6,20); OLED_hzStr(48,6,5);}   //農(nóng)歷二十五日,顯示“廿五”
0981 E517  MOV A, 17H
0983 B41908 CJNE A, #19H, 098EH
0986 120AC8 LCALL 0AC8H
0989 7B05  MOV R3, #05H
098B 120AF2 LCALL 0AF2H
  ■644:      if (day_moon==26){OLED_hzStr(32,6,20); OLED_hzStr(48,6,6);}   //農(nóng)歷二十六日,顯示“廿六”
098E E517  MOV A, 17H
0990 B41A08 CJNE A, #1AH, 099BH
0993 120AC8 LCALL 0AC8H
0996 7B06  MOV R3, #06H
0998 120AF2 LCALL 0AF2H
  ■645:      if (day_moon==27){OLED_hzStr(32,6,20); OLED_hzStr(48,6,7);}   //農(nóng)歷二十七日,顯示“廿七”
099B E517  MOV A, 17H
099D B41B08 CJNE A, #1BH, 09A8H
09A0 120B06 LCALL 0B06H
09A3 7B07  MOV R3, #07H
09A5 120B1C LCALL 0B1CH
  ■646:      if (day_moon==28){OLED_hzStr(32,6,20); OLED_hzStr(48,6,8);}   //農(nóng)歷二十八日,顯示“廿八”
09A8 E517  MOV A, 17H
09AA B41C08 CJNE A, #1CH, 09B5H
09AD 120B06 LCALL 0B06H
09B0 7B08  MOV R3, #08H
09B2 120B1C LCALL 0B1CH
  ■647:      if (day_moon==29){OLED_hzStr(32,6,20); OLED_hzStr(48,6,9);}   //農(nóng)歷二十九日,顯示“廿九”
09B5 E517  MOV A, 17H
09B7 B41D0A CJNE A, #1DH, 09C4H
09BA 7B14  MOV R3, #14H
09BC 120B30 LCALL 0B30H
09BF 7B09  MOV R3, #09H
09C1 120B3A LCALL 0B3AH
  ■648:      if (day_moon==30){OLED_hzStr(32,6,3); OLED_hzStr(48,6,10);}   //農(nóng)歷三十日,顯示“三十”
09C4 E517  MOV A, 17H
09C6 B41E0A CJNE A, #1EH, 09D3H
09C9 7B03  MOV R3, #03H
09CB 120B30 LCALL 0B30H
09CE 7B0A  MOV R3, #0AH
09D0 120B3A LCALL 0B3AH
  ■649:  }
09D3 22   RET
09D4 7D06  MOV R5, #06H
09D6 7C00  MOV R4, #00H
09D8 7F20  MOV R7, #20H
09DA 12162C LCALL 162CH
09DD 7B0A  MOV R3, #0AH
09DF 7D06  MOV R5, #06H
09E1 7C00  MOV R4, #00H
09E3 7F30  MOV R7, #30H
09E5 12162C LCALL 162CH
09E8 22   RET
09E9 7D06  MOV R5, #06H
09EB 7C00  MOV R4, #00H
09ED 7F20  MOV R7, #20H
09EF 12162C LCALL 162CH
09F2 7B03  MOV R3, #03H
09F4 7D06  MOV R5, #06H
09F6 7C00  MOV R4, #00H
09F8 7F30  MOV R7, #30H
09FA 12162C LCALL 162CH
09FD 22   RET
09FE 7D06  MOV R5, #06H
0A00 7C00  MOV R4, #00H
0A02 7F20  MOV R7, #20H
0A04 12162C LCALL 162CH
0A07 7B01  MOV R3, #01H
0A09 7D06  MOV R5, #06H
0A0B 7C00  MOV R4, #00H
0A0D 7F30  MOV R7, #30H
0A0F 12162C LCALL 162CH
0A12 22   RET
0A13 7D06  MOV R5, #06H
0A15 7C00  MOV R4, #00H
0A17 7F20  MOV R7, #20H
0A19 12162C LCALL 162CH
0A1C 7B02  MOV R3, #02H
0A1E 7D06  MOV R5, #06H
0A20 7C00  MOV R4, #00H
0A22 7F30  MOV R7, #30H
0A24 12162C LCALL 162CH
0A27 22   RET
0A28 7D06  MOV R5, #06H
0A2A 7C00  MOV R4, #00H
0A2C 7F20  MOV R7, #20H
0A2E 12162C LCALL 162CH
0A31 7B04  MOV R3, #04H
0A33 7D06  MOV R5, #06H
0A35 7C00  MOV R4, #00H
0A37 7F30  MOV R7, #30H
0A39 12162C LCALL 162CH
0A3C 22   RET
0A3D 7D06  MOV R5, #06H
0A3F 7C00  MOV R4, #00H
0A41 7F20  MOV R7, #20H
0A43 12162C LCALL 162CH
0A46 7B05  MOV R3, #05H
0A48 7D06  MOV R5, #06H
0A4A 7C00  MOV R4, #00H
0A4C 7F30  MOV R7, #30H
0A4E 12162C LCALL 162CH
0A51 22   RET
0A52 7D06  MOV R5, #06H
0A54 7C00  MOV R4, #00H
0A56 7F20  MOV R7, #20H
0A58 12162C LCALL 162CH
0A5B 7B06  MOV R3, #06H
0A5D 7D06  MOV R5, #06H
0A5F 7C00  MOV R4, #00H
0A61 7F30  MOV R7, #30H
0A63 12162C LCALL 162CH
0A66 22   RET
0A67 7D06  MOV R5, #06H
0A69 7C00  MOV R4, #00H
0A6B 7F20  MOV R7, #20H
0A6D 12162C LCALL 162CH
0A70 7B07  MOV R3, #07H
0A72 7D06  MOV R5, #06H
0A74 7C00  MOV R4, #00H
0A76 7F30  MOV R7, #30H
0A78 12162C LCALL 162CH
0A7B 22   RET
0A7C 7D06  MOV R5, #06H
0A7E 7C00  MOV R4, #00H
0A80 7F20  MOV R7, #20H
0A82 12162C LCALL 162CH
0A85 7B08  MOV R3, #08H
0A87 7D06  MOV R5, #06H
0A89 7C00  MOV R4, #00H
0A8B 7F30  MOV R7, #30H
0A8D 12162C LCALL 162CH
0A90 22   RET
0A91 7D06  MOV R5, #06H
0A93 7C00  MOV R4, #00H
0A95 7F20  MOV R7, #20H
0A97 12162C LCALL 162CH
0A9A 7B09  MOV R3, #09H
0A9C 7D06  MOV R5, #06H
0A9E 7C00  MOV R4, #00H
0AA0 7F30  MOV R7, #30H
0AA2 12162C LCALL 162CH
0AA5 22   RET
0AA6 7B14  MOV R3, #14H
0AA8 7D06  MOV R5, #06H
0AAA 7C00  MOV R4, #00H
0AAC 7F20  MOV R7, #20H
0AAE 12162C LCALL 162CH
0AB1 22   RET
0AB2 7B14  MOV R3, #14H
0AB4 7D06  MOV R5, #06H
0AB6 7C00  MOV R4, #00H
0AB8 7F20  MOV R7, #20H
0ABA 12162C LCALL 162CH
0ABD 22   RET
0ABE 7D06  MOV R5, #06H
0AC0 7C00  MOV R4, #00H
0AC2 7F30  MOV R7, #30H
0AC4 12162C LCALL 162CH
0AC7 22   RET
0AC8 7B14  MOV R3, #14H
0ACA 7D06  MOV R5, #06H
0ACC 7C00  MOV R4, #00H
0ACE 7F20  MOV R7, #20H
0AD0 12162C LCALL 162CH
0AD3 22   RET
0AD4 7D06  MOV R5, #06H
0AD6 7C00  MOV R4, #00H
0AD8 E4   CLR A
0AD9 FF   MOV R7, A
0ADA 12162C LCALL 162CH
0ADD 22   RET
0ADE 7D06  MOV R5, #06H
0AE0 7C00  MOV R4, #00H
0AE2 7F30  MOV R7, #30H
0AE4 12162C LCALL 162CH
0AE7 22   RET
0AE8 7D06  MOV R5, #06H
0AEA 7C00  MOV R4, #00H
0AEC E4   CLR A
0AED FF   MOV R7, A
0AEE 12162C LCALL 162CH
0AF1 22   RET
0AF2 7D06  MOV R5, #06H
0AF4 7C00  MOV R4, #00H
0AF6 7F30  MOV R7, #30H
0AF8 12162C LCALL 162CH
0AFB 22   RET
0AFC 7D06  MOV R5, #06H
0AFE 7C00  MOV R4, #00H
0B00 E4   CLR A
0B01 FF   MOV R7, A
0B02 12162C LCALL 162CH
0B05 22   RET
0B06 7B14  MOV R3, #14H
0B08 7D06  MOV R5, #06H
0B0A 7C00  MOV R4, #00H
0B0C 7F20  MOV R7, #20H
0B0E 12162C LCALL 162CH
0B11 22   RET
0B12 7D06  MOV R5, #06H
0B14 7C00  MOV R4, #00H
0B16 E4   CLR A
0B17 FF   MOV R7, A
0B18 12162C LCALL 162CH
0B1B 22   RET
0B1C 7D06  MOV R5, #06H
0B1E 7C00  MOV R4, #00H
0B20 7F30  MOV R7, #30H
0B22 12162C LCALL 162CH
0B25 22   RET
0B26 7D06  MOV R5, #06H
0B28 7C00  MOV R4, #00H
0B2A E4   CLR A
0B2B FF   MOV R7, A
0B2C 12162C LCALL 162CH
0B2F 22   RET
0B30 7D06  MOV R5, #06H
0B32 7C00  MOV R4, #00H
0B34 7F20  MOV R7, #20H
0B36 12162C LCALL 162CH
0B39 22   RET
0B3A 7D06  MOV R5, #06H
0B3C 7C00  MOV R4, #00H
0B3E 7F30  MOV R7, #30H
0B40 12162C LCALL 162CH
0B43 22   RET
0B44 7D06  MOV R5, #06H
0B46 7C00  MOV R4, #00H
0B48 E4   CLR A
0B49 FF   MOV R7, A
0B4A 12162C LCALL 162CH
0B4D 22   RET
  ■C?FPMUL:
0B4E EC   MOV A, R4
0B4F 4D   ORL A, R5
0B50 6011  JZ  0B63H
0B52 E8   MOV A, R0
0B53 49   ORL A, R1
0B54 7017  JNZ 0B6DH
0B56 ED   MOV A, R5
0B57 33   RLC A
0B58 EC   MOV A, R4
0B59 33   RLC A
0B5A 04   INC A
0B5B 600D  JZ  0B6AH
0B5D E4   CLR A
0B5E FC   MOV R4, A
0B5F FF   MOV R7, A
0B60 FE   MOV R6, A
0B61 FD   MOV R5, A
0B62 22   RET
0B63 E9   MOV A, R1
0B64 33   RLC A
0B65 E8   MOV A, R0
0B66 33   RLC A
0B67 04   INC A
0B68 70F8  JNZ 0B62H
0B6A 020CFE LJMP 0CFEH
0B6D 120CC9 LCALL 0CC9H
0B70 58   ANL A, R0
0B71 04   INC A
0B72 6009  JZ  0B7DH
0B74 E4   CLR A
0B75 CC   XCH A, R4
0B76 2481  ADD A, #81H
0B78 5006  JNC 0B80H
0B7A 28   ADD A, R0
0B7B 5009  JNC 0B86H
0B7D 020D08 LJMP 0D08H
0B80 28   ADD A, R0
0B81 4003  JC  0B86H
0B83 020D05 LJMP 0D05H
0B86 C0E0  PUSH 0E0H
0B88 EB   MOV A, R3
0B89 4A   ORL A, R2
0B8A 7044  JNZ 0BD0H
0B8C B98006 CJNE R1, #80H, 0B95H
0B8F D0E0  POP 0E0H
0B91 FB   MOV R3, A
0B92 020CF4 LJMP 0CF4H
0B95 EF   MOV A, R7
0B96 4E   ORL A, R6
0B97 701C  JNZ 0BB5H
0B99 BD8008 CJNE R5, #80H, 0BA4H
0B9C EB   MOV A, R3
0B9D FF   MOV R7, A
0B9E EA   MOV A, R2
0B9F FE   MOV R6, A
0BA0 E9   MOV A, R1
0BA1 FD   MOV R5, A
0BA2 80EB  SJMP 0B8FH
0BA4 E9   MOV A, R1
0BA5 8DF0  MOV 0F0H, R5
0BA7 A4   MUL AB
0BA8 FE   MOV R6, A
0BA9 E5F0  MOV A, 0F0H
0BAB 020C37 LJMP 0C37H
0BAE E9   MOV A, R1
0BAF CD   XCH A, R5
0BB0 F9   MOV R1, A
0BB1 EA   MOV A, R2
0BB2 FE   MOV R6, A
0BB3 EB   MOV A, R3
0BB4 FF   MOV R7, A
0BB5 EF   MOV A, R7
0BB6 89F0  MOV 0F0H, R1
0BB8 A4   MUL AB
0BB9 FC   MOV R4, A
0BBA E5F0  MOV A, 0F0H
0BBC CE   XCH A, R6
0BBD 89F0  MOV 0F0H, R1
0BBF A4   MUL AB
0BC0 2E   ADD A, R6
0BC1 FF   MOV R7, A
0BC2 E4   CLR A
0BC3 35F0  ADDC A, 0F0H
0BC5 CD   XCH A, R5
0BC6 89F0  MOV 0F0H, R1
0BC8 A4   MUL AB
0BC9 2D   ADD A, R5
0BCA FE   MOV R6, A
0BCB E4   CLR A
0BCC 35F0  ADDC A, 0F0H
0BCE 8067  SJMP 0C37H
0BD0 EF   MOV A, R7
0BD1 4E   ORL A, R6
0BD2 7005  JNZ 0BD9H
0BD4 BD80D7 CJNE R5, #80H, 0BAEH
0BD7 80C3  SJMP 0B9CH
0BD9 EF   MOV A, R7
0BDA 8BF0  MOV 0F0H, R3
0BDC A4   MUL AB
0BDD ACF0  MOV R4, 0F0H
0BDF EE   MOV A, R6
0BE0 8BF0  MOV 0F0H, R3
0BE2 A4   MUL AB
0BE3 2C   ADD A, R4
0BE4 FC   MOV R4, A
0BE5 E4   CLR A
0BE6 35F0  ADDC A, 0F0H
0BE8 F8   MOV R0, A
0BE9 EF   MOV A, R7
0BEA 8AF0  MOV 0F0H, R2
0BEC A4   MUL AB
0BED 2C   ADD A, R4
0BEE E5F0  MOV A, 0F0H
0BF0 38   ADDC A, R0
0BF1 FC   MOV R4, A
0BF2 E4   CLR A
0BF3 33   RLC A
0BF4 CB   XCH A, R3
0BF5 8DF0  MOV 0F0H, R5
0BF7 A4   MUL AB
0BF8 2C   ADD A, R4
0BF9 FC   MOV R4, A
0BFA E5F0  MOV A, 0F0H
0BFC 3B   ADDC A, R3
0BFD F8   MOV R0, A
0BFE EE   MOV A, R6
0BFF 8AF0  MOV 0F0H, R2
0C01 A4   MUL AB
0C02 2C   ADD A, R4
0C03 FC   MOV R4, A
0C04 E5F0  MOV A, 0F0H
0C06 38   ADDC A, R0
0C07 F8   MOV R0, A
0C08 E4   CLR A
0C09 33   RLC A
0C0A CF   XCH A, R7
0C0B 89F0  MOV 0F0H, R1
0C0D A4   MUL AB
0C0E 2C   ADD A, R4
0C0F FC   MOV R4, A
0C10 E5F0  MOV A, 0F0H
0C12 38   ADDC A, R0
0C13 CF   XCH A, R7
0C14 3400  ADDC A, #00H
0C16 CE   XCH A, R6
0C17 89F0  MOV 0F0H, R1
0C19 A4   MUL AB
0C1A 2F   ADD A, R7
0C1B FF   MOV R7, A
0C1C E5F0  MOV A, 0F0H
0C1E 3E   ADDC A, R6
0C1F FE   MOV R6, A
0C20 E4   CLR A
0C21 33   RLC A
0C22 C9   XCH A, R1
0C23 8DF0  MOV 0F0H, R5
0C25 A4   MUL AB
0C26 2E   ADD A, R6
0C27 FE   MOV R6, A
0C28 E5F0  MOV A, 0F0H
0C2A 39   ADDC A, R1
0C2B CD   XCH A, R5
0C2C 8AF0  MOV 0F0H, R2
0C2E A4   MUL AB
0C2F 2F   ADD A, R7
0C30 FF   MOV R7, A
0C31 E5F0  MOV A, 0F0H
0C33 3E   ADDC A, R6
0C34 FE   MOV R6, A
0C35 E4   CLR A
0C36 3D   ADDC A, R5
0C37 FD   MOV R5, A
0C38 33   RLC A
0C39 D0E0  POP 0E0H
0C3B FB   MOV R3, A
0C3C 5007  JNC 0C45H
0C3E 0B   INC R3
0C3F BB000F CJNE R3, #00H, 0C51H
0C42 020D08 LJMP 0D08H
0C45 EC   MOV A, R4
0C46 2C   ADD A, R4
0C47 FC   MOV R4, A
0C48 EF   MOV A, R7
0C49 33   RLC A
0C4A FF   MOV R7, A
0C4B EE   MOV A, R6
0C4C 33   RLC A
0C4D FE   MOV R6, A
0C4E ED   MOV A, R5
0C4F 33   RLC A
0C50 FD   MOV R5, A
0C51 020CE0 LJMP 0CE0H
  ■C?FCASTL:
0C54 75F020 MOV 0F0H, #20H
0C57 800E  SJMP 0C67H
  ■C?FCASTI:
0C59 75F010 MOV 0F0H, #10H
0C5C 8005  SJMP 0C63H
  ■C?FCASTC:
0C5E 75F008 MOV 0F0H, #08H
0C61 7D00  MOV R5, #00H
0C63 7E00  MOV R6, #00H
0C65 7F00  MOV R7, #00H
0C67 33   RLC A
0C68 92D5  MOV 0D5H, C
0C6A 30D503 JNB 0D5H, 0C70H
0C6D 120D35 LCALL 0D35H
0C70 EC   MOV A, R4
0C71 33   RLC A
0C72 4010  JC  0C84H
0C74 EF   MOV A, R7
0C75 33   RLC A
0C76 FF   MOV R7, A
0C77 EE   MOV A, R6
0C78 33   RLC A
0C79 FE   MOV R6, A
0C7A ED   MOV A, R5
0C7B 33   RLC A
0C7C FD   MOV R5, A
0C7D EC   MOV A, R4
0C7E 33   RLC A
0C7F FC   MOV R4, A
0C80 D5F0ED DJNZ 0F0H, 0C70H
0C83 22   RET
0C84 E5F0  MOV A, 0F0H
0C86 247E  ADD A, #7EH
0C88 A2D5  MOV C, 0D5H
0C8A 13   RRC A
0C8B CC   XCH A, R4
0C8C 92E7  MOV 0E7H, C
0C8E CD   XCH A, R5
0C8F CE   XCH A, R6
0C90 FF   MOV R7, A
0C91 22   RET
  ■C?CASTF:
0C92 ED   MOV A, R5
0C93 D2E7  SETB 0E7H
0C95 CD   XCH A, R5
0C96 33   RLC A
0C97 EC   MOV A, R4
0C98 33   RLC A
0C99 92D5  MOV 0D5H, C
0C9B 2481  ADD A, #81H
0C9D 4006  JC  0CA5H
0C9F E4   CLR A
0CA0 FF   MOV R7, A
0CA1 FE   MOV R6, A
0CA2 FD   MOV R5, A
0CA3 FC   MOV R4, A
0CA4 22   RET
0CA5 FC   MOV R4, A
0CA6 E4   CLR A
0CA7 CF   XCH A, R7
0CA8 CE   XCH A, R6
0CA9 CD   XCH A, R5
0CAA CC   XCH A, R4
0CAB 24E0  ADD A, #0E0H
0CAD 5011  JNC 0CC0H
0CAF 74FF  MOV A, #0FFH
0CB1 80ED  SJMP 0CA0H
0CB3 C3   CLR C
0CB4 CC   XCH A, R4
0CB5 13   RRC A
0CB6 CC   XCH A, R4
0CB7 CD   XCH A, R5
0CB8 13   RRC A
0CB9 CD   XCH A, R5
0CBA CE   XCH A, R6
0CBB 13   RRC A
0CBC CE   XCH A, R6
0CBD CF   XCH A, R7
0CBE 13   RRC A
0CBF CF   XCH A, R7
0CC0 04   INC A
0CC1 70F0  JNZ 0CB3H
0CC3 30D5DE JNB 0D5H, 0CA4H
0CC6 020D35 LJMP 0D35H
0CC9 E9   MOV A, R1
0CCA D2E7  SETB 0E7H
0CCC C9   XCH A, R1
0CCD 33   RLC A
0CCE E8   MOV A, R0
0CCF 33   RLC A
0CD0 F8   MOV R0, A
0CD1 92D5  MOV 0D5H, C
0CD3 ED   MOV A, R5
0CD4 D2E7  SETB 0E7H
0CD6 CD   XCH A, R5
0CD7 33   RLC A
0CD8 EC   MOV A, R4
0CD9 33   RLC A
0CDA FC   MOV R4, A
0CDB 5002  JNC 0CDFH
0CDD B2D5  CPL 0D5H
0CDF 22   RET
0CE0 EC   MOV A, R4
0CE1 30E710 JNB 0E7H, 0CF4H
0CE4 0F   INC R7
0CE5 BF000C CJNE R7, #00H, 0CF4H
0CE8 0E   INC R6
0CE9 BE0008 CJNE R6, #00H, 0CF4H
0CEC 0D   INC R5
0CED BD0004 CJNE R5, #00H, 0CF4H
0CF0 0B   INC R3
0CF1 EB   MOV A, R3
0CF2 6014  JZ  0D08H
0CF4 A2D5  MOV C, 0D5H
0CF6 EB   MOV A, R3
0CF7 13   RRC A
0CF8 FC   MOV R4, A
0CF9 ED   MOV A, R5
0CFA 92E7  MOV 0E7H, C
0CFC FD   MOV R5, A
0CFD 22   RET
0CFE 74FF  MOV A, #0FFH
0D00 FC   MOV R4, A
0D01 FD   MOV R5, A
0D02 FE   MOV R6, A
0D03 FF   MOV R7, A
0D04 22   RET
0D05 E4   CLR A
0D06 80F8  SJMP 0D00H
0D08 A2D5  MOV C, 0D5H
0D0A 74FF  MOV A, #0FFH
0D0C 13   RRC A
0D0D FC   MOV R4, A
0D0E 7D80  MOV R5, #80H
0D10 E4   CLR A
0D11 80EF  SJMP 0D02H
  ■C?SCDIV:
0D13 C2D5  CLR 0D5H
0D15 30F707 JNB 0F7H, 0D1FH
0D18 B2D5  CPL 0D5H
0D1A 63F0FF XRL 0F0H, #0FFH
0D1D 05F0  INC 0F0H
0D1F 30E70C JNB 0E7H, 0D2EH
0D22 B2D5  CPL 0D5H
0D24 F4   CPL A
0D25 04   INC A
0D26 84   DIV AB
0D27 63F0FF XRL 0F0H, #0FFH
0D2A 05F0  INC 0F0H
0D2C 8001  SJMP 0D2FH
0D2E 84   DIV AB
0D2F 30D502 JNB 0D5H, 0D34H
0D32 F4   CPL A
0D33 04   INC A
0D34 22   RET
  ■C?LNEG:
0D35 C3   CLR C
0D36 E4   CLR A
0D37 9F   SUBB A, R7
0D38 FF   MOV R7, A
0D39 E4   CLR A
0D3A 9E   SUBB A, R6
0D3B FE   MOV R6, A
0D3C E4   CLR A
0D3D 9D   SUBB A, R5
0D3E FD   MOV R5, A
0D3F E4   CLR A
0D40 9C   SUBB A, R4
0D41 FC   MOV R4, A
0D42 22   RET
  ■697     void main(void)
  ■698     {
  ■699:      OLED_Init(); //OLED初始化
0D43 12134D LCALL 134DH
  ■700:      OLED_CLS();   //OLED復(fù)位
0D46 1217A1 LCALL 17A1H
  ■701:      Timer0Init();//定時器初始化
0D49 121843 LCALL 1843H
  ■702:      while(1)
  ■703:      {
  ■704:          year = read_random(DS3231_YEAR);
0D4C 7F06  MOV R7, #06H
0D4E 1216FF LCALL 16FFH
0D51 8F11  MOV 11H, R7
  ■705:        month = read_random(DS3231_MONTH);
0D53 7F05  MOV R7, #05H
0D55 1216FF LCALL 16FFH
0D58 8F0F  MOV 0FH, R7
  ■706:        day = read_random(DS3231_DAY);
0D5A 7F04  MOV R7, #04H
0D5C 1216FF LCALL 16FFH
0D5F 8F13  MOV 13H, R7
  ■707:        week = read_random(DS3231_WEEK);
0D61 7F03  MOV R7, #03H
0D63 1216FF LCALL 16FFH
0D66 8F10  MOV 10H, R7
  ■708:          hour = read_random(DS3231_HOUR);
0D68 7F02  MOV R7, #02H
0D6A 1216FF LCALL 16FFH
0D6D 8F14  MOV 14H, R7
  ■709:          minute = read_random(DS3231_MINUTE) ;
0D6F 7F01  MOV R7, #01H
0D71 1216FF LCALL 16FFH
0D74 8F0D  MOV 0DH, R7
  ■710:          second = read_random(DS3231_SECOND);
  ■711:  //       TH3231= get_Temperature();
  ■712:
0D76 E4   CLR A
0D77 FF   MOV R7, A
0D78 1216FF LCALL 16FFH
0D7B 8F08  MOV 08H, R7
  ■713:          OLED_P8x16Str(0,0,2);      //顯示 2
0D7D 7B02  MOV R3, #02H
0D7F E4   CLR A
0D80 FD   MOV R5, A
0D81 FC   MOV R4, A
0D82 FF   MOV R7, A
0D83 1215E1 LCALL 15E1H
  ■714:          OLED_P8x16Str(8,0,0);      //顯示 0
0D86 E4   CLR A
0D87 FB   MOV R3, A
0D88 FD   MOV R5, A
0D89 FC   MOV R4, A
0D8A 7F08  MOV R7, #08H
0D8C 1215E1 LCALL 15E1H
  ■715:          if(disflag==4 && flag==0) //校時是 的候年閃爍
0D8F E518  MOV A, 18H
0D91 B4040A CJNE A, #04H, 0D9EH
0D94 200207 JB  02H, 0D9EH
  ■716:          {   
  ■717:              OLED_P8x16Str(16,0,12); //不顯
0D97 7B0C  MOV R3, #0CH
0D99 120EBC LCALL 0EBCH
  ■718:              OLED_P8x16Str(24,0,12); //不顯
  ■719:          }
  ■720:          else
0D9C 800C  SJMP 0DAAH
  ■721:          {
  ■722:              OLED_P8x16Str(16,0,year/10); //顯示年 十位
0D9E 1214F5 LCALL 14F5H
0DA1 FB   MOV R3, A
0DA2 120EBC LCALL 0EBCH
  ■723:              OLED_P8x16Str(24,0,year%10); //顯示年 個位
  ■724:
0DA5 1214F5 LCALL 14F5H
0DA8 ABF0  MOV R3, 0F0H
0DAA 7F18  MOV R7, #18H
0DAC 120EFC LCALL 0EFCH
  ■725:          }   
  ■726:          
  ■727:          OLED_P8x16Str(32,0,11);      //顯示 -
  ■728:
0DAF 7F20  MOV R7, #20H
0DB1 120ED8 LCALL 0ED8H
  ■729:          if(disflag==5 && flag==0) //校時 的時候月閃爍
0DB4 E518  MOV A, 18H
0DB6 B40509 CJNE A, #05H, 0DC2H
0DB9 200206 JB  02H, 0DC2H
  ■730:          {   
  ■731:              OLED_P8x16Str(40,0,12); //不顯
0DBC 0B   INC R3
0DBD 120EC5 LCALL 0EC5H
  ■732:              OLED_P8x16Str(48,0,12); //不顯
  ■733:          }
  ■734:          else
0DC0 8010  SJMP 0DD2H
  ■735:          {
  ■736:              OLED_P8x16Str(40,0,month/10); //顯示 月十位
0DC2 E50F  MOV A, 0FH
0DC4 1214F7 LCALL 14F7H
0DC7 FB   MOV R3, A
0DC8 120EC5 LCALL 0EC5H
  ■737:              OLED_P8x16Str(48,0,month%10); //顯示 月個位
  ■738:
0DCB E50F  MOV A, 0FH
0DCD 1214F7 LCALL 14F7H
0DD0 ABF0  MOV R3, 0F0H
0DD2 7F30  MOV R7, #30H
0DD4 120EFC LCALL 0EFCH
  ■739:          }
  ■740:          OLED_P8x16Str(56,0,11);     //顯示 -
  ■741:
0DD7 7F38  MOV R7, #38H
0DD9 120ED8 LCALL 0ED8H
  ■742:          if(disflag==6 && flag==0) //校時的時候日閃爍
0DDC E518  MOV A, 18H
0DDE B40609 CJNE A, #06H, 0DEAH
0DE1 200206 JB  02H, 0DEAH
  ■743:          {
  ■744:              OLED_P8x16Str(64,0,12); //不顯
0DE4 0B   INC R3
0DE5 120EEB LCALL 0EEBH
  ■745:              OLED_P8x16Str(72,0,12); //不顯
  ■746:          }
  ■747:          else
0DE8 8010  SJMP 0DFAH
  ■748:          {
  ■749:              OLED_P8x16Str(64,0,day/10);   //顯示 日十位
0DEA E513   MOV A, 13H
0DEC 1214F7 LCALL 14F7H
0DEF FB   MOV R3, A
0DF0 120EEB LCALL 0EEBH
  ■750:              OLED_P8x16Str(72,0,day%10);   //顯示 日個位
  ■751:
0DF3 E513   MOV A, 13H
0DF5 1214F7 LCALL 14F7H
0DF8 ABF0  MOV R3, 0F0H
0DFA E4   CLR A
0DFB FD   MOV R5, A
0DFC FC   MOV R4, A
0DFD 7F48  MOV R7, #48H
0DFF 1215E1 LCALL 15E1H
  ■752:          }
  ■753:          
  ■754:          OLED_hzStr(80,0,11);  // 顯示‘星’
0E02 7B0B  MOV R3, #0BH
0E04 7F50  MOV R7, #50H
0E06 120F03 LCALL 0F03H
  ■755:          OLED_hzStr(96,0,12);  // 顯示“期”
  ■756:
0E09 7B0C  MOV R3, #0CH
0E0B 7F60  MOV R7, #60H
0E0D 120F03 LCALL 0F03H
  ■757:          if(disflag==7 && flag==0) //校時的時候星期閃爍
0E10 E518  MOV A, 18H
0E12 B40707 CJNE A, #07H, 0E1CH
0E15 200204 JB  02H, 0E1CH
  ■758:          {
  ■759:              OLED_hzStr(112,0,13); //不顯
0E18 7B0D  MOV R3, #0DH
  ■760:          }
  ■761:          else
0E1A 800A  SJMP 0E26H
  ■762:          {
  ■763:              if(week==7) week=0;    //如果星期等于7,顯示“日”
0E1C E510  MOV A, 10H
0E1E B40703 CJNE A, #07H, 0E24H
0E21 E4   CLR A
0E22 F510  MOV 10H, A
  ■764:              OLED_hzStr(112,0,week);//顯示 星期
  ■765:
0E24 AB10  MOV R3, 10H
0E26 E4   CLR A
0E27 FD   MOV R5, A
0E28 FC   MOV R4, A
0E29 7F70  MOV R7, #70H
0E2B 12162C LCALL 162CH
  ■766:          }
  ■767:      
  ■768:          if(disflag==1 && flag==0) //校時的時候小時閃爍
0E2E E518  MOV A, 18H
0E30 B4010A CJNE A, #01H, 0E3DH
0E33 200207 JB  02H, 0E3DH
  ■769:          {
  ■770:              OLED_P32x64Str(0,2,11); //不顯
0E36 7B0B  MOV R3, #0BH
0E38 120F0A LCALL 0F0AH
  ■771:              OLED_P32x64Str(16,2,11); //不顯
  ■772:          }
  ■773:          else
0E3B 8010  SJMP 0E4DH
  ■774:          {
  ■775:              OLED_P32x64Str(0,2,hour/10);
0E3D E514  MOV A, 14H
0E3F 1214F7 LCALL 14F7H
0E42 FB   MOV R3, A
0E43 120F0A LCALL 0F0AH
  ■776:              OLED_P32x64Str(16,2,hour%10);
0E46 E514  MOV A, 14H
0E48 1214F7 LCALL 14F7H
0E4B ABF0  MOV R3, 0F0H
0E4D 7F10  MOV R7, #10H
0E4F 120EF4 LCALL 0EF4H
  ■777:          }
  ■778:      
  ■779:  //       if(shan_count >= 50 && disflag==0)    //正常走時,如果shan_count>=50 ,冒號閃爍晃眼,將其屏蔽
  ■780:          OLED_P32x64Str(32,2,10);             //就顯示“:”號
  ■781:  //       else OLED_P32x64Str(32,2,11);      //否則不顯冒號
  ■782:
0E52 7F20  MOV R7, #20H
0E54 120ECE LCALL 0ECEH
  ■783:          if(disflag==2 && flag==0) //校時的時候分閃爍
0E57 E518  MOV A, 18H
0E59 B40209 CJNE A, #02H, 0E65H
0E5C 200206 JB  02H, 0E65H
  ■784:          {
  ■785:              OLED_P32x64Str(48,2,11);    //不顯
0E5F 0B   INC R3
0E60 120EB2 LCALL 0EB2H
  ■786:              OLED_P32x64Str(64,2,11);    //不顯
  ■787:          }
  ■788:          else
0E63 8010  SJMP 0E75H
  ■789:          {
  ■790:              OLED_P32x64Str(48,2,minute/10); //顯示分十位
0E65 E50D  MOV A, 0DH
0E67 1214F7 LCALL 14F7H
0E6A FB   MOV R3, A
0E6B 120EB2 LCALL 0EB2H
  ■791:              OLED_P32x64Str(64,2,minute%10); //顯示分個位
  ■792:
0E6E E50D  MOV A, 0DH
0E70 1214F7 LCALL 14F7H
0E73 ABF0  MOV R3, 0F0H
0E75 7F40  MOV R7, #40H
0E77 120EF4 LCALL 0EF4H
  ■793:          }
  ■794:      
  ■795:      
  ■796:  //       if(shan_count >= 50 && disflag==0)   //正常走時,如果shan_count>=50
  ■797:          OLED_P32x64Str(80,2,10);            //就顯示“:”號
  ■798:  //       else OLED_P32x64Str(80,2,11);      //否則不顯冒號
  ■799:
0E7A 7F50  MOV R7, #50H
0E7C 120ECE LCALL 0ECEH
  ■800:          if(disflag==3 && flag==0) //校時的時候秒閃爍
0E7F E518  MOV A, 18H
0E81 B40309 CJNE A, #03H, 0E8DH
0E84 200206 JB  02H, 0E8DH
  ■801:          {
  ■802:              OLED_P32x64Str(96,2,11);    //不顯
0E87 0B   INC R3
0E88 120EE1 LCALL 0EE1H
  ■803:              OLED_P32x64Str(112,2,11);    //不顯
  ■804:          }
  ■805:          else
0E8B 8010  SJMP 0E9DH
  ■806:          {
  ■807:              OLED_P32x64Str(96,2,second/10); //顯示秒十位
0E8D E508  MOV A, 08H
0E8F 1214F7 LCALL 14F7H
0E92 FB   MOV R3, A
0E93 120EE1 LCALL 0EE1H
  ■808:              OLED_P32x64Str(112,2,second%10); //顯示秒個位
  ■809:
0E96 E508  MOV A, 08H
0E98 1214F7 LCALL 14F7H
0E9B ABF0  MOV R3, 0F0H
0E9D 7D02  MOV R5, #02H
0E9F 7C00  MOV R4, #00H
0EA1 7F70  MOV R7, #70H
0EA3 121469 LCALL 1469H
  ■810:          }
  ■811:      
  ■812:  //     OLED_P8x16Str(80,6,13);         //顯示溫度圖標(biāo)
  ■813:  //     if(TH3231/10 > 0)
  ■814:  //     OLED_P8x16Str(96,6,TH3231/10); //顯示溫度十位
  ■815:  //     else
  ■816:  //     OLED_P8x16Str(96,6,12);         //溫度十位不顯
  ■817:  //     OLED_P8x16Str(104,6,TH3231%10); //顯示溫度個位
  ■818:  //     OLED_hzStr(112,6,14);    //顯示℃符號
  ■819:      
  ■820:          get_Temperature();
  ■821:
0EA6 121296 LCALL 1296H
  ■822:        display_nl();     //顯示農(nóng)歷
  ■823:
0EA9 1207F9 LCALL 07F9H
  ■824:        KEY();     //按鍵程序
  ■825:
0EAC 121565 LCALL 1565H
  ■826:      }
0EAF 020D4C LJMP 0D4CH
  ■827:  }
  ■828     
  ■829     /**************定時器0 中斷函數(shù)******************/
  ■830
0EB2 7D02  MOV R5, #02H
0EB4 7C00  MOV R4, #00H
0EB6 7F30  MOV R7, #30H
0EB8 121469 LCALL 1469H
0EBB 22   RET
0EBC E4   CLR A
0EBD FD   MOV R5, A
0EBE FC   MOV R4, A
0EBF 7F10  MOV R7, #10H
0EC1 1215E1 LCALL 15E1H
0EC4 22   RET
0EC5 E4   CLR A
0EC6 FD   MOV R5, A
0EC7 FC   MOV R4, A
0EC8 7F28  MOV R7, #28H
0ECA 1215E1 LCALL 15E1H
0ECD 22   RET
0ECE 7B0A  MOV R3, #0AH
0ED0 7D02  MOV R5, #02H
0ED2 7C00  MOV R4, #00H
0ED4 121469 LCALL 1469H
0ED7 22   RET
0ED8 7B0B  MOV R3, #0BH
0EDA E4   CLR A
0EDB FD   MOV R5, A
0EDC FC   MOV R4, A
0EDD 1215E1 LCALL 15E1H
0EE0 22   RET
0EE1 7D02  MOV R5, #02H
0EE3 7C00  MOV R4, #00H
0EE5 7F60  MOV R7, #60H
0EE7 121469 LCALL 1469H
0EEA 22   RET
0EEB E4   CLR A
0EEC FD   MOV R5, A
0EED FC   MOV R4, A
0EEE 7F40  MOV R7, #40H
0EF0 1215E1 LCALL 15E1H
0EF3 22   RET
0EF4 7D02  MOV R5, #02H
0EF6 7C00  MOV R4, #00H
0EF8 121469 LCALL 1469H
0EFB 22   RET
0EFC E4   CLR A
0EFD FD   MOV R5, A
0EFE FC   MOV R4, A
0EFF 1215E1 LCALL 15E1H
0F02 22   RET
0F03 E4   CLR A
0F04 FD   MOV R5, A
0F05 FC   MOV R4, A
0F06 12162C LCALL 162CH
0F09 22   RET
0F0A 7D02  MOV R5, #02H
0F0C 7C00  MOV R4, #00H
0F0E E4   CLR A
0F0F FF   MOV R7, A
0F10 121469 LCALL 1469H
0F13 22   RET
  ■170:
0F14 8F21  MOV 21H, R7
0F16 8B22  MOV 22H, R3
0F18 AA05  MOV R2, 05H
  ■171     void Ack_I2C(bit a)
  ■172     {
  ■173:      SDA   =    a; 
  ■174:    SCL=1;          
  ■175:    Delay5US();       //時鐘低電平周期大于4us  
  ■176:    SCL=0;         //清時鐘線,鉗住I2C總線以便繼續(xù)接收
  ■177:    Delay5US(); 
  ■178:  }                     
  ■179
0F1A EF   MOV A, R7
0F1B 75F003 MOV 0F0H, #03H
0F1E A4   MUL AB
0F1F 85F027 MOV 27H, 0F0H
0F22 F528  MOV 28H, A
  ■180     uchar write_byte(uchar addr, uchar write_data)
0F24 24C0  ADD A, #0C0H
0F26 F582  MOV 82H, A
0F28 7406  MOV A, #06H
0F2A 3527  ADDC A, 27H
0F2C F583  MOV 83H, A
0F2E E4   CLR A
0F2F 93   MOVC A, @A+DPTR
0F30 FE   MOV R6, A
0F31 5460  ANL A, #60H
0F33 FB   MOV R3, A
  ■181:     {
  ■182:    IIC_Start();
0F34 7805  MOV R0, #05H
0F36 FF   MOV R7, A
0F37 08   INC R0
0F38 8001  SJMP 0F3BH
0F3A 03   RR  A
0F3B D8FD  DJNZ R0, 0F3AH
0F3D FB   MOV R3, A
  ■183:    SendByte(DS3231_WriteAddress);
  ■184:    if (ack == 0)
0F3E EE   MOV A, R6
0F3F 541F  ANL A, #1FH
0F41 F9   MOV R1, A
  ■185:      return 0;
0F42 BB0105 CJNE R3, #01H, 0F4AH
0F45 14   DEC A
0F46 F523  MOV 23H, A
0F48 8005  SJMP 0F4FH
  ■186:   
  ■187:    SendByte(addr);
0F4A E9   MOV A, R1
0F4B 241E  ADD A, #1EH
0F4D F523  MOV 23H, A
  ■188:    if (ack == 0)
0F4F EA   MOV A, R2
0F50 C3   CLR C
0F51 940A  SUBB A, #0AH
0F53 EA   MOV A, R2
0F54 500B  JNC 0F61H
0F56 9007E9 MOV DPTR, #07E9H
0F59 93   MOVC A, @A+DPTR
0F5A 2522  ADD A, 22H
0F5C FF   MOV R7, A
0F5D E4   CLR A
0F5E 33   RLC A
0F5F 8015  SJMP 0F76H
  ■189:      return 0;
  ■190:
0F61 25E0  ADD A, 0E0H
0F63 24DF  ADD A, #0DFH
0F65 F582  MOV 82H, A
0F67 E4   CLR A
0F68 3407  ADDC A, #07H
0F6A F583  MOV 83H, A
0F6C 7401  MOV A, #01H
0F6E 93   MOVC A, @A+DPTR
0F6F 2522  ADD A, 22H
0F71 FF   MOV R7, A
0F72 E4   CLR A
0F73 93   MOVC A, @A+DPTR
0F74 3400  ADDC A, #00H
0F76 CF   XCH A, R7
0F77 24FF  ADD A, #0FFH
0F79 F526  MOV 26H, A
0F7B EF   MOV A, R7
0F7C 34FF  ADDC A, #0FFH
0F7E F525  MOV 25H, A
  ■191:    SendByte(write_data);
0F80 EA   MOV A, R2
0F81 D3   SETB C
0F82 9402  SUBB A, #02H
0F84 400E  JC  0F94H
0F86 E521  MOV A, 21H
0F88 5403  ANL A, #03H
0F8A 7008  JNZ 0F94H
  ■192:    if (ack == 0)
  ■193:      return 0;
  ■194:   
  ■195:    IIC_Stop();
0F8C 0526  INC 26H
0F8E E526  MOV A, 26H
0F90 7002  JNZ 0F94H
0F92 0525  INC 25H
  ■196:    Delay5US();
0F94 AF23  MOV R7, 23H
0F96 121554 LCALL 1554H
0F99 4055  JC  0FF0H
  ■197:    Delay5US();   
  ■198:    return 1;
0F9B 12153F LCALL 153FH
0F9E 7A01  MOV R2, #01H
  ■199:  }
0FA0 752401 MOV 24H, #01H
  ■200
0FA3 1214FD LCALL 14FDH
  ■201     uchar read_current()
0FA6 C205  CLR 05H
  ■202     {
0FA8 200404 JB  04H, 0FAFH
0FAB 7B1D  MOV R3, #1DH
0FAD 8002  SJMP 0FB1H
  ■203:    uchar read_data;
0FAF 7B1E  MOV R3, #1EH
  ■204:    IIC_Start();
0FB1 74BE  MOV A, #0BEH
0FB3 2528  ADD A, 28H
0FB5 F582  MOV 82H, A
0FB7 7406  MOV A, #06H
0FB9 3527  ADDC A, 27H
  ■205:    SendByte(DS3231_ReadAddress);
0FBB 121533 LCALL 1533H
0FBE 8001  SJMP 0FC1H
0FC0 03   RR  A
0FC1 D8FD  DJNZ R0, 0FC0H
0FC3 F9   MOV R1, A
  ■206:    if(ack==0)
0FC4 EB   MOV A, R3
0FC5 FF   MOV R7, A
0FC6 121554 LCALL 1554H
0FC9 4020  JC  0FEBH
  ■207:      return(0);      
  ■208:    read_data = RcvByte();
0FCB 12153F LCALL 153FH
0FCE 0524  INC 24H
  ■209:    Ack_I2C(1);
0FD0 EA   MOV A, R2
0FD1 B50108 CJNE A, 01H, 0FDCH
  ■210:    IIC_Stop();
  ■211:    return read_data;
0FD4 B205  CPL 05H
  ■212:  }
0FD6 200504 JB  05H, 0FDDH
0FD9 0A   INC R2
  ■213
0FDA 8001  SJMP 0FDDH
  ■214     uchar read_random(uchar random_addr)
0FDC 0A   INC R2
  ■215     {
0FDD 1214FD LCALL 14FDH
  ■216:    uchar Tmp;
0FE0 200404 JB  04H, 0FE7H
0FE3 7B1D  MOV R3, #1DH
0FE5 80DD  SJMP 0FC4H
  ■217:      IIC_Start();
0FE7 7B1E  MOV R3, #1EH
  ■218:    SendByte(DS3231_WriteAddress);
0FE9 80D9  SJMP 0FC4H
  ■219:    if(ack==0)
0FEB E526  MOV A, 26H
  ■220:      return(0);     
  ■221:    SendByte(random_addr);
0FED 021059 LJMP 1059H
  ■222:    if(ack==0)
  ■223:      return(0);
  ■224:      Tmp=read_current();
0FF0 C3   CLR C
0FF1 E523  MOV A, 23H
0FF3 9526  SUBB A, 26H
0FF5 F523  MOV 23H, A
  ■225:      if(random_addr==DS3231_HOUR)
0FF7 74FD  MOV A, #0FDH
0FF9 2528  ADD A, 28H
0FFB F528  MOV 28H, A
0FFD 74FF  MOV A, #0FFH
0FFF 3527  ADDC A, 27H
1001 F527  MOV 27H, A
  ■226:          Tmp&=0x3f;
1003 7A0C  MOV R2, #0CH
  ■227:
1005 FE   MOV R6, A
1006 74BE  MOV A, #0BEH
1008 2528  ADD A, 28H
100A F582  MOV 82H, A
100C 7406  MOV A, #06H
100E 3E   ADDC A, R6
  ■228:    return(BCD2HEX(Tmp));//都轉(zhuǎn)10進制輸出
100F 121533 LCALL 1533H
1012 8001  SJMP 1015H
1014 03   RR  A
1015 D8FD  DJNZ R0, 1014H
1017 F9   MOV R1, A
  ■229:  }
1018 7005  JNZ 101FH
101A 75240C MOV 24H, #0CH
101D 8003  SJMP 1022H
  ■230
101F 75240D MOV 24H, #0DH
  ■231     /***********************/
1022 C205  CLR 05H
  ■232     uchar read_random1(uchar random_addr) //這個是讀溫度函數(shù)
1024 1214FD LCALL 14FDH
  ■233     {
1027 200404 JB  04H, 102EH
102A 7B1D  MOV R3, #1DH
102C 8002  SJMP 1030H
  ■234:    uchar Tmp;
102E 7B1E  MOV R3, #1EH
  ■235:      write_byte(0x0e,0x20);//0x0e寄存器的CONV位置1開啟溫度轉(zhuǎn)換,要這句,溫度實時刷新,這句不要,溫度要64s才刷新1次
1030 E523  MOV A, 23H
1032 D3   SETB C
1033 9B   SUBB A, R3
1034 401F  JC  1055H
  ■236:      IIC_Start();
  ■237:    SendByte(DS3231_WriteAddress);
1036 E523  MOV A, 23H
1038 9B   SUBB A, R3
1039 F523  MOV 23H, A
  ■238:    if(ack==0)
103B 1524  DEC 24H
  ■239:      return(0);
103D 200501 JB  05H, 1041H
1040 1A   DEC R2
  ■240:    SendByte(random_addr);
1041 EA   MOV A, R2
1042 B50102 CJNE A, 01H, 1047H
1045 B205  CPL 05H
  ■241:    if(ack==0)
1047 1214FD LCALL 14FDH
  ■242:      return(0);
104A 200404 JB  04H, 1051H
104D 7B1D  MOV R3, #1DH
104F 80DF  SJMP 1030H
  ■243:      Tmp=read_current();
1051 7B1E  MOV R3, #1EH
  ■244:      return Tmp;
1053 80DB  SJMP 1030H
  ■245:  }
1055 C3   CLR C
1056 EB   MOV A, R3
1057 9523  SUBB A, 23H
1059 04   INC A
105A F522  MOV 22H, A
  ■246     
  ■247     void ModifyTime(uchar address,uchar num)
105C 852116 MOV 16H, 21H
  ■248     {
105F 8A15  MOV 15H, R2
  ■249:    uchar temp=0;
1061 852217 MOV 17H, 22H
  ■250:      if(address>6 && address <0) return;
1064 22   RET
  ■467     void Set(unsigned char sel,unsigned char selby)
1065 8D21  MOV 21H, R5
  ■468     {
  ■469:    unsigned char address;
  ■470:      char item;
  ■471:    unsigned char max,min;
  ■472:  
  ■473:    
  ■474:    if(sel==1) {address=DS3231_HOUR; max=23;min=0;}  //小時
1067 BF0106 CJNE R7, #01H, 1070H
106A 7902  MOV R1, #02H
106C 7A17  MOV R2, #17H
106E E4   CLR A
106F FB   MOV R3, A
  ■475:      if(sel==2) {address=DS3231_MINUTE; max=59;min=0;}  //分鐘
1070 BF0206 CJNE R7, #02H, 1079H
1073 7901  MOV R1, #01H
1075 7A3B  MOV R2, #3BH
1077 E4   CLR A
1078 FB   MOV R3, A
  ■476:    if(sel==3) {address=DS3231_SECOND; max=59;min=0;}  //秒
  ■477  1
1079 BF0305 CJNE R7, #03H, 1081H
107C E4   CLR A
107D F9   MOV R1, A
107E 7A3B  MOV R2, #3BH
1080 FB   MOV R3, A
  ■478:    if(sel==4) {address=DS3231_YEAR; max=99;min=0;}  //年
1081 BF0406 CJNE R7, #04H, 108AH
1084 7906  MOV R1, #06H
1086 7A63  MOV R2, #63H
1088 E4   CLR A
1089 FB   MOV R3, A
  ■479:      if(sel==5) {address=DS3231_MONTH; max=12;min=1;}  //月
108A BF0506 CJNE R7, #05H, 1093H
108D 7905  MOV R1, #05H
108F 7A0C  MOV R2, #0CH
1091 7B01  MOV R3, #01H
  ■480:      if(sel==6)                      //日
1093 EF   MOV A, R7
1094 6406  XRL A, #06H
1096 6003  JZ  109BH
1098 021164 LJMP 1164H
  ■481:      {
  ■482:          if(month==2)
109B E50F  MOV A, 0FH
109D B40222 CJNE A, #02H, 10C2H
  ■483:          {
  ■484:              if(month == 2 && year % 4 != 0)
10A0 B40216 CJNE A, #02H, 10B9H
10A3 E511  MOV A, 11H
10A5 75F004 MOV 0F0H, #04H
10A8 120D13 LCALL 0D13H
10AB AEF0  MOV R6, 0F0H
10AD EE   MOV A, R6
10AE 6009  JZ  10B9H
  ■485:              {
  ■486  4                    {address=DS3231_DAY; max=28;min=1;}
10B0 7904  MOV R1, #04H
10B2 7A1C  MOV R2, #1CH
10B4 7B01  MOV R3, #01H
  ■487  4               }
  ■488:              else
10B6 021164 LJMP 1164H
  ■489:              {
  ■490  4                    {address=DS3231_DAY; max=27;min=1;}
10B9 7904  MOV R1, #04H
10BB 7A1B  MOV R2, #1BH
10BD 7B01  MOV R3, #01H
  ■491  4               }
  ■492:          }
  ■493:          else
10BF 021164 LJMP 1164H
  ■494:          {
  ■495:              if(month==1|month==3|month==5|month==7|month==8|month==10|month==12)
10C2 E50F  MOV A, 0FH
10C4 B40304 CJNE A, #03H, 10CBH
10C7 7E01  MOV R6, #01H
10C9 8002  SJMP 10CDH
10CB 7E00  MOV R6, #00H
10CD E50F  MOV A, 0FH
10CF B40104 CJNE A, #01H, 10D6H
10D2 7D01  MOV R5, #01H
10D4 8002  SJMP 10D8H
10D6 7D00  MOV R5, #00H
10D8 ED   MOV A, R5
10D9 4E   ORL A, R6
10DA FE   MOV R6, A
10DB E50F  MOV A, 0FH
10DD B40504 CJNE A, #05H, 10E4H
10E0 7D01  MOV R5, #01H
10E2 8002  SJMP 10E6H
10E4 7D00  MOV R5, #00H
10E6 ED   MOV A, R5
10E7 4E   ORL A, R6
10E8 FE   MOV R6, A
10E9 E50F  MOV A, 0FH
10EB B40704 CJNE A, #07H, 10F2H
10EE 7D01  MOV R5, #01H
10F0 8002  SJMP 10F4H
10F2 7D00  MOV R5, #00H
10F4 ED   MOV A, R5
10F5 4E   ORL A, R6
10F6 FE   MOV R6, A
10F7 E50F  MOV A, 0FH
10F9 B40804 CJNE A, #08H, 1100H
10FC 7D01  MOV R5, #01H
10FE 8002  SJMP 1102H
1100 7D00  MOV R5, #00H
1102 ED   MOV A, R5
1103 4E   ORL A, R6
1104 FE   MOV R6, A
1105 E50F  MOV A, 0FH
1107 B40A04 CJNE A, #0AH, 110EH
110A 7D01  MOV R5, #01H
110C 8002  SJMP 1110H
110E 7D00  MOV R5, #00H
1110 ED   MOV A, R5
1111 4E   ORL A, R6
1112 FE   MOV R6, A
1113 E50F  MOV A, 0FH
1115 B40C04 CJNE A, #0CH, 111CH
1118 7D01  MOV R5, #01H
111A 8002  SJMP 111EH
111C 7D00  MOV R5, #00H
111E ED   MOV A, R5
111F 4E   ORL A, R6
1120 6006  JZ  1128H
  ■496:              {  
  ■497  4                    {address=DS3231_DAY; max=31;min=1;}
1122 7904  MOV R1, #04H
1124 7A1F  MOV R2, #1FH
1126 7B01  MOV R3, #01H
  ■498  4               }
  ■499:              if(month==4|month==6|month==9|month==11)
1128 E50F  MOV A, 0FH
112A B40604 CJNE A, #06H, 1131H
112D 7E01  MOV R6, #01H
112F 8002  SJMP 1133H
1131 7E00  MOV R6, #00H
1133 E50F  MOV A, 0FH
1135 B40404 CJNE A, #04H, 113CH
1138 7D01  MOV R5, #01H
113A 8002  SJMP 113EH
113C 7D00  MOV R5, #00H
113E ED   MOV A, R5
113F 4E   ORL A, R6
1140 FE   MOV R6, A
1141 E50F  MOV A, 0FH
1143 B40904 CJNE A, #09H, 114AH
1146 7D01  MOV R5, #01H
1148 8002  SJMP 114CH
114A 7D00  MOV R5, #00H
114C ED   MOV A, R5
114D 4E   ORL A, R6
114E FE   MOV R6, A
114F E50F  MOV A, 0FH
1151 B40B04 CJNE A, #0BH, 1158H
1154 7D01  MOV R5, #01H
1156 8002  SJMP 115AH
1158 7D00  MOV R5, #00H
115A ED   MOV A, R5
115B 4E   ORL A, R6
115C 6006  JZ  1164H
  ■500:              {  
  ■501:                    {address=DS3231_DAY; max=30;min=1;}
115E 7904  MOV R1, #04H
1160 7A1E  MOV R2, #1EH
1162 7B01  MOV R3, #01H
  ■502:               }
  ■503:          }
  ■504:      }
  ■505:    
  ■506:    
  ■507:    if(sel==7) {address=DS3231_WEEK; max=7; min=1;}  //星期
  ■508:  
1164 BF0706 CJNE R7, #07H, 116DH
1167 7903  MOV R1, #03H
1169 7A07  MOV R2, #07H
116B 7B01  MOV R3, #01H
  ■509:      item= read_random(address);
116D AF01  MOV R7, 01H
116F 1216FF LCALL 16FFH
1172 8F22  MOV 22H, R7
  ■510:    if (selby==0) item++; else item--;
1174 E521  MOV A, 21H
1176 7004  JNZ 117CH
1178 0522  INC 22H
117A 8002  SJMP 117EH
117C 1522  DEC 22H
  ■511:    if(item>max) item=min;
117E EA   MOV A, R2
117F FF   MOV R7, A
1180 AD22  MOV R5, 22H
1182 ED   MOV A, R5
1183 33   RLC A
1184 95E0  SUBB A, 0E0H
1186 FC   MOV R4, A
1187 D3   SETB C
1188 ED   MOV A, R5
1189 9F   SUBB A, R7
118A 7480  MOV A, #80H
118C F8   MOV R0, A
118D 6C   XRL A, R4
118E 98   SUBB A, R0
118F 4002  JC  1193H
1191 8B22  MOV 22H, R3
  ■512:    if(item<min) item=max;
  ■513:
1193 EB   MOV A, R3
1194 FF   MOV R7, A
1195 AD22  MOV R5, 22H
1197 ED   MOV A, R5
1198 33   RLC A
1199 95E0  SUBB A, 0E0H
119B FC   MOV R4, A
119C C3   CLR C
119D ED   MOV A, R5
119E 9F   SUBB A, R7
119F 7480  MOV A, #80H
11A1 F8   MOV R0, A
11A2 6C   XRL A, R4
11A3 98   SUBB A, R0
11A4 5002  JNC 11A8H
11A6 8A22  MOV 22H, R2
  ■514:    ModifyTime(address, item);
11A8 AF01  MOV R7, 01H
11AA AD22  MOV R5, 22H
11AC 0217BF LJMP 17BFH
  ■121:  }
  ■122     
  ■123     
11AF EF   MOV A, R7
11B0 14   DEC A
11B1 B40D00 CJNE A, #0DH, 11B4H
11B4 4003  JC  11B9H
11B6 021293 LJMP 1293H
11B9 9011C7 MOV DPTR, #11C7H
11BC 75F003 MOV 0F0H, #03H
11BF A4   MUL AB
11C0 C583  XCH A, 83H
11C2 25F0  ADD A, 0F0H
11C4 C583  XCH A, 83H
11C6 73   JMP @A+DPTR
11C7 0211EE LJMP 11EEH
11CA 0211FA LJMP 11FAH
11CD 021206 LJMP 1206H
11D0 021212 LJMP 1212H
11D3 02121E LJMP 121EH
11D6 02122A LJMP 122AH
11D9 021236 LJMP 1236H
11DC 021242 LJMP 1242H
11DF 02124E LJMP 124EH
11E2 02125A LJMP 125AH
11E5 021266 LJMP 1266H
11E8 021272 LJMP 1272H
11EB 02127E LJMP 127EH
  ■124     void SendByte(uchar c)
  ■125     {
  ■126:    uchar BitCnt;
11EE 12150C LCALL 150CH
11F1 20E303 JB  0E3H, 11F7H
11F4 7F00  MOV R7, #00H
11F6 22   RET
  ■127:
11F7 7F01  MOV R7, #01H
11F9 22   RET
  ■128:    for(BitCnt=0;BitCnt<8;BitCnt++)     //要傳送的數(shù)據(jù)長度為8位
  ■129:    {
11FA 12150C LCALL 150CH
11FD 20E203 JB  0E2H, 1203H
1200 7F00  MOV R7, #00H
1202 22   RET
  ■130:      if((c<<BitCnt)&0x80)
1203 7F01  MOV R7, #01H
1205 22   RET
  ■131:        SDA=1;             //判斷發(fā)送位
  ■132:      else
1206 12150C LCALL 150CH
1209 20E103 JB  0E1H, 120FH
120C 7F00  MOV R7, #00H
120E 22   RET
  ■133:        SDA=0;
120F 7F01  MOV R7, #01H
1211 22   RET
  ■134:      SCL=1;              //置時鐘線為高,通知被控器開始接收數(shù)據(jù)位
  ■135:      Delay5US();            //保證時鐘高電平周期大于4μs
1212 12150C LCALL 150CH
1215 20E003 JB  0E0H, 121BH
1218 7F00  MOV R7, #00H
121A 22   RET
  ■136:      SCL=0;
121B 7F01  MOV R7, #01H
121D 22   RET
  ■137:    }
  ■138:    SDA=1;                 //8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位
121E 1214E8 LCALL 14E8H
1221 20E703 JB  0E7H, 1227H
1224 7F00  MOV R7, #00H
1226 22   RET
  ■139:    SCL=1;
1227 7F01  MOV R7, #01H
1229 22   RET
  ■140:    Delay5US();
  ■141:    if(SDA==1)
122A 1214E8 LCALL 14E8H
122D 20E603 JB  0E6H, 1233H
1230 7F00  MOV R7, #00H
1232 22   RET
  ■142:      ack=0;
1233 7F01  MOV R7, #01H
1235 22   RET
  ■143:    else
  ■144:      ack=1;               //判斷是否接收到應(yīng)答信號
1236 1214E8 LCALL 14E8H
1239 20E503 JB  0E5H, 123FH
123C 7F00  MOV R7, #00H
123E 22   RET
  ■145:    SCL=0;
123F 7F01  MOV R7, #01H
1241 22   RET
  ■146:    Delay5US();
  ■147:  }
1242 1214E8 LCALL 14E8H
1245 20E403 JB  0E4H, 124BH
1248 7F00  MOV R7, #00H
124A 22   RET
  ■148
124B 7F01  MOV R7, #01H
124D 22   RET
  ■149     uchar RcvByte()
  ■150     {
124E 1214E8 LCALL 14E8H
1251 20E303 JB  0E3H, 1257H
1254 7F00  MOV R7, #00H
1256 22   RET
  ■151:    uchar retc;
1257 7F01  MOV R7, #01H
1259 22   RET
  ■152:    uchar BitCnt;
  ■153  1
125A 1214E8 LCALL 14E8H
125D 20E203 JB  0E2H, 1263H
1260 7F00  MOV R7, #00H
1262 22   RET
  ■154:    retc=0;
1263 7F01  MOV R7, #01H
1265 22   RET
  ■155:    SDA=1;              //置數(shù)據(jù)線為輸入方式
  ■156:    for(BitCnt=0;BitCnt<8;BitCnt++)
1266 1214E8 LCALL 14E8H
1269 20E103 JB  0E1H, 126FH
126C 7F00  MOV R7, #00H
126E 22   RET
  ■157:    {
126F 7F01  MOV R7, #01H
1271 22   RET
  ■158:      SCL=0;           //置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位   
  ■159:      Delay5US();         //時鐘低電平周期大于4.7μs
1272 1214E8 LCALL 14E8H
1275 20E003 JB  0E0H, 127BH
1278 7F00  MOV R7, #00H
127A 22   RET
  ■160:      SCL=1;           //置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效
127B 7F01  MOV R7, #01H
127D 22   RET
  ■161:      Delay5US();
  ■162:      retc=retc<<1;
127E 74C0  MOV A, #0C0H
1280 2D   ADD A, R5
1281 F582  MOV 82H, A
1283 7406  MOV A, #06H
1285 3C   ADDC A, R4
1286 F583  MOV 83H, A
1288 E4   CLR A
1289 93   MOVC A, @A+DPTR
128A 20E703 JB  0E7H, 1290H
128D 7F00  MOV R7, #00H
128F 22   RET
  ■163:      if(SDA==1)
1290 7F01  MOV R7, #01H
1292 22   RET
  ■164:        retc=retc+1;      //讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中
  ■165:      Delay5US();
1293 7F00  MOV R7, #00H
  ■166:    }
1295 22   RET
  ■652     void get_Temperature()  //溫度獲取 顯示
  ■653     {
  ■654:    uchar Tem_L;
  ■655:      uchar Tem_H;
  ■656:    Tem_H=read_random1(DS3231_TEMPERATUREH);  //溫度 高字節(jié) 整數(shù)部分
1296 7F11  MOV R7, #11H
1298 121743 LCALL 1743H
129B 8F22  MOV 22H, R7
  ■657:      Tem_L=read_random1(DS3231_TEMPERATUREL);     //溫度 低字節(jié) 小數(shù)部分
  ■658:      
129D 7F12  MOV R7, #12H
129F 121743 LCALL 1743H
12A2 8F21  MOV 21H, R7
  ■659:      Tem_L = (Tem_L>>6)*0.25*100;   //
  ■660:     
12A4 E521  MOV A, 21H
12A6 C4   SWAP A
12A7 13   RRC A
12A8 13   RRC A
12A9 5403  ANL A, #03H
12AB FC   MOV R4, A
12AC E4   CLR A
12AD 120C5E LCALL 0C5EH
12B0 E4   CLR A
12B1 FB   MOV R3, A
12B2 FA   MOV R2, A
12B3 79C8  MOV R1, #0C8H
12B5 7841  MOV R0, #41H
12B7 120B4E LCALL 0B4EH
12BA 120C92 LCALL 0C92H
12BD 8F21  MOV 21H, R7
  ■661:      OLED_hzStr(64,6,21);        //顯示溫度圖標(biāo) 大
  ■662:      
  ■663:      //Tem_H = 0xf7; //-13的補碼,測試用
  ■664:      //   Tem_H = 0xf7;  //-9的補碼,測試用
  ■665:      
12BF 7B15  MOV R3, #15H
12C1 7D06  MOV R5, #06H
12C3 7C00  MOV R4, #00H
12C5 7F40  MOV R7, #40H
12C7 12162C LCALL 162CH
  ■666:      if(!(Tem_H & 0x80))   //正溫度
12CA E522  MOV A, 22H
12CC 20E733 JB  0E7H, 1302H
  ■667:      {
  ■668:      
  ■669:          /********顯示溫度*********/
  ■670:          if(Tem_H/10 > 0)
12CF 75F00A MOV 0F0H, #0AH
12D2 84   DIV AB
12D3 FB   MOV R3, A
12D4 D3   SETB C
12D5 9400  SUBB A, #00H
12D7 4002  JC  12DBH
  ■671:              OLED_P8x16Str(80,6,Tem_H/10); //顯示溫度十位
  ■672:          else
12D9 8002  SJMP 12DDH
  ■673:              OLED_P8x16Str(80,6,12);      //否則溫度十位為0不顯示
12DB 7B0C  MOV R3, #0CH
12DD 121339 LCALL 1339H
  ■674:          OLED_P8x16Str(88,6,Tem_H%10); //顯示溫度個位
12E0 12155E LCALL 155EH
12E3 ABF0  MOV R3, 0F0H
12E5 121343 LCALL 1343H
  ■675:          OLED_P8x16Str(96,6,14);      //顯示小數(shù)點
12E8 7B0E  MOV R3, #0EH
12EA 7D06  MOV R5, #06H
12EC 7C00  MOV R4, #00H
12EE 7F60  MOV R7, #60H
12F0 1215E1 LCALL 15E1H
  ■676:          OLED_P8x16Str(104,6,Tem_L/10); //顯示溫度小數(shù)第1位
  ■677:  //       OLED_P8x16Str(112,6,Tem_L%10); //顯示溫度小數(shù)第2位
12F3 E521  MOV A, 21H
12F5 75F00A MOV 0F0H, #0AH
12F8 84   DIV AB
12F9 FB   MOV R3, A
12FA 7D06  MOV R5, #06H
12FC 7C00  MOV R4, #00H
12FE 7F68  MOV R7, #68H
  ■678:      }
  ■679:      else
1300 8029  SJMP 132BH
  ■680:      {
  ■681:          if(Tem_H & 0x80)     //負溫度
1302 E522  MOV A, 22H
1304 30E727 JNB 0E7H, 132EH
  ■682:          {
  ■683:              Tem_H =(~Tem_H)+1; //換算成實際溫度值
1307 F4   CPL A
1308 04   INC A
1309 F522  MOV 22H, A
  ■684:              OLED_P8x16Str(80,6,11); //顯示“-”負號
130B 7B0B  MOV R3, #0BH
130D 121339 LCALL 1339H
  ■685:              if(Tem_H/10 > 0)
1310 12155E LCALL 155EH
1313 FB   MOV R3, A
1314 D3   SETB C
1315 9400  SUBB A, #00H
1317 4002  JC  131BH
  ■686:                  OLED_P8x16Str(88,6,Tem_H/10);//顯示負溫度十位
  ■687:              else
1319 8002  SJMP 131DH
  ■688:                  OLED_P8x16Str(88,6,12); //負溫度十位為0不顯
131B 7B0C  MOV R3, #0CH
131D 121343 LCALL 1343H
  ■689:              OLED_P8x16Str(96,6,Tem_H%10);//顯示負溫度個位
1320 12155E LCALL 155EH
1323 ABF0  MOV R3, 0F0H
1325 7D06  MOV R5, #06H
1327 7C00  MOV R4, #00H
1329 7F60  MOV R7, #60H
132B 1215E1 LCALL 15E1H
  ■690:          }
  ■691:      }
  ■692:      OLED_hzStr(112,6,14);       //顯示℃符號
  ■693:  
132E 7B0E  MOV R3, #0EH
1330 7D06  MOV R5, #06H
1332 7C00  MOV R4, #00H
1334 7F70  MOV R7, #70H
1336 02162C LJMP 162CH
  ■694:  }
1339 7D06  MOV R5, #06H
133B 7C00  MOV R4, #00H
133D 7F50  MOV R7, #50H
133F 1215E1 LCALL 15E1H
1342 22   RET
1343 7D06  MOV R5, #06H
1345 7C00  MOV R4, #00H
1347 7F58  MOV R7, #58H
1349 1215E1 LCALL 15E1H
134C 22   RET
  ■325     void OLED_Init(void)
  ■326     {
  ■327:      Delay5US();//初始化之前的延時很重要!
134D 120003 LCALL 0003H
  ■328:      OLED_WrCmd(0xae);//--turn off oled panel
1350 7FAE  MOV R7, #0AEH
  ■329:      OLED_WrCmd(0x00);//---set low column address
  ■330:      OLED_WrCmd(0x10);//---set high column address
1352 121810 LCALL 1810H
  ■331:      OLED_WrCmd(0x40);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F)
1355 7F40  MOV R7, #40H
1357 12181A LCALL 181AH
  ■332:      OLED_WrCmd(0x81);//--set contrast control register
135A 7F81  MOV R7, #81H
135C 12181A LCALL 181AH
  ■333:      OLED_WrCmd(Brightness); // Set SEG Output Current Brightness
135F 7FCF  MOV R7, #0CFH
1361 12181A LCALL 181AH
  ■334:      OLED_WrCmd(0xa1);//--Set SEG/Column Mapping   0xa0左右反置 0xa1正常
1364 7FA1  MOV R7, #0A1H
1366 12181A LCALL 181AH
  ■335:      OLED_WrCmd(0xc8);//Set COM/Row Scan Direction  0xc0上下反置 0xc8正常
1369 7FC8  MOV R7, #0C8H
136B 12181A LCALL 181AH
  ■336:      OLED_WrCmd(0xa6);//--set normal display
136E 7FA6  MOV R7, #0A6H
1370 12181A LCALL 181AH
  ■337:      OLED_WrCmd(0xa8);//--set multiplex ratio(1 to 64)
1373 7FA8  MOV R7, #0A8H
1375 12181A LCALL 181AH
  ■338:      OLED_WrCmd(0x3f);//--1/64 duty
1378 7F3F  MOV R7, #3FH
137A 12181A LCALL 181AH
  ■339:      OLED_WrCmd(0xd3);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)
137D 7FD3  MOV R7, #0D3H
137F 12181A LCALL 181AH
  ■340:      OLED_WrCmd(0x00);//-not offset
1382 E4   CLR A
1383 FF   MOV R7, A
1384 12181A LCALL 181AH
  ■341:      OLED_WrCmd(0xd5);//--set display clock divide ratio/oscillator frequency
1387 7FD5  MOV R7, #0D5H
1389 12181A LCALL 181AH
  ■342:      OLED_WrCmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec
138C 7F80  MOV R7, #80H
138E 12181A LCALL 181AH
  ■343:      OLED_WrCmd(0xd9);//--set pre-charge period
1391 7FD9  MOV R7, #0D9H
1393 12181A LCALL 181AH
  ■344:      OLED_WrCmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
1396 7FF1  MOV R7, #0F1H
1398 12181A LCALL 181AH
  ■345:      OLED_WrCmd(0xda);//--set com pins hardware configuration
139B 7FDA  MOV R7, #0DAH
139D 12181A LCALL 181AH
  ■346:      OLED_WrCmd(0x12);
13A0 7F12  MOV R7, #12H
13A2 12181A LCALL 181AH
  ■347:      OLED_WrCmd(0xdb);//--set vcomh
13A5 7FDB  MOV R7, #0DBH
13A7 12181A LCALL 181AH
  ■348:      OLED_WrCmd(0x40);//Set VCOM Deselect Level
13AA 7F40  MOV R7, #40H
13AC 12181A LCALL 181AH
  ■349:      OLED_WrCmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)
13AF 7F20  MOV R7, #20H
13B1 12181A LCALL 181AH
  ■350:      OLED_WrCmd(0x02);//
13B4 7F02  MOV R7, #02H
13B6 12181A LCALL 181AH
  ■351:      OLED_WrCmd(0x8d);//--set Charge Pump enable/disable
13B9 7F8D  MOV R7, #8DH
13BB 12181A LCALL 181AH
  ■352:      OLED_WrCmd(0x14);//--set(0x10) disable
13BE 7F14  MOV R7, #14H
13C0 12181A LCALL 181AH
  ■353:      OLED_WrCmd(0xa4);// Disable Entire Display On (0xa4/0xa5)
13C3 7FA4  MOV R7, #0A4H
13C5 12181A LCALL 181AH
  ■354:      OLED_WrCmd(0xa6);// Disable Inverse Display On (0xa6/a7)
13C8 7FA6  MOV R7, #0A6H
13CA 12181A LCALL 181AH
  ■355:      OLED_WrCmd(0xaf);//--turn on oled panel
13CD 7FAF  MOV R7, #0AFH
13CF 12181A LCALL 181AH
  ■356:      OLED_Fill(0x00); //初始清屏
13D2 E4   CLR A
13D3 FF   MOV R7, A
13D4 1217DB LCALL 17DBH
  ■357:      OLED_Set_Pos(0,0);
13D7 E4   CLR A
13D8 FD   MOV R5, A
13D9 FF   MOV R7, A
13DA 021783 LJMP 1783H
=====================================
  ▲ 由 0000H 長轉(zhuǎn)移而來
13DD 787F  MOV R0, #7FH   ;立即數(shù)送寄存器
13DF E4   CLR A       ;A 清0
13E0 F6   MOV @R0, A    ;A 送間接Rn
13E1 D8FD  DJNZ R0, 13E0H  ;寄存器減1 不為0 轉(zhuǎn)移
13E3 758128 MOV 81H, #28H   ;立即數(shù)送直接字節(jié)  ※81H,SP 數(shù)據(jù)指針
13E6 021424 LJMP 1424H    ;長轉(zhuǎn)移 ---------實際轉(zhuǎn)移至 1423H
=====================================
13E9 020D43 LJMP 0D43H
13EC E4   CLR A
13ED 93   MOVC A, @A+DPTR
13EE A3   INC DPTR
13EF F8   MOV R0, A
13F0 E4   CLR A
13F1 93   MOVC A, @A+DPTR
13F2 A3   INC DPTR
13F3 4003  JC  13F8H
13F5 F6   MOV @R0, A
13F6 8001  SJMP 13F9H
13F8 F2   MOVX @R0, A
13F9 08   INC R0
13FA DFF4  DJNZ R7, 13F0H
13FC 8029  SJMP 1427H
13FE E4   CLR A
13FF 93   MOVC A, @A+DPTR
1400 A3   INC DPTR
1401 F8   MOV R0, A
1402 5407  ANL A, #07H
1404 240C  ADD A, #0CH
1406 C8   XCH A, R0
1407 C3   CLR C
1408 33   RLC A
1409 C4   SWAP A
140A 540F  ANL A, #0FH
140C 4420  ORL A, #20H
140E C8   XCH A, R0
140F 83   MOVC A, @A+PC
1410 4004  JC  1416H
1412 F4   CPL A
1413 56   ANL A, @R0
1414 8001  SJMP 1417H
1416 46   ORL A, @R0
1417 F6   MOV @R0, A
1418 DFE4   DJNZ R7, 13FEH
141A 800B  SJMP 1427H
141C 0102  AJMP 1002H
141E 04   INC A
141F 08   INC R0
1420 102040 JBC 20H, 1463H
=====================================
  ▲ 由 13E6H 長轉(zhuǎn)移而來
1423 8090  SJMP 13B5H   ;短轉(zhuǎn)移 ---------實際轉(zhuǎn)移至 1426H
=====================================
1425 18   DEC R0
=====================================
  ▲ 由 1423H 短轉(zhuǎn)移而來
1426 87E4  MOV 0E4H, @R1   ;間接Rn送直接字節(jié)
1428 7E01  MOV R6, #01H    ;立即數(shù)送寄存器
142A 93   MOVC A, @A+DPTR  ;A+DPTR尋址程序存貯字節(jié)送A
142B 60BC  JZ  13E9H     ;若A=0則轉(zhuǎn)移
142D A3   INC DPTR      ;數(shù)據(jù)指針加1
142E FF   MOV R7, A     ;A 送寄存器
142F 543F  ANL A, #3FH    ;立即數(shù)“與”到A
1431 30E509 JNB 0E5H, 143DH  ;若直接位=0 則轉(zhuǎn)移
1434 541F  ANL A, #1FH    ;立即數(shù)“與”到A
1436 FE   MOV R6, A     ;A 送寄存器
1437 E4   CLR A       ;A 清0
1438 93   MOVC A, @A+DPTR  ;A+DPTR尋址程序存貯字節(jié)送A
1439 A3   INC DPTR      ;數(shù)據(jù)指針加1
143A 6001  JZ  143DH     ;若A=0則轉(zhuǎn)移
143C 0E   INC R6       ;寄存器加1
143D CF   XCH A, R7     ;寄存器與A交換
143E 54C0  ANL A, #0C0H    ;立即數(shù)“與”到A
1440 25E0  ADD A, 0E0H    ;直接字節(jié)加到A
1442 60A8  JZ  13ECH     ;若A=0則轉(zhuǎn)移
1444 40B8  JC  13FEH     ;若C=1則轉(zhuǎn)移
1446 E4   CLR A       ;A 清0
1447 93   MOVC A, @A+DPTR  ;A+DPTR尋址程序存貯字節(jié)送A
1448 A3   INC DPTR      ;數(shù)據(jù)指針加1
1449 FA   MOV R2, A     ;A 送寄存器
144A E4   CLR A       ;A 清0
144B 93   MOVC A, @A+DPTR  ;A+DPTR尋址程序存貯字節(jié)送A
144C A3   INC DPTR      ;數(shù)據(jù)指針加1
144D F8   MOV R0, A     ;A 送寄存器
144E E4   CLR A       ;A 清0
144F 93   MOVC A, @A+DPTR  ;A+DPTR尋址程序存貯字節(jié)送A
1450 A3   INC DPTR      ;數(shù)據(jù)指針加1
1451 C8   XCH A, R0     ;寄存器與A交換
1452 C582  XCH A, 82H     ;直接字節(jié)與A交換
1454 C8   XCH A, R0     ;寄存器與A交換
1455 CA   XCH A, R2     ;寄存器與A交換
1456 C583  XCH A, 83H     ;直接字節(jié)與A交換
1458 CA   XCH A, R2     ;寄存器與A交換
1459 F0   MOVX @DPTR, A   ;A 送外部數(shù)據(jù)(16位地址)
145A A3   INC DPTR      ;數(shù)據(jù)指針加1
145B C8   XCH A, R0     ;寄存器與A交換
145C C582  XCH A, 82H     ;直接字節(jié)與A交換
145E C8   XCH A, R0     ;寄存器與A交換
145F CA   XCH A, R2     ;寄存器與A交換
1460 C583  XCH A, 83H     ;直接字節(jié)與A交換
1462 CA   XCH A, R2     ;寄存器與A交換
1463 DFE9  DJNZ R7, 144EH   ;寄存器減1 不為0 轉(zhuǎn)移
1465 DEE7  DJNZ R6, 144EH   ;寄存器減1 不為0 轉(zhuǎn)移
1467 80BE  SJMP 1427H     ;短轉(zhuǎn)移
  ■412     void OLED_P32x64Str(unsigned char x, y,unsigned char dat)
1469 8C21  MOV 21H, R4
146B 8D22  MOV 22H, R5
146D AA07  MOV R2, 07H
  ■413     {
  ■414:      unsigned char i=0;
146F E4   CLR A
1470 FC   MOV R4, A
  ■415:      unsigned int adder=64*dat;
  ■416:          
1471 EB   MOV A, R3
1472 75F040 MOV 0F0H, #40H
1475 A4   MUL AB
1476 85F023 MOV 23H, 0F0H
1479 F524  MOV 24H, A
  ■417:          if(x>128){x=0;y++;}
147B EA   MOV A, R2
147C D3   SETB C
147D 9480  SUBB A, #80H
147F 400A  JC  148BH
1481 E4   CLR A
1482 FA   MOV R2, A
1483 0522  INC 22H
1485 E522  MOV A, 22H
1487 7002  JNZ 148BH
1489 0521  INC 21H
  ■418:          OLED_Set_Pos(x,y);
148B AF02  MOV R7, 02H
148D AD22  MOV R5, 22H
148F 121783 LCALL 1783H
  ■419:          for(i=0;i<16;i++)
1492 E4   CLR A
1493 FC   MOV R4, A
  ■420:          {
  ■421:          OLED_WrDat(F32X64[adder]);
1494 121764 LCALL 1764H
  ■422:          adder += 1;
1497 0524  INC 24H
1499 E524  MOV A, 24H
149B 7002  JNZ 149FH
149D 0523  INC 23H
  ■423:          }
  ■424:       
149F 0C   INC R4
14A0 BC10F1 CJNE R4, #10H, 1494H
  ■425:          OLED_Set_Pos(x,y+1);
14A3 E522  MOV A, 22H
  ■426:          for(i=0;i<16;i++)
14A5 121519 LCALL 1519H
  ■427:          {
  ■428:          OLED_WrDat(F32X64[adder]);
14A8 121764 LCALL 1764H
  ■429:          adder += 1;
14AB 0524  INC 24H
14AD E524  MOV A, 24H
14AF 7002  JNZ 14B3H
14B1 0523  INC 23H
  ■430:          }
  ■431: 
14B3 0C   INC R4
14B4 BC10F1 CJNE R4, #10H, 14A8H
  ■432:          OLED_Set_Pos(x,y+2);
14B7 AF02  MOV R7, 02H
14B9 E522  MOV A, 22H
14BB 2402  ADD A, #02H
  ■433:          for(i=0;i<16;i++)
14BD 12151C LCALL 151CH
  ■434:          {
  ■435:          OLED_WrDat(F32X64[adder]);
14C0 121764 LCALL 1764H
  ■436:          adder += 1;
14C3 0524  INC 24H
14C5 E524  MOV A, 24H
14C7 7002  JNZ 14CBH
14C9 0523  INC 23H
  ■437:          }
  ■438: 
14CB 0C   INC R4
14CC BC10F1 CJNE R4, #10H, 14C0H
  ■439:          OLED_Set_Pos(x,y+3);
14CF AF02  MOV R7, 02H
14D1 E522  MOV A, 22H
14D3 2403  ADD A, #03H
  ■440:          for(i=0;i<16;i++)
14D5 12151C LCALL 151CH
  ■441:          {
  ■442:          OLED_WrDat(F32X64[adder]);
14D8 121764 LCALL 1764H
  ■443:          adder += 1;
14DB 0524  INC 24H
14DD E524  MOV A, 24H
14DF 7002  JNZ 14E3H
14E1 0523  INC 23H
  ■444:          }
  ■445:          //x+=1;
14E3 0C   INC R4
14E4 BC10F1 CJNE R4, #10H, 14D8H
  ■446:  }
14E7 22   RET
14E8 74BF  MOV A, #0BFH
14EA 2D   ADD A, R5
14EB F582  MOV 82H, A
14ED 7406  MOV A, #06H
14EF 3C   ADDC A, R4
14F0 F583  MOV 83H, A
14F2 E4   CLR A
14F3 93   MOVC A, @A+DPTR
14F4 22   RET
14F5 E511  MOV A, 11H
14F7 75F00A MOV 0F0H, #0AH
14FA 020D13 LJMP 0D13H
14FD AD28  MOV R5, 28H
14FF AC27  MOV R4, 27H
1501 AF24  MOV R7, 24H
1503 1211AF LCALL 11AFH
1506 EF   MOV A, R7
1507 24FF  ADD A, #0FFH
1509 9204  MOV 04H, C
150B 22   RET
150C 74BE  MOV A, #0BEH
150E 2D   ADD A, R5
150F F582  MOV 82H, A
1511 7406  MOV A, #06H
1513 3C   ADDC A, R4
1514 F583  MOV 83H, A
1516 E4   CLR A
1517 93   MOVC A, @A+DPTR
1518 22   RET
1519 AF02  MOV R7, 02H
151B 04   INC A
151C FD   MOV R5, A
151D 121783 LCALL 1783H
1520 E4   CLR A
1521 FC   MOV R4, A
1522 22   RET
1523 75F010 MOV 0F0H, #10H
1526 EB   MOV A, R3
1527 A4   MUL AB
1528 2C   ADD A, R4
1529 F582  MOV 82H, A
152B E4   CLR A
152C 35F0  ADDC A, 0F0H
152E F583  MOV 83H, A
1530 E582  MOV A, 82H
1532 22   RET
1533 F583  MOV 83H, A
1535 E4   CLR A
1536 93   MOVC A, @A+DPTR
1537 54F0  ANL A, #0F0H
1539 F9   MOV R1, A
153A 7804  MOV R0, #04H
153C FF   MOV R7, A
153D 08   INC R0
153E 22   RET
153F E526  MOV A, 26H
1541 9F   SUBB A, R7
1542 F526  MOV 26H, A
1544 E525  MOV A, 25H
1546 9E   SUBB A, R6
1547 F525  MOV 25H, A
1549 22   RET
154A AD07  MOV R5, 07H
154C 121875 LCALL 1875H
154F 7F78  MOV R7, #78H
1551 021678 LJMP 1678H
1554 7E00  MOV R6, #00H
1556 C3   CLR C
1557 E526  MOV A, 26H
1559 9F   SUBB A, R7
155A E525  MOV A, 25H
155C 9E   SUBB A, R6
155D 22   RET
155E E522  MOV A, 22H
1560 75F00A MOV 0F0H, #0AH
1563 84   DIV AB
1564 22   RET
  ■517     void KEY()
  ■518     {
  ■519:      if(a1==0)
1565 E509  MOV A, 09H
1567 701B  JNZ 1584H
  ■520:    {
  ■521:      if(KEY1==0)
1569 20B018 JB  0B0H, 1584H
  ■522:      {
  ■523:          Delay5US();
156C 120003 LCALL 0003H
  ■524:          if(KEY1==0)
156F 20B012 JB  0B0H, 1584H
  ■525:          {
  ■526:       
  ■527:           disflag++;
1572 0518  INC 18H
  ■528:           if(disflag>=8 || KEY4==0)
1574 E518  MOV A, 18H
1576 C3   CLR C
1577 9408  SUBB A, #08H
1579 5003  JNC 157EH
157B 20B303 JB  0B3H, 1581H
  ■529:           {
  ■530:               disflag=0;
  ■531:               
157E E4   CLR A
157F F518  MOV 18H, A
  ■532:           }
  ■533:         a1=1;
  ■534:       
1581 750901 MOV 09H, #01H
  ■535:           }
  ■536:      }
  ■537:    }
  ■538:    if(KEY1==1)
1584 30B003 JNB 0B0H, 158AH
  ■539:    {
  ■540:    a1=0;
1587 E4   CLR A
1588 F509  MOV 09H, A
  ■541:    }
  ■542:  /********************************/
  ■543:      if(a4==0)
158A E50C  MOV A, 0CH
158C 7013  JNZ 15A1H
  ■544:    {
  ■545:      if(KEY4==0)
158E 20B310 JB  0B3H, 15A1H
  ■546:      {
  ■547:          Delay5US();
1591 120003 LCALL 0003H
  ■548:          if(KEY4==0 && disflag!=0 )
1594 20B307 JB  0B3H, 159EH
1597 E518  MOV A, 18H
1599 6003  JZ  159EH
  ■549:          {
  ■550:               disflag=0;
159B E4   CLR A
159C F518  MOV 18H, A
  ■551:           }
  ■552:        a4=1;
159E 750C01 MOV 0CH, #01H
  ■553:      }
  ■554:    }
  ■555:    if(KEY4==1)
15A1 30B303 JNB 0B3H, 15A7H
  ■556:    {
  ■557:    a4=0;
15A4 E4   CLR A
15A5 F50C  MOV 0CH, A
  ■558:    }
  ■559:  
  ■560:  
  ■561:  /////////////////////// 
  ■562:      if(a2==0)
15A7 E50A  MOV A, 0AH
15A9 7012  JNZ 15BDH
  ■563:      {
  ■564:          if(KEY2==0)
15AB 20B10F JB  0B1H, 15BDH
  ■
565:          {
  ■566:              Delay5US();
15AE 120003 LCALL 0003H
  ■567:              if(KEY2==0)
15B1 20B109 JB  0B1H, 15BDH
  ■568:              {       
  ■569:                   Set(disflag,0);
15B4 FD   MOV R5, A
15B5 AF18  MOV R7, 18H
15B7 121065 LCALL 1065H
  ■570:                 a2=1;
15BA 750A01 MOV 0AH, #01H
  ■571:               }
  ■572:          }
  ■573:      }
  ■574:    if(KEY2==1)
15BD 30B103 JNB 0B1H, 15C3H
  ■575:    {
  ■576:        a2=0;
15C0 E4   CLR A
15C1 F50A  MOV 0AH, A
  ■577:    }
  ■578:  
  ■579:  
  ■580:    if(a3==0)
15C3 E50B  MOV A, 0BH
15C5 7013  JNZ 15DAH
  ■581:    {
  ■582:      if(KEY3==0)
15C7 20B210 JB  0B2H, 15DAH
  ■583:      {
  ■ 584:          Delay5US();
15CA 120003 LCALL 0003H
  ■585:          if(KEY3==0)
15CD 20B20A JB  0B2H, 15DAH
  ■586:          {       
  ■587:               
  ■588:               Set(disflag,1); 
15D0 7D01  MOV R5, #01H
15D2 AF18  MOV R7, 18H
15D4 121065 LCALL 1065H
  ■589:           a3=1;
  ■590:           
15D7 750B01 MOV 0BH, #01H
  ■591:           }
  ■592:      }
  ■593:    }
  ■594:    if(KEY3==1)
15DA 30B203 JNB 0B2H, 15E0H
  ■595:    {
  ■596:    a3=0;
15DD E4   CLR A
15DE F50B  MOV 0BH, A
  ■597:    }
15E0 22   RET
  ■378     void OLED_P8x16Str(unsigned char x, y,unsigned char dat)
15E1 8C23  MOV 23H, R4
15E3 8D24  MOV 24H, R5
15E5 AA07  MOV R2, 07H
  ■379     {
  ■380:      unsigned char i=0;
  ■381:      
  ■382: 
15E7 E4   CLR A
15E8 FC   MOV R4, A
  ■383:          if(x>120){x=0;y++;}
15E9 EA   MOV A, R2
15EA D3   SETB C
15EB 9478  SUBB A, #78H
15ED 400A  JC  15F9H
15EF E4   CLR A
15F0 FA   MOV R2, A
15F1 0524  INC 24H
15F3 E524  MOV A, 24H
15F5 7002  JNZ 15F9H
15F7 0523  INC 23H
  ■384:          OLED_Set_Pos(x,y);
15F9 AF02  MOV R7, 02H
15FB AD24  MOV R5, 24H
15FD 121783 LCALL 1783H
  ■385:          for(i=0;i<8;i++)
1600 E4   CLR A
1601 FC   MOV R4, A
  ■386:          OLED_WrDat(F8X16[dat*16+i]);
1602 121523 LCALL 1523H
1605 240E  ADD A, #0EH
1607 F582  MOV 82H, A
1609 E583  MOV A, 83H
160B 3400  ADDC A, #00H
160D 12176E LCALL 176EH
1610 0C   INC R4
1611 BC08EE CJNE R4, #08H, 1602H
  ■387:          OLED_Set_Pos(x,y+1);
1614 E524  MOV A, 24H
  ■388:          for(i=0;i<8;i++)
1616 121519 LCALL 1519H
  ■389:          OLED_WrDat(F8X16[dat*16+i+8]);
1619 121523 LCALL 1523H
161C 2416  ADD A, #16H
161E F582  MOV 82H, A
1620 E583  MOV A, 83H
1622 3400  ADDC A, #00H
1624 12176E LCALL 176EH
1627 0C   INC R4
1628 BC08EE CJNE R4, #08H, 1619H
  ■390:          x+=8;
  ■391:      
  ■392:      
  ■393:  }
162B 22   RET
  ■394     void OLED_hzStr(unsigned char x, y,unsigned char N)
162C 8C23  MOV 23H, R4
162E 8D24  MOV 24H, R5
1630 A907  MOV R1, 07H
  ■395     {
  ■396:      unsigned char wm=0;
1632 E4   CLR A
1633 FC   MOV R4, A
  ■397:      unsigned int adder=32*N;
1634 EB   MOV A, R3
1635 75F020 MOV 0F0H, #20H
1638 A4   MUL AB
1639 FB   MOV R3, A
163A AAF0  MOV R2, 0F0H
  ■398:      OLED_Set_Pos(x , y);
163C AF01  MOV R7, 01H
163E 121783 LCALL 1783H
  ■399:      for(wm = 0;wm < 16;wm++)
1641 E4   CLR A
1642 FC   MOV R4, A
  ■400:      {
  ■401:          OLED_WrDat(hz[adder]);
1643 74FE  MOV A, #0FEH
1645 2B   ADD A, R3
1646 F582  MOV 82H, A
1648 7403  MOV A, #03H
164A 3A   ADDC A, R2
164B 12176E LCALL 176EH
  ■402:          adder += 1;
164E 0B   INC R3
164F BB0001 CJNE R3, #00H, 1653H
1652 0A   INC R2
  ■403:      }
1653 0C   INC R4
1654 BC10EC CJNE R4, #10H, 1643H
  ■404:      OLED_Set_Pos(x,y + 1);
1657 AF01  MOV R7, 01H
1659 E524  MOV A, 24H
  ■405:      for(wm = 0;wm < 16;wm++)
165B 12151B LCALL 151BH
  ■406:      {
  ■407:          OLED_WrDat(hz[adder]);
165E 74FE  MOV A, #0FEH
1660 2B   ADD A, R3
1661 F582  MOV 82H, A
1663 7403  MOV A, #03H
1665 3A   ADDC A, R2
1666 12176E LCALL 176EH
  ■408:          adder += 1;
1669 0B   INC R3
166A BB0001 CJNE R3, #00H, 166EH
166D 0A   INC R2
  ■409:      }
  ■410: 
166E 0C   INC R4
166F BC10EC CJNE R4, #10H, 165EH
  ■411:  }
1672 22   RET
1673 121875 LCALL 1875H
1676 7FD0  MOV R7, #0D0H
  ■124:     void SendByte(uchar c)
  ■125:     {
  ■126:    uchar BitCnt;
  ■127:   
  ■128:    for(BitCnt=0;BitCnt<8;BitCnt++)     //要傳送的數(shù)據(jù)長度為8位
1678 E4   CLR A
1679 FE   MOV R6, A
  ■129:    {
  ■130:      if((c<<BitCnt)&0x80)
167A EF   MOV A, R7
167B A806  MOV R0, 06H
167D 08   INC R0
167E 8002  SJMP 1682H
1680 C3   CLR C
1681 33   RLC A
1682 D8FC  DJNZ R0, 1680H
1684 30E704 JNB 0E7H, 168BH
  ■131:        SDA=1;             //判斷發(fā)送位
  ■132:      else
1687 D2B7  SETB 0B7H
1689 8002  SJMP 168DH
  ■133:        SDA=0;  
168B C2B7  CLR 0B7H
  ■134:      SCL=1;              //置時鐘線為高,通知被控器開始接收數(shù)據(jù)位
168D D2B6  SETB 0B6H
  ■135:      Delay5US();            //保證時鐘高電平周期大于4μs 
168F 120003 LCALL 0003H
  ■136:      SCL=0;
1692 C2B6  CLR 0B6H
  ■137:    }
1694 0E   INC R6
1695 BE08E2 CJNE R6, #08H, 167AH
  ■138:    SDA=1;                 //8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位
1698 D2B7  SETB 0B7H
  ■139:    SCL=1;
169A D2B6  SETB 0B6H
  ■140:    Delay5US();
169C 120003 LCALL 0003H
  ■141:    if(SDA==1)
169F 30B704 JNB 0B7H, 16A6H
  ■142:      ack=0; 
  ■143:    else
16A2 C203  CLR 03H
16A4 8002  SJMP 16A8H
  ■144:      ack=1;               //判斷是否接收到應(yīng)答信號
16A6 D203  SETB 03H
  ■145:    SCL=0;
16A8 C2B6  CLR 0B6H
  ■146:    Delay5US();
16AA 020003 LJMP 0003H
  ■180     uchar write_byte(uchar addr, uchar write_data)
16AD AC07  MOV R4, 07H
  ■181     {
  ■182:    IIC_Start();
  ■183:    SendByte(DS3231_WriteAddress);
16AF 121673 LCALL 1673H
  ■184:    if (ack == 0)
16B2 200303 JB  03H, 16B8H
  ■185:      return 0;
  ■186:   
16B5 7F00  MOV R7, #00H
16B7 22   RET
  ■187:    SendByte(addr);
16B8 AF04  MOV R7, 04H
16BA 121678 LCALL 1678H
  ■188:    if (ack == 0)
16BD 200303 JB  03H, 16C3H
  ■189:      return 0;
  ■190:  
16C0 7F00  MOV R7, #00H
16C2 22   RET
  ■191:    SendByte(write_data);
16C3 AF05  MOV R7, 05H
16C5 121678 LCALL 1678H
  ■192:    if (ack == 0)
16C8 200303 JB  03H, 16CEH
  ■193:      return 0;
  ■194:   
16CB 7F00  MOV R7, #00H
16CD 22   RET
  ■195:    IIC_Stop();
16CE 12187E LCALL 187EH
  ■196:    Delay5US();
16D1 120003 LCALL 0003H
  ■197:    Delay5US();
16D4 120003 LCALL 0003H
  ■198:    return 1;
16D7 7F01  MOV R7, #01H
  ■199:  }
16D9 22   RET
  ■831     void timer0() interrupt 1
  ■832     {
16DA C0E0  PUSH 0E0H
16DC C0D0  PUSH 0D0H
  ■833:      TL0 = 0x00;       //重裝定時初值10ms
16DE 758A00 MOV 8AH, #00H
  ■834:      TH0 = 0xDC;       //重裝定時初值
  ■835  1
16E1 758CDC MOV 8CH, #0DCH
  ■836:      shan_count++;
16E4 0512  INC 12H
  ■837:      if(shan_count == 100)  //:號閃爍,亮0.5秒,滅0.5秒;閃爍頻率可調(diào)。
16E6 E512  MOV A, 12H
16E8 B46403 CJNE A, #64H, 16EEH
  ■838:      {
  ■839:          shan_count = 0;
16EB 751200 MOV 12H, #00H
  ■840:      }
  ■841:  
  ■842:      shan_js++;         //校時閃爍
16EE 051B  INC 1BH
  ■843:      if(shan_js == 25) //250ms閃爍一次
16F0 E51B  MOV A, 1BH
16F2 B41905 CJNE A, #19H, 16FAH
  ■844:      {
  ■845:          shan_js = 0;
16F5 751B00 MOV 1BH, #00H
  ■846:          flag = !flag;
16F8 B202  CPL 02H
  ■847  2
  ■848:         }
16FA D0D0  POP 0D0H
16FC D0E0  POP 0E0H
16FE 32   RETI
  ■214     uchar read_random(uchar random_addr)
16FF AD07  MOV R5, 07H
  ■215     {
  ■216:    uchar Tmp;
  ■217:    IIC_Start();
  ■218:    SendByte(DS3231_WriteAddress);
1701 121673 LCALL 1673H
  ■219:    if(ack==0)
1704 200303 JB  03H, 170AH
  ■220:      return(0);
1707 7F00  MOV R7, #00H
1709 22   RET
  ■221:    SendByte(random_addr);
170A AF05  MOV R7, 05H
170C 121678 LCALL 1678H
  ■222:    if(ack==0)
170F 200303 JB  03H, 1715H
  ■223:      return(0);
1712 7F00  MOV R7, #00H
1714 22   RET
  ■224:      Tmp=read_current();
1715 1217F6 LCALL 17F6H
  ■225:      if(random_addr==DS3231_HOUR)
1718 BD0203 CJNE R5, #02H, 171EH
  ■226:          Tmp&=0x3f;
  ■227  1
171B 53073F ANL 07H, #3FH
  ■228:    return(BCD2HEX(Tmp));//都轉(zhuǎn)10進制輸出
171E 121858 LCALL 1858H
  ■229:  }
  ■230     
  ■231     /***********************/
1721 22   RET
  ■ 149     uchar RcvByte()
  ■150     {
  ■151:    uchar retc;
  ■152:    uchar BitCnt;
  ■153:  
  ■154:    retc=0;
1722 E4   CLR A
1723 FF   MOV R7, A
  ■155:    SDA=1;              //置數(shù)據(jù)線為輸入方式
1724 D2B7  SETB 0B7H
  ■156:    for(BitCnt=0;BitCnt<8;BitCnt++)
1726 FE   MOV R6, A
  ■157:    {
  ■158:      SCL=0;           //置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位
1727 C2B6  CLR 0B6H
  ■159:      Delay5US();         //時鐘低電平周期大于4.7μs
1729 120003 LCALL 0003H
  ■160:      SCL=1;           //置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效
172C D2B6  SETB 0B6H
  ■161:      Delay5US();
172E 120003 LCALL 0003H
  ■162:      retc=retc<<1;
1731 EF   MOV A, R7
1732 25E0  ADD A, 0E0H
1734 FF   MOV R7, A
  ■163:      if(SDA==1)
1735 30B701 JNB 0B7H, 1739H
  ■164:        retc=retc+1;      //讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中
1738 0F   INC R7
  ■165:      Delay5US();
1739 120003 LCALL 0003H
  ■166:    }
173C 0E   INC R6
173D BE08E7 CJNE R6, #08H, 1727H
  ■167:    SCL=0;
1740 C2B6  CLR 0B6H
  ■168:    return(retc);
1742 22   RET
  ■232     uchar read_random1(uchar random_addr) //這個是讀溫度函數(shù)
1743 AB07  MOV R3, 07H
  ■233     {
  ■234:    uchar Tmp;
  ■235:      write_byte(0x0e,0x20);//0x0e寄存器的CONV位置1開啟溫度轉(zhuǎn)換,要這句,溫度實時刷新,這句不要,溫度要64s才刷新1次
1745 7D20  MOV R5, #20H
1747 7F0E  MOV R7, #0EH
1749 1216AD LCALL 16ADH
  ■236:      IIC_Start();
  ■237:    SendByte(DS3231_WriteAddress);
174C 121673 LCALL 1673H
  ■238:    if(ack==0)
174F 200303 JB  03H, 1755H
  ■239:      return(0);
1752 7F00  MOV R7, #00H
1754 22   RET
  ■240:    SendByte(random_addr);
1755 AF03  MOV R7, 03H
1757 121678 LCALL 1678H
  ■241:    if(ack==0)
175A 200303 JB  03H, 1760H
  ■242:      return(0);
175D 7F00  MOV R7, #00H
175F 22   RET
  ■243:      Tmp=read_current();
1760 1217F6 LCALL 17F6H
  ■244:      return Tmp;
  ■273     /*********************OLED寫數(shù)據(jù)************************************/
1763 22   RET
1764 74FE  MOV A, #0FEH
1766 2524  ADD A, 24H
1768 F582  MOV 82H, A
176A 7400  MOV A, #00H
176C 3523  ADDC A, 23H
176E F583  MOV 83H, A
1770 E4   CLR A
1771 93   MOVC A, @A+DPTR
1772 FF   MOV R7, A
  ■274     void OLED_WrDat(unsigned char IIC_Data)
  ■275     {
  ■276:      IIC_Start();
  ■277:      SendByte(0x78);
1773 12154A LCALL 154AH
  ■278:      SendByte(0x40);         //write data
1776 7F40  MOV R7, #40H
1778 121678 LCALL 1678H
  ■279:      SendByte(IIC_Data);
177B AF05  MOV R7, 05H
177D 121678 LCALL 1678H
  ■280:      IIC_Stop();
  ■281:  }
  ■282     /*********************OLED寫命令************************************/
  ■283     void OLED_WrCmd(unsigned char IIC_Command)
  ■284     {
  ■285:      IIC_Start();
  ■286:      SendByte(0x78);      //Slave address,SA0=0
  ■287:      SendByte(0x00);         //write command
  ■288:      SendByte(IIC_Command);
  ■289:      IIC_Stop();
  ■290:  }
  ■291     /*********************OLED 設(shè)置坐標(biāo)************************************/
1780 02187E LJMP 187EH
  ■292     void OLED_Set_Pos(unsigned char x, unsigned char y)
1783 AC07  MOV R4, 07H
  ■293     {
  ■294:      OLED_WrCmd(0xb0+y);
1785 ED   MOV A, R5
1786 24B0  ADD A, #0B0H
1788 FF   MOV R7, A
1789 12181A LCALL 181AH
  ■295:      OLED_WrCmd(((x&0xf0)>>4)|0x10);
178C EC   MOV A, R4
178D 54F0  ANL A, #0F0H
178F C4   SWAP A
1790 540F  ANL A, #0FH
1792 4410  ORL A, #10H
1794 FF   MOV R7, A
1795 12181A LCALL 181AH
  ■296:      OLED_WrCmd((x&0x0f)|0x01);
  ■297:  }
  ■298     /*********************OLED全屏************************************/
  ■299     void OLED_Fill(unsigned char bmp_dat)
  ■300     {
  ■301:      unsigned char y,x;
  ■302:      for(y=0;y<8;y++)
  ■303:      {
  ■304:          OLED_WrCmd(0xb0+y);
  ■305:          OLED_WrCmd(0x00);    // 由OLED_WrCmd(0x01);修改為: OLED_WrCmd(0x00); 2021年12月28日, 8:00:05
  ■306:          OLED_WrCmd(0x10);
  ■307:          for(x=0;x<X_WIDTH;x++)
  ■308:          OLED_WrDat(bmp_dat);
  ■309:      }
  ■310:  }
  ■311     /*********************OLED復(fù)位************************************/
1798 EC   MOV A, R4
1799 540F  ANL A, #0FH
179B 4401  ORL A, #01H
179D FF   MOV R7, A
179E 02181A LJMP 181AH
  ■312     void OLED_CLS(void)
  ■313     {
  ■314:      unsigned char y,x;
  ■315:      for(y=0;y<8;y++)
17A1 E4   CLR A
17A2 FC   MOV R4, A
  ■316:      {
  ■317:          OLED_WrCmd(0xb0+y);
17A3 EC   MOV A, R4
17A4 24B0  ADD A, #0B0H
17A6 FF   MOV R7, A
17A7 12181A LCALL 181AH
  ■318:          OLED_WrCmd(0x01);
17AA 7F01  MOV R7, #01H
  ■319:          OLED_WrCmd(0x10);
17AC 121815 LCALL 1815H
  ■320:          for(x=0;x<X_WIDTH;x++)
17AF E4   CLR A
17B0 FB   MOV R3, A
  ■321:          OLED_WrDat(0);
17B1 E4   CLR A
17B2 FF   MOV R7, A
17B3 121773 LCALL 1773H
17B6 0B   INC R3
17B7 BB80F7 CJNE R3, #80H, 17B1H
  ■322:      }
17BA 0C   INC R4
17BB BC08E5 CJNE R4, #08H, 17A3H
  ■323:  }
17BE 22   RET
  ■247     void ModifyTime(uchar address,uchar num)
17BF AC07  MOV R4, 07H
17C1 AF05  MOV R7, 05H
  ■248     {
  ■249:    uchar temp=0;
17C3 E4   CLR A
17C4 FD   MOV R5, A
  ■250:      if(address>6 && address <0) return;
17C5 EC   MOV A, R4
17C6 D3   SETB C
17C7 9406  SUBB A, #06H
17C9 4005  JC  17D0H
17CB EC   MOV A, R4
17CC 9400  SUBB A, #00H
17CE 400A  JC  17DAH
  ■251:    temp=HEX2BCD(num);
17D0 12182A LCALL 182AH
17D3 AD07  MOV R5, 07H
  ■252:      write_byte(address,temp);
17D5 AF04  MOV R7, 04H
17D7 1216AD LCALL 16ADH
  ■253:  }
17DA 22   RET
  ■299     void OLED_Fill(unsigned char bmp_dat)
17DB AC07  MOV R4, 07H
  ■300     {
  ■301:      unsigned char y,x;
  ■302:      for(y=0;y<8;y++)
17DD E4   CLR A
17DE FB   MOV R3, A
  ■303:      {
  ■304:          OLED_WrCmd(0xb0+y);
17DF EB   MOV A, R3
17E0 24B0  ADD A, #0B0H
17E2 FF   MOV R7, A
  ■305:          OLED_WrCmd(0x00);    // 由OLED_WrCmd(0x01);修改為: OLED_WrCmd(0x00); 2021年12月28日, 8:00:05
  ■306:          OLED_WrCmd(0x10);
17E3 121810 LCALL 1810H
  ■307:          for(x=0;x<X_WIDTH;x++)
17E6 E4   CLR A
17E7 FA   MOV R2, A
  ■308:          OLED_WrDat(bmp_dat);
17E8 AF04  MOV R7, 04H
17EA 121773 LCALL 1773H
17ED 0A   INC R2
17EE BA80F7 CJNE R2, #80H, 17E8H
  ■309:      }
17F1 0B   INC R3
17F2 BB08EA CJNE R3, #08H, 17DFH
  ■310:  }
17F5 22   RET
  ■201     uchar read_current()
  ■202     {
  ■203:    uchar read_data;
  ■204:    IIC_Start();
17F6 121875 LCALL 1875H
  ■205:    SendByte(DS3231_ReadAddress);
17F9 7FD1  MOV R7, #0D1H
17FB 121678 LCALL 1678H
  ■206:    if(ack==0)
17FE 200303 JB  03H, 1804H
  ■207:      return(0);
1801 7F00  MOV R7, #00H
1803 22   RET
  ■208:    read_data = RcvByte();
1804 121722 LCALL 1722H
  ■209:    Ack_I2C(1);
1807 D204  SETB 04H
1809 121867 LCALL 1867H
  ■210:    IIC_Stop();
180C 12187E LCALL 187EH
  ■211:    return read_data;
180F 22   RET
1810 12181A LCALL 181AH
1813 E4   CLR A
1814 FF   MOV R7, A
1815 12181A LCALL 181AH
1818 7F10  MOV R7, #10H
  ■283     void OLED_WrCmd(unsigned char IIC_Command)
  ■284     {
  ■285:      IIC_Start();
  ■286:      SendByte(0x78);      //Slave address,SA0=0
181A 12154A LCALL 154AH
  ■287:      SendByte(0x00);         //write command
181D E4   CLR A
181E FF   MOV R7, A
181F 121678 LCALL 1678H
  ■288:      SendByte(IIC_Command);
1822 AF05  MOV R7, 05H
1824 121678 LCALL 1678H
  ■289:      IIC_Stop();
1827 02187E LJMP 187EH
  ■118     uchar  HEX2BCD(uchar val)
  ■119     {
  ■120:      return (((val%100)/10)<<4)|(val%10);
182A EF   MOV A, R7
182B 75F064 MOV 0F0H, #64H
182E 84   DIV AB
182F E5F0  MOV A, 0F0H
1831 75F00A MOV 0F0H, #0AH
1834 84   DIV AB
1835 C4   SWAP A
1836 54F0  ANL A, #0F0H
1838 FE   MOV R6, A
1839 EF   MOV A, R7
183A 75F00A MOV 0F0H, #0AH
183D 84   DIV AB
183E E5F0  MOV A, 0F0H
1840 4E   ORL A, R6
1841 FF   MOV R7, A
  ■121:  }
1842 22   RET
  ■72     void Timer0Init(void)      //10毫秒@11.0592MHz
  ■73     {
  ■74:  //   AUXR &= 0x7F;      //定時器時鐘12T模式
  ■75:      TMOD &= 0xF0;      //設(shè)置定時器模式
1843 5389F0 ANL 89H, #0F0H
  ■76:      TMOD |= 0x01;      //設(shè)置定時器0,16位模式
1846 438901 ORL 89H, #01H
  ■77:      TL0 = 0x00;       //設(shè)置定時初值
1849 E4   CLR A
184A F58A  MOV 8AH, A
  ■78:      TH0 = 0xDC;       //設(shè)置定時初值
184C 758CDC MOV 8CH, #0DCH
  ■79:      TF0 = 0;        //清除TF0標(biāo)志
184F C28D  CLR 8DH
  ■80:      TR0 = 1;        //定時器0開始計時
1851 D28C  SETB 8CH
  ■81:      ET0 = 1;
1853 D2A9  SETB 0A9H
  ■82:      EA = 1;
1855 D2AF  SETB 0AFH
  ■83:  }
1857 22   RET
  ■113     uchar  BCD2HEX(uchar val)
  ■114     {
  ■115:      return ((val>>4)*10)+(val&0x0f);
1858 EF   MOV A, R7
1859 C4   SWAP A
185A 540F  ANL A, #0FH
185C 75F00A MOV 0F0H, #0AH
185F A4   MUL AB
1860 FE   MOV R6, A
1861 EF   MOV A, R7
1862 540F  ANL A, #0FH
1864 2E   ADD A, R6
1865 FF   MOV R7, A
  ■116:  }
1866 22   RET
  ■171     void Ack_I2C(bit a)
  ■172     {
  ■173:      SDA   =    a; 
1867 A204  MOV C, 04H
1869 92B7  MOV 0B7H, C
  ■174:    SCL=1;
186B D2B6  SETB 0B6H
  ■175:    Delay5US();       //時鐘低電平周期大于4us
186D 120003 LCALL 0003H
  ■176:    SCL=0;         //清時鐘線,鉗住I2C總線以便繼續(xù)接收
1870 C2B6  CLR 0B6H
  ■177:    Delay5US();
1872 020003 LJMP 0003H
  ■88     void IIC_Start()
  ■89     {
  ■90:    SCL = 1; 
1875 D2B6  SETB 0B6H
  ■91:    SDA = 1;
1877 D2B7  SETB 0B7H
  ■92:    SDA = 0;
1879 C2B7  CLR 0B7H
  ■93:    SCL = 0;
187B C2B6  CLR 0B6H
  ■94:  }
  ■95     
  ■96     /**********************************************
  ■97     //IIC Stop
  ■98     **********************************************/
187D 22   RET
  ■99     void IIC_Stop()
  ■100     {
  ■101:    SCL = 0;
187E C2B6  CLR 0B6H
  ■102:    SDA = 0;
1880 C2B7  CLR 0B7H
  ■103:    SCL = 1;
1882 D2B6  SETB 0B6H
  ■104:    SDA = 1;
1884 D2B7  SETB 0B7H
  ■105:  }
1886 22   RET
1887 0118  AJMP 1818H
1889 00   NOP
188A 00   NOP
==========================================================
以上是完整的, 可為參考.

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:262 發(fā)表于 2022-1-4 16:49 | 只看該作者
這個是反匯編而來的代碼嗎?
回復(fù)

使用道具 舉報

板凳
ID:23844 發(fā)表于 2022-1-4 17:04 | 只看該作者
heicad 發(fā)表于 2022-1-4 16:49
這個是反匯編而來的代碼嗎?

我也感覺是反編譯而成。
回復(fù)

使用道具 舉報

地板
ID:336378 發(fā)表于 2022-1-4 17:54 | 只看該作者
反匯編的,實用價值呢??。
回復(fù)

使用道具 舉報

5#
ID:16255 發(fā)表于 2022-1-5 11:28 | 只看該作者
這是什么編譯語言?匯編不像匯編,C又不像C……
回復(fù)

使用道具 舉報

6#
ID:754546 發(fā)表于 2022-2-12 19:12 | 只看該作者
缺少文件
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品午夜窝窝看片 | 欧美一区二区免费 | 国产精品一区二区三区久久久 | 精品国产一区二区国模嫣然 | 亚洲情综合五月天 | 成人在线免费电影 | 狠狠躁躁夜夜躁波多野结依 | 日韩高清一区二区 | 一区二区三区高清不卡 | 99这里只有精品 | 国产精品国产三级国产播12软件 | 国产黄色网址在线观看 | 中文字幕日韩欧美一区二区三区 | 国产最新视频在线 | 国产精品久久久久9999鸭 | 欧美成人精品一区二区男人看 | 色眯眯视频在线观看 | 蜜桃在线一区二区三区 | 欧美综合在线观看 | 天堂视频中文在线 | 在线成人免费视频 | 国产精品久久久久aaaa九色 | 秋霞国产 | 伊人久久伊人 | 国产精品久久久久免费 | 性高朝久久久久久久3小时 av一区二区三区四区 | 95国产精品| 国产专区在线 | 国产我和子的乱视频网站 | 天天色综 | av一区二区三区四区 | 亚洲一区久久久 | av一二三区 | 在线婷婷| 午夜久久久久久久久久一区二区 | 亚洲欧美国产一区二区三区 | 日本aa毛片a级毛片免费观看 | 日韩在线观看中文字幕 | 久久99精品久久久 | 日韩精品一区二区三区视频播放 | 国产一区欧美 |