久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 簡(jiǎn)單的C8051F310單片機(jī)實(shí)現(xiàn)倒計(jì)時(shí)功能源代碼 [打印本頁(yè)]

作者: w2472659957    時(shí)間: 2019-6-5 12:09
標(biāo)題: 簡(jiǎn)單的C8051F310單片機(jī)實(shí)現(xiàn)倒計(jì)時(shí)功能源代碼
任務(wù)要求
利用C8051F310單片機(jī)設(shè)計(jì)一個(gè)倒計(jì)時(shí)定時(shí)器,功能要求及主要技術(shù)指標(biāo)要求如下:
1.  定時(shí)時(shí)間為9秒,定時(shí)精度為1秒 。
2.  在LED數(shù)碼管上顯示剩余時(shí)間。
3.  時(shí)間到0時(shí),蜂鳴器鳴響1次(0.5秒鐘)。
4.  通過KINT鍵實(shí)現(xiàn)啟動(dòng)和暫停功能,暫停時(shí)D9燈亮。
        5.  利用單片機(jī)內(nèi)部定時(shí)器定時(shí),KINT鍵輸入和定時(shí)器控制均要求采用中斷方式。

以1秒定時(shí)器及相關(guān)循環(huán)構(gòu)成的倒計(jì)時(shí)模塊為整個(gè)程序的核心,再根據(jù)其他要求設(shè)計(jì)分支模塊實(shí)現(xiàn)目標(biāo)。1秒定時(shí)器以0.125s延時(shí)中斷為基礎(chǔ),執(zhí)行8次循環(huán)構(gòu)成1s定時(shí)器,同時(shí)對(duì)1s定時(shí)器進(jìn)行9次循環(huán),完成倒計(jì)時(shí)定時(shí)器的基本內(nèi)容。
分支模塊包括:段碼轉(zhuǎn)換輸出、KINT啟動(dòng)/暫停、蜂鳴器定時(shí)鳴響以及D9燈控制。
段碼轉(zhuǎn)換輸出:不需要多余邏輯,通過計(jì)算得出0~9對(duì)應(yīng)段碼,然后直接通過MOV指令進(jìn)行轉(zhuǎn)換輸出即可。
KINT啟動(dòng)/暫停:已知KINT鍵按下為低電平,則選擇任意位置輸入電平,利用JB指令進(jìn)行判斷,同時(shí)設(shè)置外部中斷0,并將其設(shè)為最高優(yōu)先級(jí)。最后添加15ms消抖。
蜂鳴器定時(shí)鳴響:不需要多余邏輯,已知蜂鳴器高電平下鳴響,則在MAIN函數(shù)中首先通過CLR P3.0使其關(guān)閉,再在倒計(jì)時(shí)結(jié)束后使其鳴響,并添加一個(gè)0.5s定時(shí)器使其延時(shí)0.5s。
D9燈控制:不需要多余邏輯,已知D9獨(dú)立指示燈低電平點(diǎn)亮,則將其與KINT聯(lián)系,KINT鍵按下時(shí)點(diǎn)亮D9,再次按下KINT即關(guān)閉,相當(dāng)于D9作為暫停指示燈,D9點(diǎn)亮則程序中斷,D9熄滅則正常運(yùn)行。
;------------------------------------
;-  Generated Initialization File  --
;------------------------------------

$include (C8051F310.inc)

public  Init_Device

                TH EQU 06H
                TL EQU 0C6H

                ORG 0000H
                LJMP MAIN

                ORG 0003H
                LJMP KINT

                ORG 000BH
                LJMP CLOCK

                ORG 001BH
                LJMP CLOCK1

                ORG 0100H
MAIN:        LCALL Init_Device
                SETB EA
                SETB ET0
                SETB ET1
                SETB EX0
                SETB PX0
                SETB IT0

                CLR P0.6
                CLR P0.7                   ;點(diǎn)亮數(shù)碼管0

                MOV TH0,#TH
                MOV TL0,#TL
                MOV TH1,#TH
                MOV TL1,#TL

                MOV R1,#9
                MOV R2,#8
                MOV  DPTR, #TAB  ;確保9以段碼輸出.
        MOV  A, R1
        MOVC A, @A+DPTR  
        MOV  P1, A      

                MOV 50H,#0

                CLR P0.0
                CLR P3.1

                SJMP $

CLOCK:        CJNE R2,#0,LOOP
                MOV R2,#8
                DEC R1                                         
                MOV  DPTR, #TAB  ;段碼表地址.
        MOV  A, R1
        MOVC A, @A+DPTR  ;查表.
        MOV  P1, A       ;送到P1去顯示.
                CJNE R1,#0,LOOP         ;判斷是否為0

                MOV 50H,#0

                CLR P0.0                 ;點(diǎn)亮D9
                SETB P3.1                 ;鳴響蜂鳴器
                CLR TR0
                SETB TR1
                MOV R1,#10

