⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 万年历.lst

📁 采用单片机和时钟芯片DS1302制作的一个万年历,里面附有源程序以及PROTUS仿真图
💻 LST
字号:
8051 Assembler           Version 1.00   04/11/107 15:40:25    Page 1
C:\Documents and Settings\Administrator\桌面\新建文件夹\电子万年历.a51



    1 0000              ;***********************************************
    2 0000              ;日历温度显示牌参考程序
    3 0000              ;作者:黄惟公
    4 0000              ;2007.3.1
    5 0000              ;***********************************************
    6 0000                      ORG 0000H
    7 0000 010E                 AJMP MAIN
    8 000B                      ORG 000BH         ;T0中断服务程序入口   
    9 000B 020030               LJMP DISPLAY
   10 000E              ;***********************************************
   11 000E              ;30H~3DH单元显示缓冲区,定义如下:
   12 000E              ;30H 月十位 31H 月个位
   13 000E              ;32H 日十位 33H 日个位
   14 000E              ;34H 时十位 35H 时个位
   15 000E              ;36H 分十位 37H 分个位
   16 000E              ;38H 秒十位 39H 秒个位
   17 000E              ;3AH 星期位 3BH 未用
   18 000E              ;3CH 温度十位 3DH 温度个位
   19 000E              ;************************************************ 
   20 000E              ;编程思想:
   21 000E              ;用T0产生一个定时中断,在中断服务程序中,显示14个LED;
   22 000E              ;主程序中,读DS1302和DS1620的数据。
   23 000E              ;主程序中加了一点延时的原因:
   24 000E              ;在Proteus中,不停的访问DS1302和DS1620所占用CPU的时间太多,;加了延时后,访问减少,CPU的占有时间大大减少了,这已被实验证明。
   25 000E              ;****************************************************************
   26 000E 758902       MAIN:   MOV TMOD,#02H     ;T0定时,工作方式2
   27 0011 758C00               MOV TH0,#00H        ;T0计数初值 
   28 0014 758A00               MOV TL0,#00H
   29 0017 D2AF                 SETB EA 
   30 0019 D2A9                 SETB ET0
   31 001B D28C                 SETB TR0
   32 001D 7930                 MOV R1,#30H
   33 001F 7E0E                 MOV R6,#14
   34 0021                     
   35 0021 1179              L0:ACALL PR1302
   36 0023 1127                 ACALL DELAY
   37 0025                     
   38 0025 0121                 AJMP L0
   39 0027              
   40 0027 7B00          DELAY: MOV R3,#0
   41 0029 7D00             L1: MOV R5,#0
   42 002B DDFE                 DJNZ R5,$
   43 002D DBFA                 DJNZ R3,L1
   44 002F 22                   RET
   45 0030              ;**********************************************
   46 0030              ;显示程序
   47 0030              ;**********************************************
   48 0030 C0E0         DISPLAY:PUSH ACC
   49 0032 90005B               MOV DPTR,#TAB1
   50 0035 EE                   MOV A,R6
   51 0036 93                   MOVC A,@A+DPTR
   52 0037 F5A0                 MOV P2,A
   53 0039 90006A               MOV DPTR,#TAB2
   54 003C EE                   MOV A,R6
   55 003D 93                   MOVC A,@A+DPTR
   56 003E F5B0                 MOV P3,A
   57 0040 E7                   MOV A,@R1
8051 Assembler           Version 1.00   04/11/107 15:40:25    Page 2
C:\Documents and Settings\Administrator\桌面\新建文件夹\电子万年历.a51



   58 0041 900051               MOV DPTR,#TAB
   59 0044 93                   MOVC A,@A+DPTR
   60 0045 F580                 MOV P0,A
   61 0047 09                   INC R1
   62 0048 DE04                 DJNZ R6,LOOP
   63 004A 7930                 MOV R1,#30H
   64 004C 7E0E                 MOV R6,#14
   65 004E D0E0          LOOP:  POP ACC
   66 0050 32                   RETI         
   67 0051 C0 F9 A4     TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
      0054 B0 99 92
      0057 82 F8 80
      005A 98
   68 005B              TAB1:
   69 005B 00 00 00     DB 00H,00H,00H,00H,00H,00H,00H,80H,40H,20H,10H,08H,04H,02H,01H
      005E 00 00 00
      0061 00 80 40
      0064 20 10 08
      0067 04 02 01
   70 006A              TAB2:
   71 006A 00 20 10     DB 00H,20H,10H,08H,04H,02H,01H,00H,00H,00H,00H,00H,00H,00H,00H 
      006D 08 04 02
      0070 01 00 00
      0073 00 00 00
      0076 00 00 00
   72 0079              ;********************************************************
   73 0079              ;处理DS1302子程序
   74 0079              ;功能:1302得到的时间是以压缩的BCD码存在44~49H中,次程序把它们
   75 0079              ;分解成单字节的BCD码,并存入显示缓冲区
   76 0079              ;********************************************************    
   77 0079 11D1           PR1302:ACALL GET1302
   78 007B E544                  MOV A,44H       ;S
   79 007D C4                    SWAP A
   80 007E 540F                  ANL A,#0FH
   81 0080 F538                  MOV 38H,A
   82 0082 E544                  MOV A,44H
   83 0084 540F                  ANL A,#0FH
   84 0086 F539                  MOV 39H,A
   85 0088 E545                  MOV A,45H       ;M
   86 008A C4                    SWAP A
   87 008B 540F                  ANL A,#0FH
   88 008D F536                  MOV 36H,A
   89 008F E545                  MOV A,45H
   90 0091 540F                  ANL A,#0FH
   91 0093 F537                  MOV 37H,A
   92 0095 E546                  MOV A,46H       ;H
   93 0097 C4                    SWAP A
   94 0098 540F                  ANL A,#0FH
   95 009A F534                  MOV 34H,A
   96 009C E546                  MOV A,46H
   97 009E 540F                  ANL A,#0FH
   98 00A0 F535                  MOV 35H,A
   99 00A2 E547                  MOV A,47H       ;D
  100 00A4 C4                    SWAP A
  101 00A5 540F                  ANL A,#0FH
  102 00A7 F532                  MOV 32H,A
  103 00A9 E547                  MOV A,47H
