;************************************************************************
;<<軟件模擬簡易車輛里程表>>
;時間:2006.3.5
;程序文件名:“TMR0_led2.asm”
;功能實現(xiàn):TMR0當作定時器使用,外部脈沖通過T0CKI給單片機提供時鐘源,每4個
; 脈沖為一個指令周期,使計數(shù)器加1溢出
;硬件連接:無
;***********************************************************************
;***********************************************************************
;定義單片機型號為PIC16F877A
;程序包含文件:P16F877A.INC
;定義配置字
;***********************************************************************
LIST P=16F877A ;定義本程序所使用的芯片為PIC16F877A
INCLUDE "P16F877A.INC" ;定義本程序包含該文件
__CONFIG 3F72H ;晶振配置HS,看門狗禁止,上電延時使能,
;掉電復位使能,低電壓編程禁止,代碼不保護
TMR0B EQU 0FFH ;定義TMR0初始值為255
;***********************************************************************
;復位矢量定義(對于16F877A)
;***********************************************************************
ORG 0000H ;復位矢量地址
GOTO MAIN ;程序跳轉(zhuǎn)到MAIN主程序
;----------------------------------------------------------------------
;***********************************************************************
;主程序區(qū)
;***********************************************************************
ORG 0005H ;主程序從0005H開始
MAIN
NOP ;空循環(huán)
BSF STATUS,RP0 ;使當前體為體1
MOVLW 00H ;使RC口為輸出
MOVWF TRISC
MOVLW 0FFH ;使RA4口為輸入
MOVWF TRISA
MOVLW 30H ;由T0CKI外部引腳輸入提供TMR0時鐘源,上
MOVWF OPTION_REG ;升沿觸發(fā),分頻比為1:2,分配給TMR0
BCF STATUS,RP0 ;使當前體為體0
CLRF PORTC ;PORTC口清0
LOOP BCF INTCON,T0IF ;TMR0溢出標志位清零
MOVLW TMR0B ;TMR0初始值為255
MOVWF TMR0
TEST BTFSS INTCON,T0IF ;判斷TMR0溢出標志位是否為1,為1則跳到
GOTO TEST ;下一步,否的話繼續(xù)循環(huán)檢測
INCF PORTC,1 ;PORTC加1
GOTO LOOP
END ;匯編程序結(jié)束
;------------------------------------------------------------------------