Nội dung :
Tạo project trên MPLAB IDE.
Viết chương trình ASM.
Dịch và nạp chương trình vào vi điều khiển PIC.
Chạy và gỡ rối chương trình.
1.1 Môi trường phát triển MPLAB
Double Click vào biểu tượng MPLABtrên Desktop hoặc theo cách sau: Start -> All Programs -> Microchip -> MPLAB IDE v76.2 -> MPLAB IDE.
Từ thanh Menu, click chọn tab Project -> Project Wirazd
79 trang |
Chia sẻ: vietpd | Lượt xem: 1516 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Thực hành vi xử lý, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
THỰC HÀNH VI XỬ LÝ
BM Kỹ thuật Máy tính
2009
Giới thiệu
Mục Lục
Mục Lục .............................................................................................................................. 1
Bài 1 : Giới thiệu MPLAB IDE và KIT PIC .................................................................. 1
1.1 Môi trường phát triển MPLAB ................................................................................. 1
1.2 Nạp file hex vào vi điều khiển PIC........................................................................... 8
1.3 Debug dùng MpLab SIM........................................................................................ 12
1.4 Debug onchip dùng Mplab ICD2............................................................................ 15
1.5 Bài tập ..................................................................................................................... 15
Bài 2 : Khảo sát cổng xuất nhập ................................................................................... 16
2.1 Kiến thức liên quan................................................................................................. 16
2.1.1 Các thanh ghi điều khiển cổng xuất nhập ........................................................ 16
2.1.2 Kết nối mạch .................................................................................................... 16
2.2 Các bước hiện thực yêu cầu 1 ................................................................................. 18
2.3 Chương trình mẫu yêu cầu 1................................................................................... 20
2.4 Các bước hiện thực yêu cầu 2 ................................................................................. 21
2.5 Chương trình mẫu yêu cầu 2................................................................................... 22
2.6 Bài tập ..................................................................................................................... 23
Bài 3 : Khảo sát cơ chế ngắt quãng, giao tiếp LCD ký tự ............................................ 24
3.1 Kiến thức liên quan................................................................................................. 24
3.1.1 Tóm tắt các thanh ghi điều khiển ngắt ............................................................. 24
3.2 Các bước hiện thực yêu cầu 1 ................................................................................. 25
3.3 Chương trình mẫu yêu cầu 1................................................................................... 28
3.4 LCD ký tự 2x16 ...................................................................................................... 31
3.4.1 Hình dạng và ý nghĩa các chân: ....................................................................... 31
3.4.2 Tổ chức vùng nhớ của LCD............................................................................. 32
3.4.3 Các lệnh giao tiếp với LCD ............................................................................. 34
3.4.4 Khởi tạo LCD................................................................................................... 35
3.5 Các bước hiện thực yêu cầu 2 ................................................................................. 36
3.6 Bài tập ..................................................................................................................... 41
Bài 4 : Khảo sát bộ định thời ........................................................................................ 42
4.1 Các bước hiện thực yêu cầu 1 ................................................................................. 42
4.2 Chương trình mẫu ................................................................................................... 46
4.3 Bài tập ..................................................................................................................... 48
Bài 5 : Kỹ thuật quét ma trận phím .............................................................................. 49
5.1 Kết nối mạch ma trận phím..................................................................................... 49
5.2 Các bước hiện thực ................................................................................................. 50
5.3 Bài tập ..................................................................................................................... 54
Bài 6 : Kỹ thuật quét LED............................................................................................ 56
6.1 Cấu tạo LED 7 đoạn và LED ma trận..................................................................... 56
6.2 Kết nối mạch ........................................................................................................... 58
6.3 Các thanh ghi liên quan và cách điều khiển............................................................ 59
6.4 Các bước hiện thực. ................................................................................................ 62
6.5 Bài tập ..................................................................................................................... 65
Bài 7 : Khảo sát bộ truyền nhận nối tiếp ...................................................................... 66
7.1 Các bước hiện thực. ................................................................................................ 66
7.2 Chương trình mẫu ................................................................................................... 68
7.3 Bài tập ..................................................................................................................... 70
Bài 8 : Khảo sát khối chuyển đổi A-D.......................................................................... 71
8.1 Các bước hiện thực ................................................................................................. 71
8.2 Bài tập ..................................................................................................................... 72
Bài 9 : Khảo sát các khối chức năng đặc biệt khác ...................................................... 73
9.1 Các bước hiện thực PWM....................................................................................... 73
9.2 Chương trình mẫu ................................................................................................... 74
9.3 Bài tập ..................................................................................................................... 75
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Bài 1 : Giới thiệu MPLAB IDE và KIT PIC
Nội dung :
Tạo project trên MPLAB IDE.
Viết chương trình ASM.
Dịch và nạp chương trình vào vi điều khiển PIC.
Chạy và gỡ rối chương trình.
1.1 Môi trường phát triển MPLAB
Double Click vào biểu tượng MPLAB trên Desktop hoặc theo cách sau: Start ->
All Programs -> Microchip -> MPLAB IDE v76.2 -> MPLAB IDE.
Từ thanh Menu, click chọn tab Project -> Project Wirazd…
Cửa sổ Welcome hiện lên và bạn chọn Next.
Bộ môn Kỹ Thuật Máy Tính 1 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Chọn PIC cần sử dụng tại khung Device >> Click Next:
Chọn tool Microchip C18 Toolsuite tại Active Toolsuite.
Chọn MPLAB C18 C Compiler tại Tollsuite contents.
Nếu lập trình bằng assembly thì ta chon Active Toolsuite theo hình sau:
Click Next
Bộ môn Kỹ Thuật Máy Tính 2 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Chọn Browse…. Để chọn thư mục lưu project.
Đánh vào tên Project muốn tạo. Save, sau đó chúng ta chọn Next thì hiện ra của
sổ như sau:
Đây là nơi để các bạn add thư viện cho project.
Bộ môn Kỹ Thuật Máy Tính 3 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Bạn nên add hết các file cần thiết cho việc lập trình trước khi bắt đầu viết chương
trình gồm file .lib và file .lkr. Nếu viết chương trình cho con chip nào thì ta lấy file .lib
và file .lkr của chíp tương ứng, như hình trên chung ta đang sử dụng chip 18f4550.
Click Next.
Click Finish. Ta sẽ được một project như hình sau:
Bộ môn Kỹ Thuật Máy Tính 4 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Một project đơn giản nhất phải gồm có 2 thành phần Source files và Hearder
Files. Thư mục Source files chứa file text *.asm hoặc file *.c chứa code lâp trình. Thư
mục Hearder Files chứa file *.h hoặc *.INC: file có sẵn của microchip. User khai báo
dùng loại chip gì => add vào thư mục này.
Nếu bạn quên không add các file cần có vào thì làm theo hướng dẫn sau.
ADD header file: ( Copy header file vào thư mục chứa project để tiện cho việc sử dụng
sau này).
Bộ môn Kỹ Thuật Máy Tính 5 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Chọn header file phù hợp với PIC mình đã chọn. Open.
ADD source file: Click chọn New trên toolbar:
Cửa sổ hiện lên như sau: Từ Menu bar chọn File >> Save để lưu.
Đặt tên và Save với đuôi .c nếu bạn lập trình trên c18 của maplab hoặc .asm nếu
bạn lập trình trên assembly.
Nhấp phải vào Source Files chọn Add file >>> chọn file chúng ta vừa tạo xong.
Bộ môn Kỹ Thuật Máy Tính 6 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Cửa sổ hiện lên như sau:
Chúng ta đã hoàn tất việc add file vào các thư mục Source files và header files.
Công việc tiếp theo là viết code ( ở cửa sổ text editor :D:\MAPLAB\Untiled.asm).
Ðối với project mà sử dụng cùng 1 loại chip, cùng loại ngôn ngữ lập trình ( ASM hay C)
thì chỉ cần tạo 1 lần. Những lần sau, chỉ cần add/ remove file text (*.asm hoặc *.c) vào
thư mục Source files.
Bộ môn Kỹ Thuật Máy Tính 7 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
1.2 Nạp file hex vào vi điều khiển PIC
Sau khi tạo được một project, ta tiến hành build nó để tạo ra *.hex. Có thể mô tả
công việc như sau:
Ví dụ, ta có một chương trình cho PIC như sau:
;=====================================;
; Name: nut_nhan.asm
; Project: Nhap du lieu tu nút nhan RA4.
; Khi nút RA4 du?c nh?n thì led don RB0 sáng,
; Khi không nh?n RA4 thì led don RB0 t?t
; Author: BKIT HARDWARE CLUB
; Homepage:
; Creation Date: 7 - 31 - 2009
;======================================;
list p=18f4520
#include p18f4520.inc
org 0
goto start
start
call INIT
main
BTFSC PORTA,4 ;Wait for SW1 to be pressed
GOTO main
BSF PORTB,0 ;Turn on LED1.
SWOFF
BTFSS PORTA,4 ;Wait for SW1 to be released.
GOTO SWOFF
BCF PORTB,0 ;Switch off LED1.
GOTO main ;Repeat sequence.
INIT
clrf PORTB ; setup portb for outputs
bcf TRISB,0
bsf PORTA,4 ; setup porta.4 for input
bsf TRISA,4
return
END
Bây giờ chúng ta lưu chương trình vừa viết thành nut_nhan.asm vào một thư mục
đã tạo project phía trên. Để compile chương trình ta vào menu Project -> Build All như
hình bên dưới.
Bộ môn Kỹ Thuật Máy Tính 8 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Nếu việc build thất bại, nhưng việc này thì không mong muốn, ta có thấy kết quả
như hình sau:
Bộ môn Kỹ Thuật Máy Tính 9 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Nếu thành công, ta sẽ thấy hình sau:
Nếu việc build đã thành công, chương trình sẽ dịch nut_nhan.asm thành
nut_nhan.hex trong cùng thư mục chương trình nut_nhan.asm.
Sau khi đã có được file hex, công việc tiếp theo là làm thế nào để nạp được file
Hex xuống board. Đầu tiên là chọn mạch nạp bằng cách vào menu Programmer ->
Select Programmer -> Mplab ICD2 như hình sau :
Sau khi chọn Mplab ICD2 xong thì ta sẽ thấy giao diện như sau:
Bộ môn Kỹ Thuật Máy Tính 10 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Lúc này để nạp chương trình ta chỉ cần vào menu Programmer -> Program như
hình sau là có thể nạp được chương trình.
Sau khi nhấn Program nếu download xuống chip thành công thì ta sẽ thấy hiển thị
ra cửa sổ Output như sau:
MPLAB ICD 2 Ready
Programming Target...
...Validating configuration fields
...Erasing Part
...Programming Program Memory (0x0 - 0x3F)
Verifying...
...Program Memory
...Verify Succeeded
Programming Configuration Bits
.. Config Memory
Verifying configuration memory...
...Verify Succeeded
...Programming succeeded
Bộ môn Kỹ Thuật Máy Tính 11 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
04-Aug-2009, 14:23:39
MPLAB ICD 2 Ready
Để bắt đầu chạy chương trình ta phải rút dây kết nối mạch nạp và kit ra. Khi đó
chương trình mới có thể chạy được.
Trên đây là toàn bộ các bước để tạo một project, viết assembly cho Pic trên Mplab
cũng như làm thế nào để compile và download chương trình xuống chip để thực thi. Đây
là trường hợp lý tưởng là khi viết code không có lỗi nào xảy ra. Nếu có lỗi nào xảy ra thì
ta phải debug nó như thế nào. Trong chương này sẽ hướng dẫn các bạn hai cách debug.
1.3 Debug dùng MpLab SIM
Bước 1: Để sử dụng MpLab SIM ta vào menu Debugger -> Select Debugger ->
Mplab SIM như hình vẽ sau:
Bước 2: Khi đã chọn Mplab SIM xong thì trên menu Debugger có thêm nhiều
chức năng khác để hỗ trợ cho việc debug như hình sau:
Bộ môn Kỹ Thuật Máy Tính 12 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Từ đây ta đã có thể mô phỏng được chương trình của mình một cách dễ dàng.
Ví dụ như Run (F9) dùng để chạy chương trình, chương trình sẽ chạy liên tục đến
khi nào có breakpoint thì dừng. Vậy làm thế nào để tạo Breakpoint, ta sử dụng lệnh
Breakpoints (F2) như trên hình để tạo ra breakpoint tại vị trí hiện tại của con trỏ hoặc
double click vào hàng code mình mong muốn đặt con trỏ. Hay sử dụng Step Into (F7) để
chạy từng lệnh một, gặp lời gọi hàm thì nó sẽ vào bên trong lời gọi hàm chạy từng lệnh
trong đó. Khác với Step Over (F8) một tí là khi có lời gọi hàm thì Step Over xem như đó
là một lệnh bình thường, không đi vào hàm chi tiết như Step Into.
Reset: trở về đầu chương trình.
Bước 3: Khi debug thì ta cũng cần phải biết giá trị của các thanh ghi cũng như bộ
nhớ của chip như thế nào, để xem được các giá trị này thì chúng ta qua menu View.
Để xem được giá trị của các thanh ghi trong PIC ta chọn View -> File registers sẽ xuất
hiện cửa sổ như hình sau:
Bộ môn Kỹ Thuật Máy Tính 13 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Để xem được giá trị của các thanh ghi SFR thì ta chọn View -> Special Function
Registers sẽ xuất hiện của sổ như hình sau:
Hay để xem một và thanh ghi mà ta quan tâm thì có thể dùng Watch để xem bằng
cách vào View -> Watch thì hình sau sẽ xuất hiện:
Bộ môn Kỹ Thuật Máy Tính 14 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Muốn xem thanh ghi nào, ta chỉ việc chọn thanh ghi tương ứng trong combobox
bên trên, sau đó nhấn Add SFR.
1.4 Debug onchip dùng Mplab ICD2.
Cũng giống như debug trên Mplab SIM, Mplab ICD2 cũng có những tính năng
tương tự, nhưng khi sử dụng Mplab ICD2 thì cần phải có mạch debug, và các hiện tượng
xảy ra giống như khi chạy thực tế.
1.5 Bài tập
Bộ môn Kỹ Thuật Máy Tính 15 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Bài 2 : Khảo sát cổng xuất nhập
Nội dung:
Khảo sát hoạt động của nút nhấn, LED.
Khảo sát các thanh điều khiển cổng xuất nhập.
Tính toán thời gian thực thi lệnh, viết chương trình con làm nhiệm vụ delay.
Viết chương trình đọc giá trị của tổ hợp nút nhấn và điều khiển giá trị hiển thị
LED.
Yêu cầu:
Viết chương trình xuất dữ liệu ra 4 led đơn đếm từ 0 -> 15 -> 0. Thời gian giữa
các lần đếm lên 1 đơn vị là 1s.
Nhập dữ liệu từ nút nhấn RA4. Khi nút RA4 được nhấn thì led đơn RB0 sáng,
khi không nhấn RA4 thì led đơn RB0 tắt.
2.1 Kiến thức liên quan
2.1.1 Các thanh ghi điều khiển cổng xuất nhập
Mỗi Port có ba thanh ghi điều khiển hoạt động chính:
Các bit trong thanh ghi TRIS: thiết lập chân tương ứng là ngõ vào (logic 1) hoặc
ngõ ra (logic 0).
Các bit trong thanh ghi PORT: đọc mức logic từ chân tương ứng.
Các bit trong thanh ghi LAT: ghi mức logic ra chân tương ứng.
2.1.2 Kết nối mạch
Vị trí LED hiển thị và nút nhấn trên board như hình dưới đây:
Bộ môn Kỹ Thuật Máy Tính 16 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
LED hiển thị có kết nối như sau:
D2
LED
R21 470
RB0
D3
LED
R22 470
RB1
D4
LED
R23 470
RB2
D5
LED
R24 470
RB3
1 2
J6
Để LED sáng, J6 phải được nối lại và chân điều khiển tương ứng được thiết lập là
ngỏ ra và ở mức logic 1.
Các nút nhấn có kết nối như sau:
VCC
S1
RESET
R1
10K
D401
4007
R3
10K
VCC
R7
10K
VCC
S3
SW RB0
C1
104
C2
104
MCLR RB0RA4
S2
SW RA4
Nút nhấn RESET dùng để reset vi điều khiển
Nút nhấn RA4, RB0 khi được nhấn sẽ làm cho chân tương ứng ở mức logic 0.
Cần thiết lập các chân RA4 và RB0 là ngõ vào.
Hiện tượng rung phím:
VCC
R7
10K
S3
SW RB0
C2
104
RB0
Khi phím được nhấn, do tác động của hiện tượng rung cơ học, tín hiệu điện tại
Bộ môn Kỹ Thuật Máy Tính 17 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
ngõ ra bị chuyển trạng thái giữa logic 0 và logic 1. Khi phím được thả, hiện tượng rung
cũng xảy ra tương tự.
Bộ dao động chính có kết nối như sau:
C4
22pF
C5
22pF
Y1
4MHz
VCC
1
2
J7
OSC1
OSC2
NC/OE
1
VCC
4
GND
2
OUT
3
Y2
4MHz
VCC
OSC1
R4
4.7K
C3
22pF
Trên kit thí nghiệm, thạch anh Y2 được sử dụng cho tất cả các bài thí nghiệm.
2.2 Các bước hiện thực yêu cầu 1
Bước 1: Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project
là Led_don, tạo file led_don.asm và chọn chip 18f4520. Ta được hình sau:
Bước 2: Include file p18f4520.inc vào file led_don.asm.
Bước 3: Khởi tạo PortB là output sử dụng các lệnh clrf, bcf.
INIT
clrf PORTB ; setup portb for outputs
Bộ môn Kỹ Thuật Máy Tính 18 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
bcf TRISB,0 ; clear trisb.0
bcf TRISB,1 ; clear trisb.1
bcf TRISB,2 ; clear trisb.1
bcf TRISB,3 ; clear trisb.1
return
Bước 4: Tạo hàm delay1ms sử dụng các lệnh CLRF, NOP, DECFSZ,
GOTO.
delay equ 0ch ; declare variable “delay”
Delay1ms ;Approxiamtely at 4Mhz
clrf delay ; clear variable “delay”
Delay_1
nop
decfsz delay
goto Delay_1
return
Bước 5: Từ đây ta có thể tạo ra được hàm delay1s:
Delay1s
Movwf .4
Movlw delay_1sa
Delay1s_1
Movwf .250
Movlw delay_1sb
Delay1s_2
Call Delay1ms
decfsz delay_1sb
goto Delay1s_2
decfsz delay_1sa
goto Delay1s_1
return
Bước 6: Viết chương trình cho hàm main thực hiện các yêu cầu của
đề bài sử dụng lệnh INCF:
begin
INCF PORTB
call Delay1s
goto begin
Bộ môn Kỹ Thuật Máy Tính 19 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
2.3 Chương trình mẫu yêu cầu 1
;=====================================;
; Name: led_don.asm
; Project: Xuất dữ liệu ra 4 led đơn đếm từ 0 -> 15 -> 0.
; Thời gian giữa các lần đếm lên 1 đơn vị là 1s.
; Author: BKIT HARDWARE CLUB
; Homepage:
; Creation Date: 7 - 31 - 2009
;======================================;
list p=18f4520
#include p18f4520.inc
delay res 1
delay_1sa res 1
delay_1sb res 1
org 0
goto start
start
call INIT
begin
INCF PORTB
call Delay1ms
goto begin
INIT
clrf PORTB ; setup portb for outputs
bcf TRISB,0
bcf TRISB,1
bcf TRISB,2
bcf TRISB,3
return
Delay1ms ;Approxiamtely at 4Mhz
clrf delay
Delay_1
nop
decfsz delay
goto Delay_1
return
Delay1s
movwf .4
movlw delay_1sa
Bộ môn Kỹ Thuật Máy Tính 20 Thực hành Vi xử lý
Trường ĐH. Bách Khoa TP.HCM Khoa KH & KTMT
Delay1s_1
movwf .250
movlw delay_1sb
Delay1s_2
call Delay1ms
decfsz delay_1sb
goto Delay1s_2
decfsz delay_1sa
goto Delay1s_1
return
END
Sau khi có chương trình mẫu ta thực hiện việc compile chương trình và nạp
xu