8051 Assembler           Version 1.00   04/11/107 15:40:25    Page 3
C:\Documents and Settings\Administrator\桌面\新建文件夹\电子万年历.a51



  104 00AB 540F                  ANL A,#0FH
  105 00AD F533                  MOV 33H,A
  106 00AF E548                  MOV A,48H       ;M
  107 00B1 C4                    SWAP A
  108 00B2 540F                  ANL A,#0FH
  109 00B4 F530                  MOV 30H,A
  110 00B6 E548                  MOV A,48H
  111 00B8 540F                  ANL A,#0FH
  112 00BA F531                  MOV 31H,A
  113 00BC E549                  MOV A,49H       ;W
  114 00BE 540F                  ANL A,#0FH
  115 00C0 14                    DEC A
  116 00C1 F53A                  MOV 3AH,A
  117 00C3 E54A                  MOV A,4AH       ;y
  118 00C5 C4                    SWAP A
  119 00C6 540F                  ANL A,#0FH
  120 00C8 F53C                  MOV 3CH,A
  121 00CA E54A                  MOV A,4AH
  122 00CC 540F                  ANL A,#0FH
  123 00CE F53D                  MOV 3DH,A
  124 00D0 22                    RET
  125 00D1                        
  126 00D1              ;============================================
  127 00D1              ;读DS1302时钟子程序
  128 00D1              ;**************************************************
  129 00D1                        RST    EQU P1.0
  130 00D1                        SCLK   EQU P1.1
  131 00D1                        IO     EQU P1.2  
  132 00D1               GET1302:      
  133 00D1 7844                    MOV    R0,#44H;
  134 00D3 7F07                    MOV    R7,#7
  135 00D5 7A81                    MOV    R2,#81H       ;秒地址
  136 00D7 C290          G13021:   CLR    RST
  137 00D9 C291                    CLR    SCLK
  138 00DB D290                    SETB   RST
  139 00DD 8AF0                    MOV    B,R2     ;秒 分 时 日 月 星期 年 地址
  140 00DF 1200F0                  LCALL  RTInputByte  
  141 00E2 120100                  LCALL  RTOutputByte
  142 00E5 F6                      MOV    @R0,A         ;秒
  143 00E6 08                      INC    R0
  144 00E7 0A                      INC    R2
  145 00E8 0A                      INC    R2
  146 00E9 D291                    SETB   SCLK
  147 00EB C290                    CLR    RST
  148 00ED DFE8                    DJNZ   R7,G13021
  149 00EF 22                      RET
  150 00F0               ;===================================
  151 00F0               RTInputByte:  
  152 00F0 7C08                    MOV    R4,#8
  153 00F2 E5F0          Inbit1:   MOV    A,B
  154 00F4 13                      RRC    A
  155 00F5 F5F0                    MOV    B,A
  156 00F7 9292                    MOV    IO, C         
  157 00F9 D291                    SETB   SCLK
  158 00FB C291                    CLR    SCLK
  159 00FD DCF3                    DJNZ   R4,Inbit1
  160 00FF 22                      RET
8051 Assembler           Version 1.00   04/11/107 15:40:25    Page 4
C:\Documents and Settings\Administrator\桌面\新建文件夹\电子万年历.a51



  161 0100               ;====================================
  162 0100               RTOutputByte:
  163 0100 7C08                    MOV    R4,#8
  164 0102 A292          Outbit1:  MOV    C,IO
  165 0104 13                      RRC    A
  166 0105 D291                    SETB   SCLK
  167 0107 C291                    CLR    SCLK
  168 0109 DCF7                    DJNZ   R4,Outbit1
  169 010B 22                      RET

Defined Symbols:
  IO                                        000092  146
  RST                                       000090  144
  SCLK                                      000091  145

Defined Labels:
  DELAY                                     000027  39
  DISPLAY                                   000030  48
  G13021                                    0000D7  215
  GET1302                                   0000D1  209
  INBIT1                                    0000F2  242
  L0                                        000021  33
  L1                                        000029  41
  LOOP                                      00004E  78
  MAIN                                      00000E  14
  OUTBIT1                                   000102  258
  PR1302                                    000079  121
  RTINPUTBYTE                               0000F0  240
  RTOUTPUTBYTE                              000100  256
  TAB                                       000051  81
  TAB1                                      00005B  91
  TAB2                                      00006A  106

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -