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.
                
              
                                            
                                
            
 
            
                
79 trang | 
Chia sẻ: tuandn | Lượt xem: 2555 | Lượt tải: 4
              
            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