新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MCS-51單片機(jī)的智能時(shí)鐘控制系統(tǒng)設(shè)

        基于MCS-51單片機(jī)的智能時(shí)鐘控制系統(tǒng)設(shè)

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

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

        ……

        ;**************************; 以下為主程序 (檢測(cè)各鍵是否按下)
        ;***************************MainLoop:
        jb AlarmSetKey,CheckMinuteKey
        call Delay
        jb AlarmSetKey,CheckMinuteKey
        setb ClockMode
        call AlarmSet
        CheckMinuteKey:
        jb MinuteKey,CheckHourKey
        mov a,Minute
        add a,#1
        mov Minute,a
        cjne a,#3ch,NotOver1
        mov Minute,#0
        NotOver1:
        jnb MinuteKey,$
        CheckHourKey:
        jb HourKey,CheckAlarmA
        mov a,Hour
        add a,#1
        mov Hour,a
        cjne a,#18h,NotOver2
        mov Hour,#0
        NotOver2:
        jnb HourKey,$
        CheckAlarmA:
        jnb AlarmTimeOnA,CheckAlarmP
        call StartPc; call AlarmProcess
        ajmp ToReturn
        CheckAlarmP:
        jnb AlarmTimeOnP,ToReturn
        call ShutPc
        ToReturn:
        ajmp MainLoop
        ;**************************; 定時(shí)器Timer0中斷服務(wù)程序(此程序每8ms執(zhí)行一次)
        ;***************************
        TimeInt:
        mov th0,#0E0h
        mov tl0,#0bfh
        push acc
        push psw
        SETB rs0
        clr rs1
        d jnz OneSecondCounter,NotoneSecond
        mov OneSecondCounter,#125
        call Clock
        call ConvertoBuffer
        NotoneSecond:
        call ScanDisplay
        pop psw
        pop acc
        reti
        ; ***************************
        ; 掃描顯示子程序
        ;***************************
        ScanDisplay:
        mov r1,#DisplayBuffer
        mov R4,#11111011b
        play:
        mov a,R4
        mov P2,A
        mov A,@R1
        mov DPTR,#TAB
        movc A,@A+DPTR
        mov P0,A
        lcall Delay
        inc R1
        mov A,R4
        jnb ACC.7,ENDOUT
        rl A
        mov R4,A
        ajmp PLAY
        endout: SETB P2.7
        mov P0,#0FFH ret
        TAB:DB 0C0H,0F9H,0A4H,0B0H,
        99H,92H,82H,0F8H,80H,90H,7FH,
        0B7H,0FFH
        ;***************************
        ; 內(nèi)容加1秒的子程序
        ;***************************
        Clock:
        mov a,Second
        add a,#1
        mov Second,a
        cjne a,#3cH,NotOverFlow
        mov Second,#0
        mov a,Minute
        add a,#1
        mov Minute,a
        cjne a,#3cH,NotOverFlow
        mov Minute,#0
        mov a,Hour
        add a,#1
        mov Hour,a
        cjne a,#18H,NotOverFlow
        mov Hour,#0
        NotOverFlow:
        mov a,Second
        jnz NotAlarm
        jnb AlarmAOnOff,PAlarm
        mov a,Minute
        cjne a,AlarmAMinute,PAlarm
        mov a,Hour
        cjne a,AlarmPHour,PAlarm
        ajmp alarming
        PAlarm:
        jnb AlarmPOnOff,NotAlarm
        mov a,Minute
        cjne a,AlarmPMinute,NotAlarm
        mov a,Hour
        cjne a,AlarmPHour,NotAlarm
        ajmp Alarming1
        Alarming:
        setb AlarmTimeOnA
        ajmp NotAlarm
        Alarming1:
        setb AlarmTimeOnP;
        NotAlarm:
        ret
        ;***************************
        ; 將內(nèi)容或鬧時(shí)設(shè)置值轉(zhuǎn)換到顯示緩沖區(qū)子程序
        ;***************************
        ConvertoBuffer:
        mov r1,#DisplayBuffer
        jb ClockMode,DispAlarmSet
        mov a,Second
        mov DispSecond,a
        mov a,Minute
        mov Dispminute,a
        mov a,Hour
        mov DispHour,a
        ajmp Convert
        DispAlarmSet:
        jb AlarmAOnOff,AlarmAOn
        mov DispSecond,#00h
        jb AlarmPOnOff,AlarmPOn
        mov DispSecond,#00h
        ajmp Convert
        AlarmAOn:
        mov DispSecond,#11
        NextA:
        mov a,AlarmAMinute
        mov Dispminute,a
        mov a,AlarmAHour
        mov DispHour,a
        ajmp Convert
        AlarmPOn:
        mov DispSecond,#11
        NextP:
        mov a,AlarmPMinute
        mov Dispminute,a
        mov a,AlarmPHour
        mov DispHour,a
        Convert:
        mov a,DispSecond
        mov b,#10
        div ab
        mov @r1,b
        inc r1
        mov @r1,a
        inc r1
        mov a,DispMinute
        mov b,#10
        div ab
        mov @r1,b
        inc r1
        mov @r1,a
        inc r1
        mov a,DispHour
        mov b,#10
        div ab
        mov @r1,b
        inc r1
        mov @r1,a
        ret


        結(jié)束語(yǔ)

        ,以AT89C51微處理器為核心,具有集成度高、性能穩(wěn)定、抗干擾能力強(qiáng)、性價(jià)比高的優(yōu)點(diǎn)。經(jīng)軟件仿真和實(shí)際功能驗(yàn)證,證明設(shè)計(jì)可靠、設(shè)計(jì)方案可行,在實(shí)際應(yīng)用中有較大的實(shí) 用價(jià)值。


        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 崇信县| 兴和县| 太白县| 三门峡市| 清丰县| 静安区| 徐汇区| 台山市| 祁门县| 璧山县| 天气| 财经| 裕民县| 长白| 绥江县| 河间市| 四子王旗| 晴隆县| 临潭县| 丹凤县| 红安县| 宜阳县| 晋中市| 晴隆县| 临邑县| 高碑店市| 天全县| 惠安县| 尼勒克县| 大悟县| 卓尼县| 临江市| 汶川县| 新疆| 沛县| 金阳县| 晴隆县| 察哈| 景东| 洛南县| 祁连县|