Phiên bản khác dùng timer để delay
Code:
;Region CẤU HÌNH BỘ BIÊN DỊCH - COMPILER CONFIGURATION
TITLE "Hướng dẫn học Pic"
PROCESSOR PIC16F88
CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC
include <P16F88.inc>
include <myp16def.inc> ;; Bo sung mot so khai bao
;/Region
;;================================================|=================================================
;Region KHAI BÁO BIẾN, HẰNG... - VARIABLE, CONSTANT,ETC DEFINITION
ORG 0x20
bTemp1 RES 1
bTemp2 RES 1
;;================================================|=================================================
ORG 0x0000
GOTO MAIN
ORG 0x0005
;;================================================|=================================================
;Region CHƯƠNG TRÌNH CHÍNH - MAIN PROGRAM
MAIN
banksel TRISB ;; Bank select (Một iMacro của trình biên dịch?)
clrf TRISB ;; TRISB = 0 Out, =1 In (Tri State)
Loop_Main:
banksel PORTB
bsf PORTB,RB0 ;; RB0 = 1
call Delay100ms
banksel PORTB
bcf PORTB,RB0 ;; RB0 = 1
call Delay100ms
goto Loop_Main ;; Trở về chương trình chính
;/Region
;;================================================|=================================================
;Function Delay100ms - Hàm tạm ngưng 100ms
;Sumary
;; S
;; Input:
;; Output:
;; Effect: Timer 1
;/Sumary
TIMER1_RELOAD EQU -(50000+8)
Delay100ms
banksel PIE1
clrf PIE1
clrf INTCON ;; Không sử dụng ngắt
clrf PIR1
banksel T1CON
clrf T1CON
movlw 0x10 ;; Đặt chế độ prescaler 1:2
movwf T1CON
movlw HIGH TIMER1_RELOAD ;; Nạp giá trị byte cao
movwf TMR1H
movlw LOW TIMER1_RELOAD ;; Nạp giá trị byte thấp
movwf TMR1L
bsf T1CON,TMR1ON ;; Khởi động Timer
banksel PIR1
WAIT_DHM
btfss PIR1, TMR1IF
goto WAIT_DHM
bcf PIR1, TMR1IF
return
;/Function
;;------------------------------------------------|-------------------------------------------------
END