欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

智能收費系統軟件源代碼

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年05月09日   【字體:

采用mcs-51單片機時鐘頻率為6MHZ采用T0工作方式2

OUTBIT  EQU 08002h  ; 位控制口

OUTSEG  EQU 08004h  ; 段控制口

IN        EQU 08001h  ; 鍵盤讀入口

LEDBuf  EQU  60h     ;顯示緩沖

Hour    EQU  40h     ;存放時信息計數單元

Minute  EQU  41h      ;存放分信息計數單元

Second  EQU  42h     ; 存放秒信息計數單元

C100us  EQU  43h    

Tick    EQU  10000   

T100us  EQU  256-50  

LGMP  StArt           ;跳轉到程序入口

org     000Bh

T0Int:

       PUSH    DPL

       PUSH    DPH

       PUSH    ACC    ;保護斷點

       ORL P1, #01H

       ANL P1, #0FEH  ;當車進停車場時由系統產生下降沿脈沖觸發硬件電路開始計時

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) ;從新設置技術單元C100us的初值

INC     Second            ;秒單元加1

       MOV     A, Second

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

 MOV     Second, #0         ;需要向分計數單元進位秒計數單元先清零

       INC     Minute             ;分計數單元加1

       MOV     A, Minute        

       CJNE    A, #60, Exit          ;判斷分計數單元是否加到60

 MOV     Minute, #0         ;需要向時計數單元進位分技術單元先清零

       INC     Hour                ;時計數單元加1

Exit:

       POP     DPL

       POP     DPH

       POP     PSW                  ;恢復斷點

       RETI

DelAy:               ; 延時子程序

       MOV   r7, #0

DelAyLoop:

       DJNZ  r7, DelAyLoop

       DJNZ  r6, DelAyLoop   ;實現延時

       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個八段管

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

Loop:

       MOV   DPTR, #OUTBIT

       MOV   A, #0

       MOVX @DPTR, A        ; 關所有八段管

MOV   A, @r0

       MOV   DPTR, #OUTSEG

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

       MOV   DPTR, #OUTBIT

       MOV   A, r2

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

 MOV   r6, #1

       CAll  DelAy            ;調用延時程序

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, 定時器

       MOV     TH0, #T100us

       MOV     TL0, #T100us          ;給T0賦初值

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

MOV     Hour, #0

       MOV     Minute, #0

       MOV     Second, #0          ;將時分秒單元分別清零

       MOV     C100us, #high(Tick)

       MOV     C100us+1, #low(Tick)  ;設定計數初值

       SETB   TR0                ; 啟動定時器T0

  

MLoop:

       MOV     A, Hour  

       MOV     B, #10

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

       CAll    ToLED   ;調用查表程序

       MOV     LEDBuf, A;將顯示值放到顯示緩沖區

       MOV     A, B

       CAll    ToLED

       ORL     A, #80h    ;得到時的低位值:

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

MOV     A, Minute

       MOV     B, #10

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

       CAll    ToLED      ;調用查表程序

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

       MOV     A, B

       CAll    ToLED

       ORL     A, #80h     ;得到時的低位值:

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

MOV     A, Second 

       MOV     B, #10

 DIV     AB   

                                                                                                                


 CAll    ToLED         ;調用查表程序

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

       MOV     A, B

       CAll    ToLED         ;調用查表程序

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

CAll    DisplAyLED    ;調用顯示程序顯示所有的結果

       MOV A, Hour

       MOV B, #8

MUL AB     

MOV R3,B         ;計算整小時費用

       MOV A, Minute   

       MOV B, #60

DIV AB

MOV B, #8

MUL AB

MOV A, B      ;計算分費用

ADD A, R3    ;總費用

Ljmp    Mloop

 End
完整代碼下載: http://www.raoushi.com/ziliao/file/tcc1.rar

關閉窗口

相關文章