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

📄 as.asm

📁 LED多功能电子日历时钟时间以60分种为一个周期 电子钟的格式为:XX XX XX
💻 ASM
字号:
;已完成
  ORG 0000H
  AJMP MAIN
  ORG 0003H
  AJMP JIAOZHENG  ;外部中断0用于校正
  ORG 000BH
  LJMP BAOSHI  ;整点报时
  ORG 0013H
  LJMP NAOZHONG
  ORG 001BH
  AJMP MIAOBIAO
  ORG 0030H


MAIN:

  MOV R0,#0H ;存秒表
  MOV R1,#0H ;秒
  MOV R2,#0H  ;分
  MOV R3,#0H  ;时

  MOV R4,#01H  ;存日
  MOV R5,#01H  ;存月
  MOV R6,#0H  ;存年低位
  MOV R7,#0H  ;存年高位


  MOV 20H,#06FH
  MOV 21H,#06FH
  MOV 25H,#0H
  MOV 24H,#0H
  MOV 26H,#06FH
  MOV 27H,#06FH
  MOV 30H,#20H
  CLR 2FH  ;0不是闰年





  MOV TMOD,#11H
  MOV TH1, #0ECH
  MOV TL1,#78H


  ;SETB EA
  ;SETB EX0  ;开外部中断0
  ;SETB ET1
  ;SETB IT0
  ;SETB TR1  ;外部中断0下降沿触发
  MOV DPTR,#TAB0
  MOV IE,#8FH
  MOV TCON,#45H






NEX:CJNE R0,#64H,WAIT ;从0000年00月00日00时00分00秒到9999年12月31日23时59分59秒99
  MOV R0,#0H          ;循环以上计法
  INC R1
CJNE R1,#3CH,NEX
  MOV R1,#0H
  INC R2
  CLR TR0


  MOV A,R2
CJNE A,20H,LOOP  ;设定时间到 蜂鸣器响一分钟
  MOV A,R3
CJNE A,21H,LOOP ;以上两次检测不可颠倒 以免误差
  MOV TH0,#0F9H
  MOV TL0,#5CH
  SETB TR0

LOOP:CJNE R2,#3CH,NEX
  MOV R2,#0H ;整点到报时1分钟


  MOV TH0,#0F8H
  MOV TL0,#8CH
  SETB TR0
  INC R3
CJNE R3,#18H,NEX ;24进制
  MOV R3,#0H
  INC R4





    MOV A,R4
CJNE A,26H,LOOP1  ;设定时间到 蜂鸣器响一分钟     生日提醒
  MOV A,R5
CJNE A,27H,LOOP1 ;以上两次检测不可颠倒 以免误差
  MOV TH0,#0FAH
  MOV TL0,#15H
  SETB TR0







 LOOP1:  MOV A,R4





CJNE A,28H,NEX ;到日为止

  MOV R4,#01H
   INC R5

   MOV A,R5
     MOV DPTR,#TAB1
     MOVC A,@A+DPTR
    MOV 28H,A

    JNB 2FH,LOOP5
    INC 28H

LOOP5:   MOV DPTR,#TAB0



CJNE R5,#0DH,NEX ;到接近12月底为止
   MOV R5,#01H    ;即到13
   INC R6




CJNE R6,#64H,NEX ;到99
   MOV R6,#01H
   INC R7
CJNE R7,#64H,NEX ;到99
  LJMP MAIN







WAIT: MOV P0,#0FFH
  JB P0.0,JIAOTI    ;交替显示年月日,由P0.0控制 高电平有效





  MOV A,R0          ;等待中断时不停显示
  ACALL BTOD1
  MOV P1,#40H
  MOV P2,A

  ACALL BTOD2
  MOV P1,#80H
  MOV P2,A


  MOV A,R1
  ACALL BTOD1
  MOV P1,#10H
  MOV P2,A

  ACALL BTOD2
  MOV P1,#20H
  MOV P2,A


  MOV A,R2
  ACALL BTOD1
  MOV P1,#4H
  MOV P2,A

  ACALL BTOD2
  MOV P1,#8H
  MOV P2,A


  MOV A,R3
  ACALL BTOD1
  MOV P1,#1H
  MOV P2,A

  ACALL BTOD2
  MOV P1,#2H
  MOV P2,A


  LJMP NEX








JIAOTI:MOV A,R4              ;等待中断时不停显示
  ACALL BTOD1
  MOV P1,#40H
  MOV P2,A
  ACALL BTOD2
  MOV P1,#80H
  MOV P2,A

  MOV A,R5
  ACALL BTOD1
  MOV P1,#10H
  MOV P2,A
  ACALL BTOD2
  MOV P1,#20H
  MOV P2,A






      CLR 2FH
  CJNE R6,#0H,LOOP2
      MOV A,R7
      MOV B,#4H
      DIV AB
      MOV A,B
