新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī) 電子時(shí)鐘(匯編)

        單片機(jī) 電子時(shí)鐘(匯編)

        作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
        今天很高興,一次性就把這個(gè)電子時(shí)鐘寫了出來(今晚的單片機(jī)實(shí)驗(yàn),記得去年自學(xué)單片機(jī)的時(shí)候,這個(gè)還真是寫不出來,不過這個(gè)時(shí)鐘只是靜態(tài)的,不能夠用手工來修改,這點(diǎn)還是不夠完善,以后有時(shí)間了的話,我重新寫一下,呵呵)

        count equ 9217 ;定義1s計(jì)數(shù)值,對(duì)于11.0592的晶振來說,延時(shí)10ms

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

        second equ 30h ;定義臨時(shí)變量區(qū)

        second_ge equ 31h

        second_shi equ 32h

        minute equ 33h

        minute_ge equ 34h

        minute_shi equ 35h

        hour equ 36h

        hour_ge equ 37h

        hour_shi equ 38h

        org 0000h

        sjmp main ;進(jìn)入主程序

        org 0003h

        reti

        org 000bh ;time0(定時(shí)器/計(jì)數(shù)器T0入口地址)

        ljmp int_time0 ;跳轉(zhuǎn)到中斷0服務(wù)程序

        org 001bh

        reti

        org 0023h

        reti

        main:

        mov r0,#0 ;初始化程序(本程序初始值設(shè)為13:33:22)

        mov second,#22

        mov second_ge,#0

        mov second_shi,#0

        mov minute,#33

        mov minute_ge,#0

        mov minute_shi,#0

        mov hour,#13

        mov hour_ge,#0

        mov hour_shi,#0

        mov tmod,#00000001b

        mov th0,#high(65536-count) ;取高八位數(shù)據(jù)

        mov tl0,#low(65536-count) ;取底五位

        clr tf0

        setb ea

        setb et0

        setb tr0 ;開始計(jì)時(shí)

        loop:

        lcall digitor_display ;調(diào)用數(shù)碼管掃描顯示程序

        sjmp loop ;程序在此循環(huán)

        ;定時(shí)器0中斷

        int_time0:

        push acc

        push psw

        clr tf0

        mov th0,#high(65536-count) ;取高八位數(shù)據(jù)

        mov tl0,#low(65536-count) ;取底五位

        inc r0

        cjne r0,#100,ret_loop ;秒值加一

        sjmp second_add

        second_add: ;秒值處理

        mov r0,#0

        inc second

        mov a,second

        cjne a,#60, ret_loop

        sjmp minute_add

        minute_add: ;分值處理

        mov second,#0

        inc minute

        mov a,minute

        cjne a,#60, ret_loop

        sjmp hour_add

        hour_add: ;小時(shí)處理

        mov minute,#0

        inc hour

        mov a,hour

        cjne a,#24,ret_loop

        sjmp hour_reset

        hour_reset:

        mov hour,#0

        ret_loop:

        pop psw

        pop acc

        reti ;中斷返回

        digitor_display: ;數(shù)碼管掃描

        push acc

        push psw

        mov a,second

        mov b,#10

        div ab

        mov second_shi,a

        mov second_ge,b

        mov a,minute

        mov b,#10

        div ab

        mov minute_shi,a

        mov minute_ge,b

        mov a,hour

        mov b,#10

        div ab

        mov hour_shi,a

        mov hour_ge,b

        mov p1,#11011111b ;顯示秒鐘的個(gè)位

        mov a,second_ge

        mov dptr,#table

        movc a,@a+dptr

        mov p2,a

        lcall delay

        mov p1,#11101111b ;顯示秒鐘的十位

        mov a,second_shi

        mov dptr,#table

        movc a,@a+dptr

        mov p2,a

        lcall delay

        mov p1,#11110111b ;顯示分鐘的個(gè)位

        mov a,minute_ge

        mov dptr,#table

        movc a,@a+dptr

        mov p2,a

        lcall delay

        mov p1,#11111011b ;顯示分鐘的十位

        mov a,minute_shi

        mov dptr,#table

        movc a,@a+dptr

        mov p2,a

        lcall delay

        mov p1,#11111101b ;顯示小時(shí)的個(gè)位

        mov a,hour_ge

        mov dptr,#table

        movc a,@a+dptr

        mov p2,a

        lcall delay

        mov p1,#11111110b ;顯示小時(shí)的十位

        mov a,hour_shi

        mov dptr,#table

        movc a,@a+dptr

        mov p2,a

        lcall delay

        pop psw

        pop acc

        ret ;掃描程序返回

        table: ;共陰極數(shù)碼管掃描碼

        DB 3FH ;0

        DB 06H ;1

        DB 5BH ;2

        DB 4FH ;3

        DB 66H ;4

        DB 6DH ;5

        DB 7DH ;6

        DB 27H ;7

        DB 7FH ;8

        DB 6FH ;9

        delay: mov r4,#5 ;延時(shí)函數(shù)(延時(shí)大概5*255*2=25ms)

        l1: mov r5,#0ffh

        l2: djnz r5,$

        djnz r4,l1

        ret

        end



        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 辛集市| 渭南市| 名山县| 宜君县| 什邡市| 交城县| 遵义县| 延安市| 通化县| 乐陵市| 乐亭县| 琼海市| 广水市| 勐海县| 水城县| 桂平市| 德州市| 鲁山县| 绍兴市| 饶平县| 惠安县| 闻喜县| 绍兴县| 灌南县| 广西| 辉县市| 赤峰市| 永嘉县| 勃利县| 克拉玛依市| 灌云县| 易门县| 磐石市| 永昌县| 昌黎县| 嵊州市| 绩溪县| 曲水县| 景泰县| 宁津县| 丰顺县|