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

📄 定时控制程序设计.asm

📁 51单片机的“时钟LED闪烁及复位程序设计”
💻 ASM
字号:
lcd equ p2
key1 bit p3.0
key2 bit p3.1
key3 bit p3.2
key4 bit p3.3
key5 bit p3.4
key6 bit p3.5
key7 bit p3.6
key8 bit p1.0
key9 bit p1.1
;=============================================================
org 0000h
ljmp main       ;跳到主程序
org 0030h
;==============================================================
;==============================================================
main:mov lcd,#0ffh
     mov lcd,#0c0h
     mov a,#0
     mov r0,#0
     mov r1,#0
     mov r7,#24
     mov 3ah,#0
     mov 3bh,#0
     mov 3ch,#0
     mov 3dh,#0      ;初始化
     acall d0        ;送显示程序显示
;==============================================================
loop:lcall d1
     ajmp loop

d1:
     cjne r1,#1,d10  ;在第十一秒的时候开发光二极管
     clr key7
d10: inc r0
     cjne r0,#10,d0  ;不超过九秒就继续走
     mov r0,#0
     ljmp d2         ;转到秒钟十位程序去执行
;====================以上是秒钟个位子程序=======================
d2: inc r1
    cjne r1,#6,d0   ;不超过六就继续走
    mov r1,#0
    ljmp d5         ;超过六十秒就返回主程序,重新开始计时
;====================以上是秒钟十位子程序======================
d5: inc 3ah
    mov r5,3ah
    cjne r5,#10,d0
    mov 3ah,#0
    ljmp d6
;===============以上是分钟个位子程序=============================
d6:inc 3bh
   mov r5,3bh
   cjne r5,#6,d0
   mov 3bh,#0
   ljmp d70
;===============以上是分钟十位子程序==============================
d70:djnz r7,d7
    ljmp main   ;判断是否到24小时,到则返回主程序重新计时
d7:
   inc 3ch
   mov r6,3ch
   cjne r6,#10,d0
   mov 3ch,#0
   ljmp d8
;===============以上是时钟个位子程序==============================
d8:inc 3dh
   ljmp d0
;===============以上是时钟十位子程序==============================
k3:mov dptr,#tab
   movc a,@a+dptr
   mov lcd,a
   ret   
;=======================以上是供调用的显示子程序=================
reset:
      ajmp main
;===================================================================

d0: mov r2,#20
l1: mov tmod,#10h
    mov th1,#3ch
    mov tl1,#0b0h      ;50ms初值
    mov ie,#00
loop0: setb tr1
       jbc tf1,loop1
;==================以上是定时服务程序===============================
d4:
   jnb  key8,reset
   mov a,r0
   acall k3
   setb key6        ;开秒钟个位显示
   lcall delay      ;延时
   clr key6         ;关闭秒钟个位
   mov a,r1
   acall k3
   setb key5        ;开秒钟十位显示
   lcall delay      ;延时
   clr key5         ;关闭秒钟十位
   mov a,3ah
   acall k3
   setb key4        ;开分钟个位显示
   lcall delay      ;延时
   clr key4         ;关闭分钟个位
   mov a,3bh
   acall k3
   setb key3        ;开分钟十位显示
   lcall delay      ;延时
   clr key3         ;关闭分钟十位
   mov a,3ch
   acall k3
   setb key2        ;开时钟个位显示
   lcall delay      ;延时
   clr key2         ;关闭时钟个位
   mov a,3dh
   acall k3
   setb key1        ;开时钟十位显示
   lcall delay      ;延时
   clr key1         ;关闭时钟十位

   ajmp loop0       ;定时器循环

loop1: setb key7   ;关闭发光二极管
       djnz r2,l1  ;50msx20=1s
       ret

;==============================================================
delay:mov r4,#82
      DJNZ r4,$
      nop
      RET            ;延时子程序
;==============================================================
tab:  db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;数型码表
end

⌨️ 快捷键说明

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