新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 時鐘+秒表+流水燈的單片機匯編程序

        時鐘+秒表+流水燈的單片機匯編程序

        作者: 時間:2012-09-10 來源:網絡 收藏

        //HJSMSY-V1.0開發板測試
        //---------------------------------------------
        // 電腦鐘>>
        //---------------------------------------------

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

        //=======主函數==================================
        ORG 0000H
        LJMP MAIN
        ORG 000BH
        LJMP T00
        // ORG 001BH
        // LJMP T11
        ORG 0030H
        //=======初始化=============================
        MAIN:
        MOV TMOD,#11H
        MOV TH0,#3CH
        MOV TL0,#0B0H
        MOV TH1,#0F0H
        MOV TL1,#0B0H
        SETB EA
        SETB ET0
        //SETB ET1
        SETB TR0
        //SETB TR1
        CLR P3.4
        MOV R7,#00H ;秒值
        MOV 30H,#00H ;秒個位值
        MOV 31H,#00H ;秒十位值
        MOV 32H,#00H ;分個位
        MOV 33H,#00H ;分十位
        MOV 34H,#00H ;時個位
        MOV 35H,#00H ;時十位
        MOV 44H,#00H ;秒表毫秒十位
        MOV 45H,#00H ;秒表秒毫秒百位
        MOV 46H,#00H ;秒表秒個位
        MOV 47H,#00H ;秒表秒十位
        MOV 48H,#00H ;秒表分個位
        MOV 49H,#00H ;秒表分十位
        MOV P2,#0F0H ;P2口按鍵初始化
        MOV 40H,#01H ;數碼管休眠值/燈/秒表開關數
        MOV 41H,#08H ;燈循環值
        MOV 42H,#00H ;秒表暫停
        // ACALL T11

        //-----------------------------------------------
        MAIN1:
        MOV P0,#0FFH
        MOV P1,#0FFH
        MOV R0,40H
        CJNE R0,#01H,ACL1
        ACALL MAIN2 ;顯示
        ACL1:CJNE R0,#02H,ACL2
        ACALL MAIN3 ;秒表
        ACL2:CJNE R0,#03H,ACL3
        ACALL LED ;
        ACL3:ACALL KEY ;按鍵掃描
        //ACALL BAO ;定時報警
        LJMP MAIN1


        //=======報警子============================
        BAO:MOV R4,33H
        CJNE R4,#03H,YY1
        CLR P3.2
        ACALL KEY
        LJMP YY2
        YY1:CJNE R4,#05H,YY2
        SETB P3.2
        ACALL KEY
        YY2:RET


        //======掃描子程序=======================
        MAIN2:
        MOV A,30H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.0
        ACALL DELAY
        MOV A,31H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.1
        SETB P1.0
        ACALL DELAY
        MOV A,32H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.2
        SETB P1.1
        ACALL DELAY
        MOV A,33H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.3
        SETB P1.2
        ACALL DELAY
        MOV A,34H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.4
        SETB P1.3
        ACALL DELAY
        MOV A,35H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.5
        SETB P1.4
        ACALL DELAY
        MOV P0,#7FH
        MOV P1,#0EBH
        ACALL DELAY
        MOV P1,#0FFH
        RET

        //========秒表掃描子程序=========================
        MAIN3:
        MOV A,44H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.0
        ACALL DELAY
        MOV A,45H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.1
        SETB P1.0
        ACALL DELAY
        MOV A,46H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.2
        SETB P1.1
        ACALL DELAY
        MOV A,47H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.3
        SETB P1.2
        ACALL DELAY
        MOV A,48H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.4
        SETB P1.3
        ACALL DELAY
        MOV A,49H
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P1.5
        SETB P1.4
        ACALL DELAY
        MOV P0,#7FH
        MOV P1,#0EBH
        ACALL DELAY
        MOV P1,#0FFH
        RET

        //=======定時器T0中斷服務========================
        T00:MOV TH0,#0D8H
        MOV TL0,#0F0H
        INC R7
        CJNE R7,#64H,AA
        MOV R7,#00H
        //-------跑值--------------------------------
        TK1:INC 30H;每秒鐘秒個位增一
        MOV R6,30H
        CJNE R6,#0AH,AA
        MOV 30H,#00H
        TK2:INC 31H
        MOV R6,31H
        CJNE R6,#06H,AA
        MOV 31H,#00H
        TK3:INC 32H
        MOV R6,32H
        CJNE R6,#0AH,AA
        MOV 32H,#00H
        TK4:INC 33H
        MOV R6,33H
        CJNE R6,#06H,AA
        MOV 33H,#00H
        TK5:INC 34H
        MOV R5,34H
        MOV R6,35H
        CJNE R5,#04H,TK6
        CJNE R6,#02H,TK6
        MOV 34H,#00H
        MOV 35H,#00H
        TK6:CJNE R5,#0AH,AA
        MOV 34H,#00H
        INC 35H
        //-------秒表跑值----------------------
        AA:
        MOV R5,42H
        CJNE R5,#01H,TK7
        INC 44H
        TK7:MOV R5,44H
        CJNE R5,#0AH,AA1
        MOV 44H,#00H
        INC 45H
        MOV R5,45H
        CJNE R5,#0AH,AA1
        MOV 45H,#00H
        INC 46H
        MOV R5,46H
        CJNER5,#0AH,AA1
        MOV 46H,#00H
        INC 47H
        MOV R5,47H
        CJNE R5,#06H,AA1
        MOV 47H,#00H
        INC 48H
        MOV R5,48H
        CJNE R5,#0AH,AA1
        MOV 48H,#00H
        INC 49H
        MOV R5,49H
        CJNE R5,#06H,AA1
        MOV 49H,#00H

        AA1:RETI

        //====定時器T1中斷服務子程序====================
        //T11:MOV TH1,#0F0H
        // MOV TL1,#0B0H

        //RETI

        //******定時時間調整子程序*************************//
        TBAO:
        MOV 50H,#00H
        MOV 51H,#00H
        MOV 52H,#00H
        MOV 53H,#00H
        MOV 54H,#00H
        MOV 55H,#00H

        MOV R3,50H

        DJNZ 30H,RET1

        RET1: RET

        //======鍵盤掃描子程序==========================
        KEY:MOV P2,#0F0H
        MOV R3,P2
        CJNE R3,#0F0H,KE0
        LJMP KK13
        KE0:CJNE R3,#0E0H,KE1 ;P2.4行
        MOV P2,#0EFH
        JB P2.3,KK1 //用作調定時時間 ;K13 秒個位增一
        ACALL DELAY1
        ACALL TK1
        KK1:JB P2.2,KK2;K14 秒十增一
        ACALL DELAY1
        ACALL TK2
        KK2:JB P2.1,KK3;K15分個位增一
        ACALL DELAY1
        ACALL TK3
        KK3:JB P2.0,KE1;K16分十位增一
        ACALL DELAY1
        ACALL TK4
        KE1:MOV P2,#0DFH ;P2.5行
        JB P2.3,KK4;K9 時個位增一
        ACALL DELAY1
        ACALL TK5
        KK4:JB P2.2,KK5;K10 時十位增一
        ACALL DELAY1
        INC 35H
        MOV R3,35H
        CJNE R3,#03H,HH0
        MOV 35H,#00H
        LJMP KK5
        HH0:CJNE R3,#02H,HH1
        LJMP KK5
        HH1:CJNE R3,#01H,HH2
        LJMP KK5
        HH2:MOV 35H,#00H
        KK5:JB P2.1,KK6
        ACALL DELAY1;K11 開/關蜂鳴器
        CPL P3.2
        KK6:JB P2.0,KE2 ;K12 秒表暫停
        MOV 42H,#00H

        KE2:MOV P2,#0BFH;P.6行
        JB P2.3,KK7;K5時鐘暫停/取消暫停
        ACALL DELAY1
        CPL ET0
        KK7:JB P2.2,KK8 ;K6 顯示/休眠/流水燈
        ACALL DELAY2
        INC 40H
        MOV R3,40H
        CJNE R3,#04H,KK8
        MOV 40H,#01H
        KK8:JB P2.1,KK9
        // ACALL DELAY3;K7 秒表清0
        MOV 44H,#00H
        MOV 45H,#00H
        MOV 46H,#00H
        MOV 47H,#00H
        MOV 48H,#00H
        MOV 49H,#00H
        KK9:JB P2.0,KE3 ;K8秒表開始跑
        MOV 42H,#01H

        KE3:MOV P2,#7FH ;P2.7行
        JB P2.3,KK10 ;K1 秒十位減一
        ACALL DELAY1
        MOV R3,31H
        CJNE R3,#00H,JA1
        LJMP KK10
        JA1:DEC 31H
        KK10:JB P2.2,KK11 ;K2 分個位減一
        ACALL DELAY1
        MOV R3,32H
        CJNE R3,#00H,JA2
        LJMP KK11
        JA2: DEC 32H
        KK11:JB P2.1,KK12;K3分十位減一
        ACALL DELAY1
        MOV R3,33H
        CJNE R3,#00H,JA3
        LJMP KK12
        JA3:DEC 33H
        KK12:JB P2.0,KK13 ;K4時個位減一
        ACALL DELAY1
        MOV R3,34H
        CJNE R3,#00H,JA4
        LJMP KK13
        JA4:DEC 34H

        KK13:RET

        //=====流水燈子程序===========================
        LED: MOV A,#0feH
        MOV 41H,#08H
        MOV P0,#0FFH
        LED1:
        MOV P1,A
        MOV R3,#100
        D0: ACALL DELAY
        DJNZ R3,D0
        MOV R3,41H
        DJNZ R3,AAA
        LJMP BB
        AAA:RL A
        MOV 41H,R3
        ACALL KEY
        LJMP LED1
        BB:
        MOV 41H,#07H
        CC: MOV P1,A
        MOV R3,#30
        D1: ACALL DELAY
        DJNZ R3,D1
        MOV R3,41H
        DJNZ R3,DD
        LJMP LED0
        DD:RR A
        MOV 41H,R3
        ACALL KEY
        LJMP CC

        LED0:RET

        //=====延時子程序==============================
        DELAY:MOV R1,#250
        DEL1:NOP
        NOP
        NOP
        NOP
        DJNZ R1,DEL1
        RET
        //====調用時鐘顯示作延時========================
        DELAY1:MOV R2,#20
        DELA3: ACALL MAIN2
        DJNZ R2,DELA3
        RET
        //====調用秒表顯示作延時========================
        DELAY3:MOV R2,#20
        DELA5:ACALL MAIN3
        DJNZ R2,DELA5
        RET
        //====調用延時子程序作延時======================
        DELAY2:MOV R2,#100
        DELA4:ACALL DELAY
        DJNZ R2,DELA4
        RET
        //======共陽數碼管段碼表=================================
        TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,87H
        END

        51單片機相關文章:51單片機教程


        蜂鳴器相關文章:蜂鳴器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 河源市| 康保县| 民勤县| 农安县| 克拉玛依市| 广水市| 桐城市| 徐闻县| 安平县| 南昌市| 怀安县| 金山区| 合江县| 华蓥市| 新晃| 博湖县| 陇南市| 合作市| 万盛区| 色达县| 沈丘县| 瑞昌市| 桦南县| 柏乡县| 平乐县| 南陵县| 永清县| 贵港市| 德惠市| 贵定县| 郎溪县| 思茅市| 洪江市| 屏边| 江山市| 巴南区| 巍山| 论坛| 长葛市| 禹城市| 永福县|