色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 智能收費系統(tǒng)軟件源代碼

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

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

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

          OUTBIT EQU 08002h ; 位控制口

          OUTSEG EQU 08004h ; 段控制口

          IN EQU 08001h ; 鍵盤讀入口

          LEDBuf EQU 60h ;顯示緩沖

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

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

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

          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 ;當車進停車場時由系統(tǒng)產生下降沿脈沖觸發(fā)硬件電路開始計時

          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 ;需要向分計數(shù)單元進位秒計數(shù)單元先清零

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

          MOV A, Minute

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

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

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

          Exit:

          POP DPL

          POP DPH

          POP PSW ;恢復斷點

          RETI

          DelAy: ; 延時子程序

          MOV r7, #0

          DelAyLoop:

          DJNZ r7, DelAyLoop

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

          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) ;設定計數(shù)初值

          SETB TR0 ; 啟動定時器T0

          MLoop:

          MOV A, Hour

          MOV B, #10

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

          CAll ToLED ;調用查表程序

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

          MOV A, B

          CAll ToLED

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

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

          MOV A, Minute

          MOV B, #10

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

          CAll ToLED ;調用查表程序

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

          MOV A, B

          CAll ToLED

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

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

          MOV A, Second

          MOV B, #10

          DIV AB


          CAll ToLED ;調用查表程序

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

          MOV A, B

          CAll ToLED ;調用查表程序

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

          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



          評論


          相關推薦

          技術專區(qū)

          關閉