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

📄 电子时钟源程序.txt

📁 电子时钟源程序,初学者比较理想的参考程序
💻 TXT
字号:
电子时钟源程序

Counter EQU  59H ;计数器,显示程序通过它得知现正显示哪个数码管
      HOUR    EQU  50H 
      MINUTE  EQU  51H
      SECOND  EQU  52H 
      DISPBUFF EQU 5AH ;显示缓冲区为5AH和5BH
         ORG 0000H
         AJMP START
         ORG 000BH ;定时器T0的入口
         AJMP DISP ;显示程序
         ORG 001BH
         AJMP TINT1
         ORG 30H
START:
         MOV SP,#5FH ;设置堆栈
         MOV P1,#0FFH
         MOV P0,#0FFH
         MOV P2,#0FFH ;初始化,所显示器,LED灭
         MOV TMOD,#00010001B ;定时器T0工作于模式1(16位定时/计数模式)
         MOV TH0,#HIGH(65536-2000)
         MOV TL0,#LOW(65536-2000)
         MOV TH1,#HIGH(65536-50000)
         MOV TL1,#LOW(65536-50000)
         SETB TR0
         SETB TR1
         SETB EA
         SETB ET0 
         SETB ET1
         MOV  R0,#10
         MOV  R1,#50

LOOP:  
         JNB  P1.3,FUNCTION            
         AJMP LOOP ;在此中间可以按排任意程序,这里仅作示范?
FUNCTION:
         JNB  P1.3,$
         CLR  TR1
LOOP1:
         JNB  P1.0,SETHOUR
         JNB  P1.1,SETMINUTE
         JNB  P1.2,SETSECOND 
         JNB  P1.3,PP
         SJMP LOOP1
PP:
         JNB  P1.3,$ 
         SETB TR1
         AJMP LOOP

SETHOUR:
         ;JNB  P1.0,$
         INC  HOUR
         MOV  A,HOUR
         CJNE A,#24,S1
         MOV  HOUR,#0
     S1:
         JNB  F0,$
         JB   F0,$
         AJMP LOOP1
SETMINUTE:
        ; JNB  P1.1,$
         INC  MINUTE
         MOV  A,MINUTE
         CJNE A,#60,S2
         MOV  MINUTE,#0
     S2:
         JNB  F0,$
         JB   F0,$
         AJMP LOOP1
SETSECOND:
        ; JNB  P1.2,$
         INC  SECOND
         MOV  A,SECOND
         CJNE A,#60,S3
         MOV  SECOND,#0
     S3:
         JNB  F0,$
         JB   F0,$
         AJMP LOOP1


TINT1:   DJNZ  R0,LP
         INC   SECOND
         MOV   A,SECOND
         CJNE  A,#60,LP1
         MOV   SECOND,#0
         INC   MINUTE
         MOV   A,MINUTE
         CJNE  A,#60,LP1
         MOV   MINUTE,#0
         INC   HOUR
         MOV   A,HOUR
         CJNE  A,#24,LP1
         MOV   HOUR,#0
   LP1:     
   
         MOV  R0,#10
   LP:   MOV TH1,#HIGH(65536-50000)
         MOV TL1,#LOW(65536-50000) 
         RETI        

DISP: ;定时器T0的中断响应程序
         DJNZ   R1,LL1
         CPL    F0
         MOV    R1,#50
  LL1:
         MOV  A,HOUR
         MOV  B,#10
         DIV  AB
         MOV  DISPBUFF,A
         MOV  DISPBUFF+1,B

         MOV  A,MINUTE
         MOV  B,#10
         DIV  AB
         MOV  DISPBUFF+2,A
         MOV  DISPBUFF+3,B

         MOV  A,SECOND
         MOV  B,#10
         DIV  AB
         MOV  DISPBUFF+4,A
         MOV  DISPBUFF+5,B

         MOV TH0,#HIGH(65536-2000) ;定时时间为2000个周期,约2170微秒(11.0592M)
         MOV TL0,#LOW(65536-2000)
         MOV DPTR,#DISPTAB
         MOV  P2,#0FFH
         MOV  A,COUNTER
         JZ   DP0
         CJNE A,#1,L1
         AJMP DP1
  L1:    CJNE A,#2,L2
         AJMP DP2
  L2:    CJNE A,#3,L3
         AJMP DP3
  L3:    CJNE A,#4,L4
         AJMP DP4
  L4:    AJMP DP5

  DP0:   MOV  A,DISPBUFF
         MOVC A,@A+DPTR
         MOV  P3,A
         CLR  P2.0
         INC  COUNTER
         RETI
  DP1:   MOV  A,DISPBUFF+1
         MOVC A,@A+DPTR
         MOV  P3,A
         CLR  P2.1
         INC  COUNTER
         RETI
  DP2:   MOV  A,DISPBUFF+2
         MOVC A,@A+DPTR
         MOV  P3,A
         CLR  P2.2
         INC  COUNTER
         RETI
  DP3:   MOV  A,DISPBUFF+3
         MOVC A,@A+DPTR
         MOV  P3,A
         CLR  P2.3
         INC  COUNTER
         RETI
  DP4:   MOV  A,DISPBUFF+4
         MOVC A,@A+DPTR
         MOV  P3,A
         CLR  P2.4
         INC  COUNTER
         RETI
  DP5:   MOV  A,DISPBUFF+5
         MOVC A,@A+DPTR
         MOV  P3,A
         CLR  P2.5
         MOV  COUNTER,#0
         RETI
RETI

   DISPTAB: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07,7fh,6fh
end

⌨️ 快捷键说明

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