筆者在這里介紹一種定時程序,說明循環程序在PIC單片機上的應用。筆者仍以PIC16F84單片機為例建立其定時源程序清單。 該定時器源程序只需改變一條指令的常數設置,即可使定時時間從分鐘級到3??8小時的連續變化(4MHz晶振條件)。PIC16F84單片機的硬件電路,請見本報第32期實驗編程器1??01實驗板電路。在該實驗板電路上,若讀者改變晶振的頻率(2MHz、1MHz、500kHz)等,很易直觀看出定時時間成比例相應地增加,這對了解PIC單片機的性能十分直觀有趣。若在該源程序上再多設置一次循環,可使定時時間長達1月以上。 該PIC16F84定時源程序可直接在MPLAB集成開發環境軟件下進行匯編,其匯編后生成的HEX文件可在實驗編程器1??01上對源程序進行固化并可在相應的實驗板上直接觀察實驗的結果。PIC16F84定時的源程序清單如下(文件各可自定義): LISTP=PIC16F84 #INCLUDE P16F84?盜NC COUNT1 EQU0x1F COUNT2 EQU0x1E COUNT3 EQU0x1D COUNT4 EQU0x1C ORG 0 START CLRW;與MOVLW0等效 BSF STATUS,5;選體1 MOVWF TRISB;設B口為輸出 BCF STATUS,5;STATUS復位當前體0 CLRF PORTB ;定時啟動功能 M1 BTFSS PORTA,1;判斷A口第D1位,D1=1間跳,D1=0順 ;序執行 GOTO M2 GOTO M1 M2 MOVLW 0xAA ;選B口定時位,LED亮開始定時 MOVWF PORTB ;B口按0x10101010輸出 DELY CLRW;與MOVLW0等效 MOVLW 0xFF MVOWF COUNT1 MVOWF COUNT2 MVOWF COUNT3 MOVLW 0 ;與CLRW指令等效 MOVLW 0x02 ;0x02送W(最大定時為0xFF) MOVWF COUNT4 ;定時值控制(細調) LOOP DECFSZ COUNT1,1;CPUNT減1,為0間跳 GOTO LOOP DECFSZ COUNT2,1;同上特點,這里d=1可不用 GOTO LOOP DECFSZ COUNT3,1;同上 GOTO LOOP DECFSZ COUNT4,1;同上,但COUNT4中值可自由選定 GOTO LOOP CLRW ;與MOVLW0相同 MOVLW 0x02 ;定時結束顯示 MOVWF PORTB M3 GOTO M3 END;程序結束 說明:該源程序中常數設置可由讀者任意改變,改變之后即可達到任意時間的設定。 |