新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 智能收費(fèi)系統(tǒng)軟件源代碼

        智能收費(fèi)系統(tǒng)軟件源代碼

        作者: 時(shí)間:2012-10-27 來源:網(wǎng)絡(luò) 收藏

        采用為6MHZ采用T0工作方式2

        OUTBIT EQU 08002h ; 位控制口

        OUTSEG EQU 08004h ; 段控制口

        IN EQU 08001h ; 鍵盤讀入口

        LEDBuf EQU 60h ;顯示緩沖

        Hour EQU 40h ;存放時(shí)信息計(jì)數(shù)單元

        Minute EQU 41h ;存放分信息計(jì)數(shù)單元

        Second EQU 42h ; 存放秒信息計(jì)數(shù)單元

        C100us EQU 43h

        Tick EQU 10000

        T100us EQU 256-50

        LGMP StArt ;跳轉(zhuǎn)到程序入口

        org 000Bh

        T0Int:

        PUSH DPL

        PUSH DPH

        PUSH ACC ;保護(hù)斷點(diǎn)

        ORL P1, #01H

        ANL P1, #0FEH ;當(dāng)車進(jìn)停車場(chǎng)時(shí)由系統(tǒng)產(chǎn)生下降沿脈沖觸發(fā)硬件電路開始計(jì)時(shí)

        MOV A, C100us+1

        JNZ Goon

        DEC C100us

        Goon:

        DEC C100us+1

        MOV A, C100us

        ORL A, C100us+1

        JNZ Exit ;判斷是否溢出10000次

        MOV C100us, #high(Tick)

        MOV C100us+1, #low(Tick) ;從新設(shè)置技術(shù)單元C100us的初值

        INC Second ;秒單元加1

        MOV A, Second

        CJNE A, #60, Exit ;判斷秒技術(shù)單元是否累加到60

        MOV Second, #0 ;需要向分計(jì)數(shù)單元進(jìn)位秒計(jì)數(shù)單元先清零

        INC Minute ;分計(jì)數(shù)單元加1

        MOV A, Minute

        CJNE A, #60, Exit ;判斷分計(jì)數(shù)單元是否加到60

        MOV Minute, #0 ;需要向時(shí)計(jì)數(shù)單元進(jìn)位分技術(shù)單元先清零

        INC Hour ;時(shí)計(jì)數(shù)單元加1

        Exit:

        POP DPL

        POP DPH

        POP PSW ;恢復(fù)斷點(diǎn)

        RETI

        DelAy: ; 延時(shí)子程序

        MOV r7, #0

        DelAyLoop:

        DJNZ r7, DelAyLoop

        DJNZ r6, DelAyLoop ;實(shí)現(xiàn)延時(shí)

        RET

        LEDMAP: ; 八段管顯示碼

        dB 3fh, 06h, 5Bh, 4fh, 66h, 6dh, 7dh, 07h

        dB 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h

        DisplAyLED:

        MOV r0, #LEDBuf

        MOV r1, #6 ; 共6個(gè)八段管

        MOV r2, #00100000B ; 從左邊開始顯示

        Loop:

        MOV DPTR, #OUTBIT

        MOV A, #0

        MOVX @DPTR, A ; 關(guān)所有八段管

        MOV A, @r0

        MOV DPTR, #OUTSEG

        MOVX @DPTR,A ;將要顯示的值放到段控制口

        MOV DPTR, #OUTBIT

        MOV A, r2

        MOVX @DPTR, A ; 顯示一位八段管

        MOV r6, #1

        CAll DelAy ;調(diào)用延時(shí)程序

        MOV A, r2 ; 顯示下一位

        RR A

        MOV r2, A

        INC r0 ;找到要顯示下一位地址

        DJNZ r1, Loop ;判斷是否全部顯示

        RET

        ToLED:

        MOV DPTR, #LEDMAp

        MOVC A, @A+DPTR ;查表顯示

        RET

        StArt:

        MOV TMOD, #02h ; 模式2, 定時(shí)器

        MOV TH0, #T100us

        MOV TL0, #T100us ;給T0賦初值

        MOV IE, #10000010B ; EA=1, IT0 = 1

        MOV Hour, #0

        MOV Minute, #0

        MOV Second, #0 ;將時(shí)分秒單元分別清零

        MOV C100us, #high(Tick)

        MOV C100us+1, #low(Tick) ;設(shè)定計(jì)數(shù)初值

        SETB TR0 ; 啟動(dòng)定時(shí)器T0

        MLoop:

        MOV A, Hour

        MOV B, #10

        DIV AB ;求的時(shí)的高位放到A

        CAll ToLED ;調(diào)用查表程序

        MOV LEDBuf, A;將顯示值放到顯示緩沖區(qū)

        MOV A, B

        CAll ToLED

        ORL A, #80h ;得到時(shí)的低位值:

        MOV LEDBuf+1, A;將顯示值放到顯示緩沖區(qū)的下一地址

        MOV A, Minute

        MOV B, #10

        DIV AB ;求的分的高位放到A

        CAll ToLED ;調(diào)用查表程序

        MOV LEDBuf+2, A;將顯示值放到顯示緩沖區(qū)下一地址

        MOV A, B

        CAll ToLED

        ORL A, #80h ;得到時(shí)的低位值:

        MOV LEDBuf+3, A ;將顯示值放到顯示緩沖區(qū)的下一地址

        MOV A, Second

        MOV B, #10

        DIV AB


        CAll ToLED ;調(diào)用查表程序

        MOV LEDBuf+4, A ;將顯示值放到顯示緩沖區(qū)的下一地址

        MOV A, B

        CAll ToLED ;調(diào)用查表程序

        MOV LEDBuf+5, A ;將顯示值放到顯示緩沖區(qū)的下一地址

        CAll DisplAyLED ;調(diào)用顯示程序顯示所有的結(jié)果

        MOV A, Hour

        MOV B, #8

        MUL AB

        MOV R3,B ;計(jì)算整小時(shí)費(fèi)用

        MOV A, Minute

        MOV B, #60

        DIV AB

        MOV B, #8

        MUL AB

        MOV A, B ;計(jì)算分費(fèi)用

        ADD A, R3 ;總費(fèi)用

        Ljmp Mloop

        End



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 谷城县| 都匀市| 溧水县| 顺平县| 杭锦后旗| 册亨县| 利津县| 柳河县| 寿宁县| 福清市| 罗平县| 南涧| 和顺县| 林甸县| 长顺县| 马公市| 绿春县| 德阳市| 通许县| 呼玛县| 丰宁| 龙里县| 绍兴县| 成安县| 共和县| 永州市| 蛟河市| 嵩明县| 临城县| 施甸县| 容城县| 淅川县| 湘西| 南安市| 乐都县| 密云县| 榆树市| 砀山县| 永州市| 霞浦县| 余干县|