您当前的位置:五五电子网电子知识单元电路时钟-定时电路[程序]单片机89C2051制作的延时控制器 正文
[程序]单片机89C2051制作的延时控制器

[程序]单片机89C2051制作的延时控制器

点击数:7849 次   录入时间:03-04 12:03:21   整理:http://www.55dianzi.com   时钟-定时电路
;***************************************************
;*     用单片机89C2051制作的延时控制器      *
;*      T0、TT0配合构成为秒脉冲发生器              *
;*      TSBIN 为秒计数器(二进制,0~60) ;21H单元  *
;*      TMBIN 为分计数器(二进制,0~60) ;22H单元  *
;*      THBIN 为时计数器(二进制,0~24) ;23H单元  *
;*      KEYCODE 为键盘值;29H单元                  *
;*      KEYPRE 为按键标志字;PSW.5                 *
;*      当倒计时至00H00M00S 时,P3.0, P3.1端输出   *
;*      反相信号。                                 *
;*      S1----对时按钮;S2--对分按钮;           *
;*      S3--对秒按钮;S4--退出对时             *   
;***************************************************

    TMSBIN EQU 20H
    TSBIN EQU 21H
    TMBIN EQU 22H
    THBIN EQU 23H
    KEYCODE EQU 29H
    TT0 EQU 2BH
    OUT EQU 2DH

    KEYPRE BIT PSW.5
    
    DPS1 DATA 11001111B    ;S4
    DPM0 DATA 11010111B    ;S3
    DPM1 DATA 11011111B    ;S2
    DPH0 DATA 11100111B    ;S1
    DPH1 DATA 11101111B
    HIDE DATA 11111111B    ;消隐字

    ORG 0000H
    AJMP MAIN

    ORG 000BH
    SJMP I_T0

    ORG 001BH
I_T1:    AJMP MAIN1
    RETI

;***********   T0中断服务    ***********
    ORG 0030H
I_T0:    PUSH ACC
    PUSH PSW 
    MOV TH0,#0DCH        ;0.01s时间,常数因子为DC00H
    ;MOV TL0,#00H    
    CLR C
    MOV A,TMSBIN
    SUBB A,#01H
    MOV TMSBIN,A
    MOV R3,TT0        
    DJNZ R3,I_T01        ;中断次数<100(每次中断0.01S),转出
    CPL KEYPRE
    MOV R3,#100        ;中断次数=100次,重新下一个计数
    MOV TMSBIN,#100
    CLR C
    MOV A,TSBIN        ;秒计数器加1
    SUBB A,#01H
    MOV TSBIN,A
    ;SUBB A,#60         ;秒计数器>59?  Y,秒计数器=00
    JNC I_T01
    MOV A,TMBIN
    ADD A,THBIN
    JNZ M1
    MOV OUT,#11111101B
    CLR TR0
    MOV TSBIN,#00H
    SJMP I_T01 
M1:    MOV TSBIN,#59
    CLR C
    MOV A,TMBIN        ;分计数器加1
    SUBB A,#01H
    MOV TMBIN,A
    JNC I_T01
    MOV A,THBIN
    JZ I_T01
    MOV TMBIN,#59
    CLR C
    MOV A,THBIN        ;时计数器加1
    SUBB A,#01H
    MOV THBIN,A
    ;SUBB A,#24        ;时计数器>23? Y,时计数器=00
    JNC I_T01
    MOV THBIN,#00H 
I_T01:    MOV TT0,R3
    POP PSW
    POP ACC
    RETI

    ORG 00F0H
MAIN:    MOV P1,#0FFH
    MOV OUT,#11111110B    ;P3.0输出低电平
    MOV P3,OUT
    MOV SP,#40H        ;初始化堆栈指针        
    MOV TMOD,#11H        ;T0、T1工作于16为定时器
    MOV TT0,#100
    MOV TH0,#0DCH        ;T0初值
    MOV TL0,#00H
    MOV TH1,#00H        ;T1初值
    MOV TL1,#00H
    MOV TSBIN,#59
    MOV TMBIN,#59
    MOV THBIN,#23
    CLR EX0
    CLR EX1
    CLR ES
    SETB ET0        ;开T0、T1中断
    SETB ET1
    SETB TR0
    SETB TR1
    SETB EA
MAIN1:    MOV R6,#80H        ;主处理过程
DISP:    MOV KEYCODE,#00H
    MOV TH1,#00H
    MOV TL1,#00H
    ACALL DISPLY        ;调用显示子程序
    DJNZ R6,DISP
    MOV DPTR,#KEY
    MOV A,KEYCODE        ;读键盘值
    JMP @A+DPTR        ;按键值跳相应处理程序

[1] [2] [3]  下一页


本文关键字:单片机  控制器  程序  制作  时钟-定时电路单元电路 - 时钟-定时电路