關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 用單片機89C2051制作的延時控制器

        用單片機89C2051制作的延時控制器

        作者: 時間:2011-05-01 來源:網絡 收藏

        ;***************************************************
        ;* 用 *
        ;* 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--退出對時 *
        ;***************************************************

        本文引用地址:http://www.104case.com/article/162125.htm

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 健康| 新邵县| 博野县| 盖州市| 定州市| 南华县| 丰镇市| 衡阳市| 洪雅县| 瓦房店市| 团风县| 西乌珠穆沁旗| 昌平区| 东台市| 永嘉县| 通化市| 财经| 景谷| 大关县| 瑞金市| 旅游| 当阳市| 仙游县| 社会| 松滋市| 巨鹿县| 平顶山市| 沈阳市| 壤塘县| 库伦旗| 临澧县| 彰化市| 齐河县| 安岳县| 尚义县| 双城市| 夏邑县| 新宁县| 全州县| 绵阳市| 尼勒克县|