LOOP:         MOV TH0,#TH
                MOV TL0,#TL

                DEC R2
                RETI

KINT:        MOV A,50H
                INC 50H                        
                MOV R6,#250                  ;KINT消抖延時(shí)
L4:                MOV R7,#30
L5:                DJNZ R7,L5
                DJNZ R6,L4
                JB ACC.0,STOP
                SETB P0.0
                SETB TR0
                RETI

STOP:        CLR P0.0
                CLR TR0
                RETI

CLOCK1:        CJNE R0,#0,LOOP1
                MOV R0,#4                                         ;0.5s定時(shí)器1
                CLR P3.1                             ;停止蜂鳴器
                CLR TR1                                                 ;關(guān)閉定時(shí)器

LOOP1:         MOV TH1,#TH
                MOV TL1,#TL

                DEC R0
                RETI

TAB:    DB  0xfc,0x60,0xda,0xf2,0x66  ;共陰極段碼 0~4
        DB  0xb6,0xbe,0xe0,0xfe,0xf6  ;共陰極段碼 5~9

INIT SEGMENT CODE
    rseg INIT

; Peripheral specific initialization functions,
; Called from the Init_Device label
PCA_Init:
    anl  PCA0MD,    #0BFh
    mov  PCA0MD,    #000h
    ret

Timer_Init:
    mov  TMOD,      #001h
    mov  CKCON,     #002h
    ret
Oscillator_Init:
    mov  OSCICN,    #083h
    ret
Port_IO_Init:
    ; P0.0  -  Unassigned,  Open-Drain, Digital
    ; P0.1  -  Unassigned,  Open-Drain, Digital
    ; P0.2  -  Unassigned,  Open-Drain, Digital
    ; P0.3  -  Unassigned,  Open-Drain, Digital
    ; P0.4  -  Unassigned,  Open-Drain, Digital
    ; P0.5  -  Unassigned,  Open-Drain, Digital
    ; P0.6  -  Unassigned,  Open-Drain, Digital
    ; P0.7  -  Unassigned,  Open-Drain, Digital

    ; P1.0  -  Unassigned,  Open-Drain, Digital
    ; P1.1  -  Unassigned,  Open-Drain, Digital
    ; P1.2  -  Unassigned,  Open-Drain, Digital
    ; P1.3  -  Unassigned,  Open-Drain, Digital
    ; P1.4  -  Unassigned,  Open-Drain, Digital
    ; P1.5  -  Unassigned,  Open-Drain, Digital
    ; P1.6  -  Unassigned,  Open-Drain, Digital
    ; P1.7  -  Unassigned,  Open-Drain, Digital
    ; P2.0  -  Unassigned,  Open-Drain, Digital
    ; P2.1  -  Unassigned,  Open-Drain, Digital
    ; P2.2  -  Unassigned,  Open-Drain, Digital
    ; P2.3  -  Unassigned,  Open-Drain, Digital

    mov  XBR1,      #040h
    ret

; Initialization function for device,
; Call Init_Device from your main program
Init_Device:
    lcall PCA_Init
    lcall Timer_Init
    lcall Port_IO_Init
    lcall Oscillator_Init
    ret

end







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品久久久久久久久久 | 久久亚洲高清 | 国产精品久久久久久模特 | 色视频在线播放 | 亚洲国产福利视频 | 国产精品视频不卡 | 亚洲精精品 | 日韩成人av在线 | 999精品视频 | 精品日韩一区二区三区 | 久久久久久久一区二区三区 | 免费欧美| 男人天堂久久久 | 福利社午夜影院 | 亚洲精品久久久一区二区三区 | 大久 | 亚洲精品久久久一区二区三区 | 日韩一级黄色毛片 | 久久久久九九九女人毛片 | 亚洲国产网址 | 精品99久久久久久 | 天天草草草 | 久久三区 | 国产精品亚洲综合 | 精品伊人久久 | 成人三区 | 成人欧美一区二区三区黑人孕妇 | 久久天天| 在线观看亚洲一区二区 | 激情久久久久 | 欧美精品网站 | 亚洲91精品 | 精品二区| 欧美日韩综合精品 | 怡红院怡春院一级毛片 | 日韩成人在线看 | 国产精品久久久久久一区二区三区 | 久草在线 | 欧美亚洲在线 | 亚洲视频一区二区三区四区 | 成人高清在线视频 |