CJNE A,#0H,LOOP3
     SETB 2FH

  SJMP  LOOP3

 LOOP2: MOV A,R7
      MOV B,#4H
      DIV AB

       MOV 2AH,B
       MOV A,R6
       MOV B,#0AH
       DIV AB
       MOV 2BH,A
       MOV 29H,B
       MOV A,2AH
       MOV B,#0AH
       MUL AB
       ADD A,2BH
       MOV B,#4H
      DIV AB
      MOV A,B
      MOV B,#0AH
       MUL AB
      ADD A, 29H
       MOV B,#4H
      DIV AB
     MOV A,B
     CJNE A,#0H,LOOP3
    SETB 2FH

     LJMP LOOP3
             ;A为0则是润年

 LOOP3: MOV A,R6
 ACALL BTOD1
  MOV P1,#4H
  MOV P2,A
  ACALL BTOD2
  MOV P1,#8H


 JNB 2FH,LOOP4
 CLR P2.7


LOOP4:  MOV P2,A

  MOV A,R7
  ACALL BTOD1
  MOV P1,#1H
  MOV P2,A
  ACALL BTOD2
  MOV P1,#2H
  MOV P2,A

  LJMP NEX



   NAOZHONG:
           JB P3.1,NEXT
           MOV 25H,#0H
            MOV 24H,#0H
            MOV 26H,#0H
            MOV 27H,#0H

 RETI
           NEXT:
          MOV A,R2  ;减去设定时增加的值  重新显示当前值
          CLR C
          SUBB A,25H
          MOV R2,A
          MOV A,R3
          CLR C
          SUBB A,24H
          MOV R3,A



          MOV A,R4
          CLR C
          SUBB A,26H
          MOV R4,A
          MOV A,R5
          CLR C
          SUBB A,27H
          MOV R5,A




          RETI



 BTOD1:MOV B,#0AH  ;二进制到十进制转换子程序
  DIV AB           ;只处理高位转换结果的输出
  MOVC A,@A+DPTR   ;入口参数 A中已存二进制数
   RET             ;出口参数 A中存对应字型码

  BTOD2:MOV A,B    ;处理低位转换结果的输出
  MOVC A,@A+DPTR   ;入口参数 B中已存十进制低位
  RET              ;出口参数 A中存对应字型码


JIAOZHENG:
           MOV P0,#0FFH
           JB P0.1,JIAOMIAO
           JB P0.2,JIAOFEN
           JB P0.3,JIAOSHI
           JB P0.4,JIAOTIAN
           JB P0.5,JIAOYUE
           JB P0.6,JIAONIAN1
           JB P0.7,JIAONIAN2
 JIAOMIAO: INC R1
          CJNE R1,#3CH,NEX1
          MOV R1,#0H
     NEX1:RETI

 JIAOFEN: INC R2
         INC 25H  ;设定闹钟时用于保存设定增值  分
         MOV 20H,R2 ;设定闹钟时用于保存设定值  分

          CJNE R2,#3CH,NEX2
          MOV R2,#0H
     NEX2:RETI
 JIAOSHI: INC R3
         INC 24H  ;设定闹钟时用于保存设定值  时
         MOV 21H,R3 ;设定闹钟时用于保存设定值  时
          CJNE R3,#18H,NEX3
          MOV R3,#0H
     NEX3:RETI
 JIAOTIAN: INC R4
           INC 26H   ;生日提醒功能  用于保存设定的生日值 日期
           MOV 22H,R4



          MOV A,R4
          CJNE A,28H,NEX4
          MOV R4,#0H
     NEX4:RETI
 JIAOYUE: INC R5
           INC 27H   ;生日提醒功能  用于保存设定的生日值 月份
           MOV 23H,R5


           MOV A,R5
     MOV DPTR,#TAB1
     MOVC A,@A+DPTR
    MOV 28H,A

    JNB 2FH,LOOP6
   INC 28H
LOOP6:     MOV DPTR,#TAB0



          CJNE R5,#0DH,NEX5
          MOV R5,#0H
     NEX5:RETI
 JIAONIAN1: INC R6
          CJNE R6,#64H,NEX6
          MOV R6,#0H
     NEX6:RETI
 JIAONIAN2:INC R7
          CJNE R7,#64H,NEX7
          MOV R7,#0H
     NEX7:RETI



  BAOSHI:CPL P3.0
                 RETI







MIAOBIAO: INC R0           ;基本定时模块 产生百分之一秒
          MOV TH1, #0ECH   ;重装定时初值
          MOV TL1,#78H
          RETI


TAB0:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
TAB1:DB 0H,20H,01DH,20H,1FH,20H,1FH,20H,20H,1FH,20H,1FH,20H



⌨️ 快捷键说明

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