新聞中心

        EEPW首頁 > 嵌入式系統(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)停車場時(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



        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 濮阳县| 兴义市| 娄烦县| 高青县| 石楼县| 会理县| 乌拉特中旗| 西藏| 茌平县| 武威市| 密云县| 山阴县| 吉林省| 遂川县| 来凤县| 自贡市| 汝南县| 即墨市| 三亚市| 鹤峰县| 开封市| 抚顺市| 大姚县| 双流县| 蕲春县| 林甸县| 仁布县| 渝中区| 建德市| 左云县| 漯河市| 中阳县| 邓州市| 若羌县| 宁安市| 湛江市| 万山特区| 襄汾县| 柳河县| 宜阳县| 长寿区|