You are on page 1of 18

ĐẠI HỌC ĐÀ NẴNG Cộng hòa xã hội chủ nghĩa Việt Nam

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ Độc lập- tự do- hạnh phúc

KHOA ĐIỆN TỬ_VIỄN THÔNG

BỘ MÔN K Ĩ THUẬT MÁY TÍNH

BÀI TẬP LỚN

KỸ THUẬT VI XỬ LÝ

GVHD : Phạm Xuân Trung

Người thực hiện : Phan Duy Cận

Lê Quang Nam

Trần Thị Bích

Lớp HP : 10KTVXL0
Câu 1) Cho LED sáng kết hợp lần lượt từ RB0 -> RB7, sau đó nhấp nháy (Tần
số là 1Hz)

Begin

Kiểm tra

TẮT LED

Bật Led

+1

BUFFER

Kết Thúc
Code chương trình:(Chương trình được mô phỏng trên simulator ide và trích
xuất file .hex trên Mplab ide)

processor p16f877a
INCLUDE P16F877A.INC
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON &
_XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
; khai báo các “Configuration bits”
ORG 0x000 ; Địa chỉ bắt đầu chương trình
GOTO start
start ; Chương trình chính bắt đầu tại đây
BCF STATUS,RP1
BCF STATUS,RP0 ; Chọn BANK0
CLRF PORTB ; Xoá PORTB
BSF STATUS,RP0 ; Chọn BANK1
MOVLW 0x00
MOVWF TRISB ; PORTB <- outputs
BCF STATUS,RP0 ; Chọn BANK0
MOVLW 0x8F ; Giá trị đưa ra PORTB
MOVWF PORTB ; PORTB <- 8Fh
loop GOTO loop ; vòng lặp vô hạn
END ; Kết thúc chương trình
;==========================================================
Hình ảnh chuyển sang file hex thành công bài 1

Chương trình chính trên Mplab


Mô phỏng trên Pic simulator ide
Bài 2: Kết hợp nút bấm cho LED sang như câu 1.
Begin

Bật Led

NÚT NHẤN

TẮT LED

END

Code chương trình:(Chương trình được mô phỏng trên simulator ide và trích
xuất file .hex trên Mplab ide)
processor p16f877a

INCLUDE P16F877A.INC

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON &


_XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

;---------------------------------------------------------------------------------------------------

;Khai báo hàng

;---------------------------------------------------------------------------------------------------

SW1 EQU 0

SW2 EQU 1

SW3 EQU 2

SW4 EQU 3

LED1 EQU 4

LED2 EQU 5

LED3 EQU 6

LED4 EQU 7

ORG 0x000

GOTO start

start

BCF STATUS,RP1

BCF STATUS,RP0

CLRF PORTB

BSF STATUS,RP0

MOVLW b'00001111' ; Thiết lập chức năng từng pin trong PORTB
MOVWF TRISB

BCF STATUS,RP0

loop

BTFSS PORTB,SW1 ; Kiểm tra công tắc 1

CALL switch1 ; Thực hiện lệnh này nếu công tấc được ấn
BTFSS PORTB,SW2 ; Nếu công tắc 1 không được ấn, kiểm tra
công tắc 2

CALL switch2 ; Tiếp túc với các công tắc còn lại

BTFSS PORTB,SW3

CALL switch3

BTFSS PORTB,SW4

CALL switch4

GOTO loop

switch1

CLRF PORTB

BSF PORTB,LED1

RETURN

switch2

CLRF PORTB

BSF PORTB,LED2

RETURN

switch3

CLRF PORTB
BSF PORTB,LED3

RETURN

switch4

CLRF PORTB

BSF PORTB,LED4

RETURN

END

Trên Mplab ide


Trên Pic Simulator
Câu 3 ) Sử dụng chức năng ngắt ngoài cho LED sáng như câu 1
BẮT ĐẦU

KIỂM

TRA NGOẠI

VI

THỰC HIỆN

END

Code chương trình ngắt ngoià viết trên Pic Simulator


R0L EQU 0xC
R0H EQU 0xD
R1L EQU 0xE
R1H EQU 0xF
R2L EQU 0x10
R2H EQU 0x11
R3L EQU 0x12
R3H EQU 0x13
R4L EQU 0x14
R4H EQU 0x15
R5L EQU 0x16
R5H EQU 0x17
TEMP_W EQU 0x4F
TEMP_ST EQU 0x4E
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO L0001
ORG 0x0004
MOVWF TEMP_W
SWAPFSTATUS,W
BCF STATUS,RP0
MOVWF TEMP_ST
CALL L0002
SWAPFTEMP_ST,W
MOVWF STATUS
SWAPFTEMP_W,F
SWAPFTEMP_W,W
RETFIE
L0001:
; Chương trình chính
; Thiết lập PORT
,,,,,,,,,,,,,,,,,; Thiết lập ngắt
BCF STATUS,RP0
BSF 0x0B,4 ; Cho phép ngắt chân RB0
BSF 0x0B,7 ; Cho phép ngắt
L0003: GOTO L0003
L0002:
;Chương trình ngắt
BCF 0x0B,1; Cho phép lặp
RETURN
L0004: GOTO L0004
END

• Mô phỏng
Câu 4: Tương tự câu 3 nhưng sử dụng ngắt Timer0.

BẮT ĐẦU

0000-> PORB B

DELAY

0001-> PORB B

0000-> PORB B
…………………………………………………………………

END
Code chương trình viết trên Pic Simulator :

R0L EQU 0xC


R0H EQU 0xD
R1L EQU 0xE
R1H EQU 0xF
R2L EQU 0x10
R2H EQU 0x11
R3L EQU 0x12
R3H EQU 0x13
R4L EQU 0x14
R4H EQU 0x15
R5L EQU 0x16
R5H EQU 0x17
W_TEMP EQU 0x4F
STATUS_TEMP EQU 0x4E
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO L0001
ORG 0x0004
MOVWF W_TEMP
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_TEMP
CALL L0002
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
RETFIE
L0001:
; Chương trinh chính
; Thiết lâp PORT
;,,,,,,,,,,,,,,,,,,,,,Thiết lập time0
BCF STATUS,RP0
BSF 0x0B,5; Cho phép ng?t time0
BSF 0x0B,7; Cho cho phép ngắt?
BSF STATUS,RP0
BCF 0x01,5; Chân xung ngát
BCF STATUS,RP0
L0003: GOTO L0003
L0002:
; Chương trình ngắt
BCF 0x0B,2; Cho phép bắt đầu ngắt mới
RETURN
L0004: GOTO L0004
END

Mô phỏng Trên Pic sumilator

You might also like