Chương trình thứ 2:
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>
;/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,0 ;; RB0 = 1
call Delay100ms
bcf PORTB,0 ;; RB0 = 1
call Delay100ms
goto Loop_Main ;; Trở về chương trình chính
;/Region
;;================================================|=================================================
;Function Delay10ms - Hàm tam ngưng Nx10ms
;Sumary
;;
;; Input:
;; Output:
;; Effect:
;/Sumary
Delay100ms
movlw 250 ;; Nap vao gia tri y
movwf bTemp2
movlw 199 ;; Nap vao gia tri x
movwf bTemp1 ;; y lan
Loop_DHM
decfsz bTemp1,f
goto Loop_DHM ;; x-1 lan
movwf bTemp1 ;; y lan
decfsz bTemp2,f
goto Loop_DHM
return ;; 8+3+y*(x-1)*2+y*4 = 7 + y(x+1)*2 = (100.008)
;/Function
;;------------------------------------------------|-------------------------------------------------
END ;; Trình biên dịch tự động dừng khi gặp lệnh này
Bản cập nhật bổ sung thêm file myp16def.inc nội dung như sau:
RB0 EQU 0
RB1 EQU 1
RB2 EQU 2
RB3 EQU 3
RB4 EQU 4
RB5 EQU 5
RB6 EQU 6
RB7 EQU 7
Sửa một số chữ chú thích sai
Code:
;;================================================|=================================================
;; Tên chương trình : Hướng đẫn học Pic
;; Mã số kiểm tra :
;; Người thực hiện : qmk
;; Ngày cập nhật : 31/12/2005
;; Phiên bản : Writing
;; Mô tả phần cứng :
;; - Pic16F88
;; - Tần số Xtal : 4MHz
;; - Xem tài liệu thiết kế phần cứng đi kèm
;;------------------------------------------------|-------------------------------------------------
;; Mô tả chương trình:
;; - Các thông tin về cập nhật chương trình xem ở cuối chương trình
;;
;;------------------------------------------------|-------------------------------------------------
;; Thỏa thuận bản quyền:
;; - Bản quyền phần mềm này thuộc về người viết chương trình...
;;================================================|=================================================
;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> ;; Bổ sung thêm một vài định nghĩa
;/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
bcf PORTB,RB0 ;; RB0 = 0
call Delay100ms
goto Loop_Main ;; Trở về chương trình chính
;/Region
;;================================================|=================================================
;Function Delay10ms - Hàm tam ngưng Nx10ms
;Sumary
;;
;; Input:
;; Output:
;; Effect:
;/Sumary
Delay100ms
movlw 250 ;; Nap vao gia tri y
movwf bTemp2
movlw 199 ;; Nap vao gia tri x
movwf bTemp1 ;; y lan
Loop_DHM
decfsz bTemp1,f
goto Loop_DHM ;; x-1 lan
movwf bTemp1 ;; y lan
decfsz bTemp2,f
goto Loop_DHM
return ;; 8+3+y*(x-1)*2+y*4 = 7 + y(x+1)*2 = (100.008)
;/Function
;;------------------------------------------------|-------------------------------------------------
END ;; Trình biên dịch tự động dừng khi gặp lệnh này