機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
PIC16F877A動(dòng)態(tài)數(shù)碼時(shí)鐘顯示實(shí)驗(yàn)參考程序
PIC16F877A動(dòng)態(tài)數(shù)碼時(shí)鐘顯示實(shí)驗(yàn)參考程序
 更新時(shí)間:2008-7-26 17:03:49  點(diǎn)擊數(shù):3
【字體: 字體顏色
;動(dòng)態(tài)數(shù)碼時(shí)鐘顯示實(shí)驗(yàn)參考程序;使用資源:;1,TMRO定時(shí)器。確定顯示的位,及顯示延時(shí)。;2,TMR1定時(shí)器。秒信號(hào)產(chǎn)生。;3,PORTA端口。六共陽(yáng)極位數(shù)碼管的位選信號(hào),低電平有效;4,PORTC端口。數(shù)碼管的七段,RC7不用。;功能說(shuō)明:;1.六位數(shù)碼管動(dòng)態(tài)掃描顯示時(shí)間(格式為:HHMMSS,24小時(shí)制)。;2.時(shí)鐘信號(hào)由單片機(jī)內(nèi)部定時(shí)器硬件單元編程產(chǎn)生。;本實(shí)戰(zhàn)的目的是讓大家進(jìn)一步熟悉定時(shí)器的編程,多位數(shù)碼管動(dòng)態(tài)掃描顯示的編程。;硬件接法:;1.實(shí)驗(yàn)板上撥碼開(kāi)關(guān)S4、S5的所有位必須置ON,其他都可以關(guān)閉。;2.最好把93C46跟24CXX存儲(chǔ)器從板上取下。;本實(shí)例原提供者:pic16論壇會(huì)員 leef728 ,在此鳴謝leef728同志共享本實(shí)例.;由深圳市乾龍盛電子科技有限公司技術(shù)部鐘閨田(工程師)(論壇網(wǎng)名:zhongruntian)驗(yàn)正并加于整理、注釋.;網(wǎng)站:PIC單片機(jī)學(xué)習(xí)網(wǎng) http://www.pic16.com 討論論壇:http://pic16.com/bbs/;版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處,并不能去掉或改變文件中的說(shuō)明文字。;程序文件名“TIME.ASM";程序清單如下:;************************************ LIST P=16F877A INCLUDE"P16F877A.INC" ERRORLEVEL -302;***********************************__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC;;***************文件寄存器定義************** CBLOCK 0X20 WAW YIW BAW QIW GEW SHW TEMP COUNTER S3 DAA STATUS_TMP W_TMP ENDC;********************程序開(kāi)始**************** ORG 0000H NOP ;復(fù)位地址 GOTO MAIN ORG 0004H;********************中斷處理程序*********** MOVWF W_TMP SWAPF STATUS,W CLRF STATUS MOVWF STATUS_TMP ;以上4條指令為中斷現(xiàn)場(chǎng)保護(hù) BCF INTCON,2 ;清除TMRO中斷標(biāo)志位 MOVF TEMP,W ;時(shí)間存放單元的地址 MOVWF FSR MOVF INDF,W ;取得某一位的時(shí)間值 CALL BMA ;查表得時(shí)間的顯示代碼 MOVWF PORTC ;送數(shù)碼管顯示 COMF DAA,W ;位碼取反 MOVWF PORTA ;點(diǎn)亮相應(yīng)的數(shù)碼管 RLF DAA,F ;準(zhǔn)備點(diǎn)亮下一位 INCF TEMP,F ;下一時(shí)間存放單元地址 BTFSS DAA,6 ;是否顯示完六位 GOTO RT MOVLW 01H ;是,重新開(kāi)始新一輪顯示 MOVWF DAA MOVLW 20H ;重新獲取時(shí)間單元的地址 MOVWF TEMP RT SWAPF STATUS_TMP,W ;中斷現(xiàn)場(chǎng)恢復(fù) MOVWF STATUS SWAPF W_TMP,F SWAPF W_TMP,W MOVLW 0XE0 ;賦定時(shí)器初值 MOVWF TMR0 RETFIE ;*******************主程序開(kāi)始**************** MAIN BANKSEL TRISA ;選擇體1 MOVLW 00H MOVWF TRISA ;PORTA設(shè)置為輸出 MOVWF TRISC ;PORTC設(shè)置為輸出 MOVLW 06H MOVWF ADCON1 ;設(shè)置A口為普通數(shù)字口 BANKSEL INTCON MOVLW 00H MOVWF YIW MOVWF WAW MOVWF QIW MOVWF BAW MOVWF SHW MOVWF GEW ;以上7條指令清零時(shí)間 MOVWF DAA MOVLW 20H MOVWF TEMP ;時(shí)間存放單元地址 BSF STATUS,RP0 MOVLW 0X05 MOVWF OPTION_REG ;分頻器給TMR0做定時(shí)用,且分頻比1:4 BCF STATUS,RP0 BSF INTCON,7 ;開(kāi)啟中斷總允許位GIE BSF INTCON,5 ;開(kāi)啟TMRO中斷允許位 BCF INTCON,2 ;清除TMRO中斷標(biāo)志位 MOVLW 0XE0 ;TMRO賦初值 MOVWF TMR0 CLRF DAA INCF DAA,F ;顯示位設(shè)置;**************************************************************KS CALL DELAY ;調(diào)用200ms定時(shí)程序 CALL DELAY CALL DELAY CALL DELAY CALL DELAY ;調(diào)用5次,剛好1s INCF GEW,F MOVF GEW,W ;判斷秒的個(gè)位是否夠10 XORLW .10 BTFSS STATUS,Z GOTO KS ;是,秒的個(gè)位清0,秒的十位加1 INCF SHW,F CLRF GEW CLRF STATUS MOVF SHW,W XORLW .6 ;判斷秒的十位是否為6(1分鐘60秒) BTFSS STATUS,Z GOTO KS INCF BAW,F ;是,秒的十位清0,分的個(gè)位加1 CLRF SHW CLRF STATUS MOVF BAW,W XORLW .10 ;判斷分的各位是否夠10 BTFSS STATUS,Z GOTO KS INCF QIW,F ;是,分的個(gè)位清0,分的十位加1 CLRF BAW CLRF STATUS MOVF QIW,W XORLW .6 ;判斷分的十位是否夠6(1小時(shí)60分) BTFSS STATUS,Z GOTO KS INCF WAW,F ;是,分的十位清0,時(shí)的個(gè)位加1 CLRF QIW CLRF STATUS MOVF WAW,W XORLW .4 ;判斷時(shí)的個(gè)位是否夠4(24小時(shí)制) BTFSS STATUS,Z GOTO KS INCF YIW,F ;是,時(shí)的個(gè)位清0,時(shí)的十位加1 CLRF WAW CLRF STATUS MOVF YIW,W XORLW .2 ;判斷時(shí)的十位是否夠2 BTFSS STATUS,Z GOTO KS CLRF GEW ;是,使時(shí)間回到00-00-00 CLRF SHW CLRF BAW CLRF QIW CLRF WAW CLRF YIW GOTO KS ;循環(huán)顯示;**************************200ms延時(shí)程序********************DELAY NOP BANKSEL PIE1 BCF PIE1,0 ;禁止TMR1中斷 BANKSEL T1CON MOVLW 24H ;TMR1分頻1:4 MOVWF T1CON BCF PIR1,0 MOVLW 0X3C MOVWF TMR1H MOVLW 0XB0 MOVWF TMR1L ;TMR1賦初值0X3CB0 BSF T1CON,0 LOP BTFSS PIR1,0 ;查詢(xún)是否定時(shí)時(shí)間到 GOTO LOP RETURN ;**********************************************************BMA ADDWF PCL,F ;考察偏移量 RETLW 0XC0 ;"0" 編碼 RETLW 0XF9 ;"1" 編碼 RETLW 0XA4 ;"2" 編碼 RETLW 0XB0 ;"3" 編碼 RETLW 0X99 ;"4" 編碼 RETLW 0X92 ;"5" 編碼 RETLW 0X82 ;"6" 編碼 RETLW 0XF8 ;"7" 編碼 RETLW 0X80 ;"8" 編碼 RETLW 0X98 ;"9" 編碼 RETLW 0XFF;********************************************************** END ;源程序結(jié)束;***********************************************************; 進(jìn)入該實(shí)戰(zhàn)演練的工序流程如下:; 1.創(chuàng)建源文件和編輯源文件;在此介紹一種不同于前面講的創(chuàng)建源文件的方法,用Windows附件中的”記事本”; 這個(gè)為大家所熟知和好用的文件編輯器,并且可以方便的加入中文注釋.不過(guò)有兩點(diǎn)需要注意,一是注釋前面的; 分號(hào)”;”必須用西文半角輸入;二是必須用”.asm”擴(kuò)展名存儲(chǔ)到事先建立的一個(gè)專(zhuān)用子目錄下.; 2.打開(kāi)MPLAB集成開(kāi)發(fā)環(huán)境:首先在WINDOWS環(huán)境下,選用開(kāi)始>程序>Microchip MPLAB>MPLAB命令,啟動(dòng)MPLAB; 并進(jìn)入MPLAB的桌面.; 3.創(chuàng)建項(xiàng)目:選用菜單File>New或Project>New Project,在事先建立的一個(gè)專(zhuān)用子目錄下創(chuàng)建一個(gè)新項(xiàng)目,將; 用記事本創(chuàng)建的源文件加入到該項(xiàng)目中.; 4.建立項(xiàng)目中的目標(biāo)文件:選擇菜單Project >Build All(項(xiàng)目>建立所有文件),MPLAB將自動(dòng)調(diào)用MPASM將項(xiàng)目; 文件管理下的源文件(.asm)匯編成十六進(jìn)制的目標(biāo)文件(.hex).
  • 上一篇: PIC16F877A+18B10溫度測(cè)量+LCD1602顯示溫度
  • 下一篇: PIC16F97+eV1527解碼源程序
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話(huà):0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1