專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
十年專注單片機(jī)方案開發(fā)的方案公司英銳恩,分享定時(shí)器0的使用。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運(yùn)算放大器等。
;========================================================== ;定時(shí)器實(shí)現(xiàn)流水燈 ;MCD-DEMO實(shí)驗(yàn)版 ;========================================================== include
;======================================== ;變量定義 ;======================================== TMR0_TEMP EQU .0 ;軟件模擬使用230,編程為0,256*256=65536US=65.536MS W_TEMP EQU 7FH COUNT1 EQU 20H ;定時(shí)330MS記數(shù)變量 COUNT2 EQU 21H ;更長(zhǎng)時(shí)間記數(shù)變量 STATUS_TEMP EQU 22H PORTC_TEMP EQU 23H FLAG EQU 24H ;330MS定時(shí)標(biāo)志,時(shí)間到=1,未到=0 W EQU 0x00 F EQU 0x01 COUNT_TEMP EQU .4 ;軟件模擬使用2,編程為5,時(shí)間大約是330MS ;======================================== ; ;======================================== ORG 000H NOP GOTO MAIN ORG 004H GOTO TMR0SERC ;============================================= ;主程序開始 ;=============================================
MAIN call systeminit ;調(diào)用初始化 LOOP BTFSS FLAG,0 ;判斷定時(shí)是否到 GOTO LOOP1 RlF PORTC_TEMP,F ;循環(huán)左移 BCF FLAG,0 LOOP1 MOVF PORTC_TEMP,W MOVWF PORTC GOTO LOOP ;============================================= ;初始化各端口、變量及中斷特殊寄存器 ;============================================= systeminit BSF STATUS,RP0 ;選擇體1 MOVLW 0 MOVWF TRISC MOVLW 07H ;軟件模擬為08H,編程為07H,1:256 MOVWF OPTION_REG BCF STATUS,RP0 CLRF INTCON MOVLW 0A0H ;開總中斷和定時(shí)器0中斷 MOVWF INTCON MOVLW B'00000001' ;賦值 MOVWF PORTC_TEMP MOVLW COUNT_TEMP MOVWF COUNT1 BCF FLAG,0 ;清除標(biāo)志 MOVLW TMR0_TEMP ;啟動(dòng)定時(shí)器0 MOVWF TMR0 return ;============================================= ;定時(shí)器中斷程序,如果COUNT1為0,置標(biāo)志FLAG為1 ;============================================= TMR0SERC MOVWF W_TEMP ;軟件入棧 SWAPF STATUS,W CLRF STATUS MOVWF STATUS_TEMP BCF INTCON,T0IF ;清中斷標(biāo)志 DECFSZ COUNT1,F ;COUNT1減1,判斷是否為零 GOTO JUMP0 ;COUNT1不為零,軟件出棧,跳出中斷,啟動(dòng)定時(shí)器0 MOVLW COUNT_TEMP ;為零,賦值,F(xiàn)LAG=1 MOVWF COUNT1 BSF FLAG,0 JUMP0 MOVLW TMR0_TEMP MOVWF TMR0 SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W RETFIE ;============================================= ;結(jié)束 ;============================================= END