Thực hành Vi xử lý

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.

pdf79 trang | Chia sẻ: tuandn | Ngày: 30/01/2013 | Lượt xem: 1909 | Lượt tải: 3download
Bạn đang xem nội dung tài liệu Thực hành Vi xử lý, để tải tài liệu về máy 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