新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機打鈴器設計

        單片機打鈴器設計

        作者: 時間:2013-03-12 來源:網絡 收藏

        ;**** 設計 **************************************************
        ;* 編號:LRDZAVR0100 
        ;* 標題: 32點例程
        ;* 文件名:timecontr.asm
        ;* 版本: 1.0
        ;* 開始日期: 02.06.13
        ;* 目標MCU:
        ;* 技術支持: http://www.dianz.cn
        ;* 硬件結構: PA0-5對應6個LED數顯管的位 ,PC0-7對應各LED數顯管的段 ,PB4-7為鍵盤。
        ;* 軟件描述: 上電后,時鐘從00.00.00(時/分/秒)自動走時,在走時狀態時 , 按PB4(設定
        ;* 鍵)超過3秒可循環選擇調整時間/工作參數 ,接著按PB5以確定選擇的操作 ,進入調整操作后 ,
        ;* 按PB5選擇欲調整參數,按PB6(增加鍵)完成調整參數操作 。按PB7,進入時控運行,PB1亮,
        ;* 再按PB7停止時控運行,回顯走時。在定時到時,PB0點亮。
        ;******************************************************

        .device
        .include "8515def.inc"
        .equ DISBUF = $0060 ;顯示緩沖區起始地址
        .equ TIMEDIS = $0066 ;時鐘時分秒存放單元
        .equ XSDBZ = $0073 ;小數點位標志
        .equ DISTBL = $0f00 ;顯示字符編碼表起始地址
        .equ TIMECTR = $0010 ;32段時間控制表首址(EEPRON)
        .equ TIMECBZ = $0080 ;控制時間到標志
        .cseg
        .org $0000
        rjmp RESET
        .org $0007
        rjmp TIM0_OVF

        ;****設計主程序*****************************************************

        .def cntms =r9
        .def hour =r10
        .def minute =r11
        .def second =r12
        .def EEdwr =r16
        .def EEawr =r17
        .def EEawrh =r18
        .def EEdrd =r16
        .def EEard =r17
        .def EEardh =r18
        .def temp =r20
        .def temp1 =r21
        .def temp2 =r22
        .def temp3 =r23
        .def temp4 =r24
        .def TIM0INT =r19

        .org $0020
        RESET: ldi temp,low(ramend) ;設置堆棧指針
        out spl,temp
        ldi temp,high(ramend)
        out sph,temp
        ldi temp,0b11111111 ;設置各口線輸入輸出狀態
        out ddra,temp
        ldi temp,0b00000011
        out ddrb,temp
        ldi temp,0b11111111
        out ddrc,temp
        ldi zl,TIMECBZ
        clr zh
        clr temp
        st y,temp
        clr r9 ;清各工作寄存器
        clr r10
        clr r11
        clr r12
        clr r13
        clr r14
        clr r15
        clr r16
        clr r17
        clr r18
        clr r19
        clr r25
        ldi temp,$5
        out tccr0,temp ;T0設置ck/1024分頻
        ldi temp,256-195
        out tcnt0,temp ;裝T0時間常數
        res1: ldi temp,$02 ;允許T0中斷,并計時
        out timsk,temp
        sei ;開中斷
        res2: clr r6
        clr r7
        sbi PORTb,1
        sbi PORTB,0
        res3: ldi temp,$af
        res4: rcall colodis ;時鐘走時顯示
        dec temp
        brne res4
        sbis pinb,7 ;鍵掃描
        rjmp PB7M
        sbis pinb,4
        rjmp BP4M ;去參數設置
        rjmp res3

        ;****《系統功能程序》

        .org $0080 ;定義系統功能程序存放區首址

        ;****32點打鈴器工作程序*******************************************************

        PB7M: cbi PORTb,1 ;置運行指示燈亮
        clr r25
        clr r7
        GNCX11:ldi r17,TIMECTR ;首個控制點EEPRON地址
        clr r18
        lsl r25
        lsl r25
        add r17,r25 ;取得EEPRON中控制點地址(Aj=A0+4*j),A=(r17),j=(r25)
        lsr r25
        lsr r25
        rcall EERead
        cpi r16,0
        breq GNCX12 ;r16=(r17)=0為“ON”
        inc r25
        cpi r25,31
        brmi GNCX11
        rjmp GNCX16
        GNCX12:inc r17
        rcall EERead
        cp r16,r10
        brne GNCX13
        inc r17
        rcall EERead
        cp r16,r11
        brne GNCX14
        inc r17
        rcall EERead
        mov r7,r16
        inc r7
        cbi PORTb,0
        rjmp GNCX15
        GNCX13:dec r17
        inc r25
        rjmp GNCX11
        GNCX14:dec r17
        dec r17
        inc r25
        rjmp GNCX11
        GNCX15:cpi TIM0INT,1
        brne GNCX17
        clr TIM0INT
        dec r7
        brne GNCX17
        clr r7
        sbi PORTb,0
        rjmp GNCX16
        GNCX17:rcall colodis
        sbic pinb,7
        rjmp GNCX15
        rjmp res2
        GNCX16:ldi temp,$5f
        GNCX18:rcall colodis
        dec temp
        brne GNCX18
        sbic pinb,7
        rjmp GNCX11
        rjmp res2

        ;****打鈴器參數設置

        BP4M: ldi temp3,$ff
        ldi temp4,$f
        BP4M1: nop
        rcall colodis
        sbic pinb,4
        rjmp res1
        dec temp3 ;PB4有按下
        brne BP4M1
        inc temp3
        dec temp4
        brne BP4M1
        ldi temp3,$ff ;超3秒進入
        ldi temp4,$f
        BP4M2: clr yh
        ldi yl,low(DISBUF) ;設置顯示cloc.
        ldi temp,25
        st y+,temp
        st y+,temp
        ldi temp,18
        st y+,temp
        ldi temp,19
        st y+,temp
        ldi temp,20
        st y+,temp
        ldi temp,18
        st y,temp
        ldi zl,low(XSDBZ)
        clr zh
        ldi temp,0b00100000 ;b0-5對應LED自左到右1-6位的小數點,置“1”在該位置小數點。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 滁州市| 靖江市| 丰城市| 长春市| 井陉县| 会同县| 杭锦旗| 咸宁市| 保山市| 南开区| 苏尼特右旗| 长沙县| 黄骅市| 桐乡市| 上虞市| 乌拉特前旗| 陇西县| 瑞丽市| 沈丘县| 汝阳县| 淮南市| 秦皇岛市| 兴隆县| 宽城| 犍为县| 永新县| 灌南县| 普洱| 金寨县| 久治县| 南安市| 双柏县| 汤原县| 美姑县| 香港 | 泰宁县| 金山区| 凤凰县| 茂名市| 雷山县| 镇宁|