Tutorial MCLR/VPP RB7/PGD 39 2 RB6/PGC 38 3 RB RB RA2/AN2/VREF-/CVREF RB3/PGM 35 6 RB2 34 RA4/TOCKI/C1OUT

Similar documents
Lâm sàng thống kê Ước tính khoảng tin cậy 95% cho một biến số đã hoán chuyển sang đơn vị logarít

Tác dụng codeine của tác dụng thuốc Efferalgan Codein thuốc Thuốc tác dụng thuốc codein tác dụng tác dụng tác dụng thước Efferalgan codein dụng tác

10/1/2012. Hạch toán Thu nhập Quốc dân

POWER POINT 2010 GIÁO TRÌNH

HƯỚNG DẪN THỰC HÀNH TRÊN EVIEW 6.0. Hi vọng rằng phần HƯỚNG DẪN THỰC HÀNH TRÊN EVIEW 6.0 sẽ là một tài liệu tham khảo bổ ích cho các bạn!

Năm 2015 A E. Chứng minh. Cách 1.

Bộ ba bất khả thi. Impossible Trinity

PHÂN TÍCH THỐNG KÊ SỬ DỤNG EXCEL

Mô phỏng vận hành liên hồ chứa sông Ba mùa lũ bằng mô hình HEC-RESSIM

PHU LUC SUA DOI VA BO SUNG DIEU LE

learn.quipper.com LUYỆN THI THPT - QG

ĐÁNH GIÁ CHẤT LƯỢNG DỊCH VỤ ĐIỂM ĐẾN DU LỊCH VĂN HÓA TỈNH BẠC LIÊU

ĐÁNH GIÁ PROFILE VẬN TỐC GIÓ THEO CÁC TIÊU CHUẨN CỦA MỘT SỐ NƯỚC

Cách tiếp cận quốc gia về các biện pháp đảm bảo an toàn: Hướng dẫn cho chương trình REDD+ quốc gia

Thực hành có sự tham gia đầy đủ của các bên liên quan. Hướng dẫn cho các thử nghiệm y sinh học dự phòng HIV

CHẤN ĐOÁN, ĐIỀU TRỊ CHẤN THƯƠNG BỤNG KÍN TẠI BỆNH VIỆN QUÂN Y 103 TRONG GIAI ĐOẠN

Terms and Conditions of 'Shopping is GREAT' cash back campaign Điều khoản và Điều kiện của Chương trình tặng tiền Mua sắm Tuyệt vời

TIẾN TỚI XÂY DỰNG HỆ THỐNG MÔ HÌNH DỰ BÁO VÀ KIỂM SOÁT MÔI TRƯỜNG BIỂN ĐÔNG

THIẾT KẾ BỔ SUNG TRONG CHỌN GIỐNG

Đo lường các hoạt động kinh tế

Thay đổi cuộc chơi: Impact 360 TM Ghi âm cho truyền thông IP & Tối ưu hóa Nhân lực (WFO) Stephen Abraham Loh Presenter

Các Phương Pháp Phân Tích Định Lượng

XÁC ĐỊNH HÀM LƯỢNG CÁC BON TRONG CÁC BỘ PHẬN CÂY LUỒNG (Dendrocalamus barbatus Hsueh.et.E.Z.Li)

The Magic of Flowers.

The Hoi An Declaration on Urban Heritage Conservation and Development in Asia 2017

Giải pháp cơ sở hạ tầng dành cho Điện toán Đám mây và Ảo hóa

ĐẶC ĐIỂM SINH TRƯỞNG VÀ SỬ DỤNG THỨC ĂN CỦA GÀ RỪNG (Gallus gallus Linnaeus, 1758) TRONG ĐIỀU KIỆN NUÔI NHỐT

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DƯỢC HÀ NỘI

Chương 14. Đồng liên kết và mô hình hiệu chỉnh sai số

NGHIÊN CỨU SỬ DỤNG ẢNH VIỄN THÁM XÁC ĐỊNH SỰ PHÂN BỐ ĐẤT THAN BÙN Ở U MINH HẠ

Các phương pháp định lượng Bài đọc. Chương trình Giảng dạy Kinh tế Fulbright Nin khĩa

CHƯƠNG 1. Nhận thức của thị trường và niềm tin của nhà đầu tư: Những nhân tố làm biến động giá cổ phiếu

VAI TRÒ LÀM GIẢM TÁC ĐỘNG CỦA DÒNG CHẢY, SÓNG DO RỪNG NGẬP MẶN Ở KHU VỰC VEN BỜ BÀNG LA- ĐẠI HỢP (HẢI PHÒNG)

Ảnh hưởng của xâm nhập lạnh sâu đến mưa ở Việt Nam

Sự lựa chọn hợp lý. Nâng cao năng lực cho quá trình chính sách y tế dựa trên bằng chứng. Liên minh Nghiên cứu chính sách và hệ thống y tế

CHƯƠNG 9: DRAWING. Hình 1-1

Bài 5 Chiến lược Sản phẩm Quốc tế

Southlake, DFW TEXAS

THÀNH PHỐ HỒ CHÍ MINH A Nguyen Van Nghi Street, Ward 7, Go Vap District. 4 1C Nguyen Anh Thu Street, Trung My Tay Ward, District 12

HỢP TÁC QUỐC TẾ TRONG LĨNH VỰC DẦU KHÍ CỦA TỔNG CÔNG TY CỔ PHẦN KHOAN VÀ DỊCH VỤ KHOAN DẦU KHÍ ( )

Ghi chú. Công ty TNHH MTV Dầu khí TP.HCM. 27 Nguyễn Thông, Phường 7, quận 3, TP.HCM. SP Saigon Petro

Uỷ Ban Dân Tộc. Nghèo đa chiều trẻ em Việt Nam vùng dân tộc thiểu số

KHUNG THỐNG KÊ VĂN HÓA UNESCO 2009 (FCS)

Phối cảnh - Artist s impression Phối cảnh - Artist s impression Phối cảnh - Artist s impression

Pháp luật Quốc tế với vấn đề khủng bố quốc tế: một số vấn đề lý luận và thực tiễn

TỶ SỐ GIỚI TÍNH KHI SINH Ở VIỆT NAM: CÁC BẰNG CHỨNG MỚI VỀ THỰC TRẠNG, XU HƯỚNG VÀ NHỮNG KHÁC BIỆT

PHÒNG THƯƠNG MẠI VÀ CÔNG NGHIỆP VIỆT NAM ỦY BAN TƯ VẤN VỀ CHÍNH SÁCH THƯƠNG MẠI QUỐC TẾ NGHIÊN CỨU

BÁO CÁO TỔNG KẾT 10 NĂM ( ) THỰC HIỆN VIETNAM ICT INDEX VÀ GIỚI THIỆU HỆ THỐNG CHỈ TIÊU, PHƢƠNG PHÁP TÍNH MỚI

Hiện trạng triển khai IPv6 toàn cầu qua các con số thống kê và dự án khảo sát mức độ ứng dụng IPv6

Chương 16. Dự báo kinh tế

THU THANH VÀ SOẠN NHẠC VỚI CUBASE

CÔNG ƯỚC LUẬT BIỂN 1982 VÀ KHẢ NĂNG ÁP DỤNG VÀO CÁC TRANH CHẤP TẠI BIỂN ĐÔNG

Lý thuyết hệ thống tổng quát và phân hóa xã hội: Từ Ludwig von Bertalanffy đến Talcott Parsons

LỜI CAM ĐOAN. Trương Thị Chí Bình

TĂNG TỶ TRỌNG. HNX - Vietnam Điểm sáng lợi nhuận trong quý 4 và tăng trưởng tích cực trong các năm tới

ARCGIS ONLINE FOR ORGANIZATION

Bộ thanh glii trong 8086

PHÂN TÍCH HIỆU QUẢ KỸ THUẬT CHO CÁC TRẠI NUÔI CÁ TRA THƯƠNG PHẨM TẠI ĐỒNG BẰNG SÔNG CỬU LONG

CỘNG ĐỒNG KINH TẾ ASEAN SỔ TAY KINH DOANH

ĐIỂM LẠI CẬP NHẬT TÌNH HÌNH PHÁT TRIỂN KINH TẾ VIỆT NAM. Public Disclosure Authorized. Public Disclosure Authorized. Public Disclosure Authorized

NHỮNG HỆ LỤY VÀ THAY ĐỔI TRONG CUỘC CHIẾN CHỐNG BIẾN ĐỔI KHÍ HẬU CỦA THẾ GIỚI KHI MỸ RÚT KHỎI HIỆP ĐỊNH PARIS

BÁO CÁO NGÀNH CẢNG BIỂN

và Sáng kiến Thích ứng và Uỷ ban Sông Mê Kông

Chương 19. Các biến giải thích ngẫu nhiên và phương pháp biến công cụ

Hành trình đến với Điện toán Đám mây riêng

THÀNH PHẦN LOÀI VÀ ĐẶC ĐIỂM PHÂN BỐ CỦA GIUN ĐẤT Ở VÀNH ĐAI SÔNG TIỀN

Sika at Work. Sika Vietnam Industrial Factory Projects in Vietnam. Các dự án Nhà máy Công nghiệp tại Việt Nam

SINH KHỐI RỪNG TRÀM VƯỜN QUỐC GIA U MINH THƯỢNG, TỈNH KIÊN GIANG

KHẢ NĂNG CUNG CẤP KALI VÀ SỰ ĐÁP ỨNG CỦA LÚA ĐỐI VỚI PHÂN KALI TRÊN ĐẤT THÂM CANH BA VỤ LÚA Ở CAI LẬY TIỀN GIANG VÀ CAO LÃNH ĐỒNG THÁP

Detail Offer/ Chi Tiết. Merchant/ Khách Sạn & Resorts Sofitel Legend Metropole Hanoi (Le Spa du Metropole)

DẪN NHẬP. B. Mục Lục Thư Viện Tự Động Hóa (automated online catalog) hay Mục Lục Trực Tuyến (OPAC = Online Public Access Catalog)

BÁO CÁO KHẢO SÁT NHU CẦU ĐÀO TẠO HỆ THỐNG THƯ VIỆN CÔNG CỘNGVÀ ĐIỂM BƯU ĐIỆN VĂN HOÁ XÃ TẠI 3 TỈNH THÁI NGUYÊN, NGHỆ AN VÀ TRÀ VINH

ĐẶC ĐIỂM THẠCH HỌC TRẦM TÍCH THÀNH TẠO CARBONATE TRƯỚC KAINOZOI MỎ HÀM RỒNG, ĐÔNG BẮC BỂ SÔNG HỒNG

THAY ĐỔI MÔ HÌNH TĂNG TRƯỞNG RENOVATION OF GROWTH MODEL

TRỞ LẠI TƯƠNG LAI: SỰ BẤT ỔN TẠI CHÂU ÂU SAU CHIẾN TRANH LẠNH (PHẦN 1)

CTCP Dược Hậu Giang (HOSE: DHG)

Rèn kỹ năng đọc hiểu (1)

LUẬN ÁN TIẾN SĨ LỊCH SỬ

Văn phòng ILO khu vực Châu Á Thái Bình Dương Phòng phân tích kinh tế và xã hội khu vực (RESA) Tháng 12 năm 2014

Ý nghĩa của trị số P trong nghiên cứu y học

THÚC ĐẨY CHUYỂN DỊCH NĂNG LƯỢNG TÁI TẠO TOÀN CẦU

Phát triển của Việt Nam trong mối quan hệ thương mại với Trung Quốc: cần làm gì?

NIÊM YẾT TRÁI PHIẾU TRÊN SỞ GIAO DỊCH CHỨNG KHOÁN THÀNH PHỐ HỒ CHÍ MINH

Lồng ghép các mối liên hệ giữa đói nghèo môi trường với quy hoạch phát triển: Sách hướng dẫn người thực hiện

Tư liệu về giám sát rạn san hô từ năm 2000 trên 10 vùng rạn và một số khảo

Trường Công Boston 2017

Công ty Cổ phần Chứng khoán Bản Việt (VCSC)

Từ xói lở đến bồi lắng

Trươ ng Trung Ho c Cơ Sơ George V. Ley Va

Chuyển đổi Nông nghiệp Việt Nam: Tăng giá trị, giảm đầu vào

Cần Thơ, Việt Nam Tăng cường Khả năng Thích ứng của Đô thị

VIET LABOR Free Viet Labor Federation PRISON LABOR PRISONERS WORK UNDER WHIPS AS AUTHORITIES WHIP UP PROFITS

11 Phân tích phương sai (Analysis of variance)

VAI TRÒ CỦA QUY HOẠCH KHÔNG GIAN BIỂN TRONG TĂNG TRƯỞNG XANH LAM Ở VIỆT NAM

CONTENT IN THIS ISSUE

BÁO CÁO TIỀN TỆ. Tháng / Số 37. Tóm tắt nội dung. Nghiệp vụ thị trường mở. Lãi suất VND liên ngân hàng. Lãi suất trúng thầu TPCP kỳ hạn 5 năm

PHỨC HỆ TẦNG CHỨA PALEOGEN - CÁC YẾU TỐ ĐỊA CHẤT TÁC ĐỘNG ĐẾN CHẤT LƯỢNG THẤM CHỨA VÀ TIỀM NĂNG HYDROCARBON

B NG CÂU H I: TÌM HI U CÁC KHÁI NI M V DU L CH B N V NG. 2. B n có ngh r ng vi c b o v ngu n l i t nhiên và du l ch có th t ng thích nhau?

BÁO CÁO CẬP NHẬT 25/05/2018. TCT Phân bón & Hóa chất Dầu khí Rủi ro giá khí đầu vào che mờ triển vọng NPK DPM (HOSE)

KINH TẾ CHÍNH TRỊ CỦA ĐỒNG EURO

Transcription:

Ngày: 3/6/2006 Trang: 1/14 Tutorial 03.02 Gửi đến: Nội dung: picvietnam@googlegroups.com Bài 3: KĨ THUẬT BẢNG MICROSOFT WORD Tóm tắt: Tutorial post lên picvietnam, topic PIC16F877A TỪ DỄ TỚI KHÓ thuộc luồng CƠ BẢN VỀ VI ĐIỀU KHIỂN VÀ PIC với nội dung: Phân tích giải thuật kĩ thuật bảng và một số ứng dụng hiển thị với LED. 1. Đặt vấn đề Trước khi phân tích giải thuật của kĩ thuật bảng ta thực hiện một ứng dụng nhỏ, coi như vừa ôn lại bài cũ, vừa dặt ra các vấn đề cho bài mới. Ứng dụng này sử dụng mạch nguyên lí đã được xây dựng ở bài 1. Ứng dụng 1: Cho một LED chạy từ trái sang phải sau mỗi khoảng thời gian delay 100 ms. Ta đã xây dựng một mạch ứng dụng bao gồm các LED được gắn vào PORTB của vi điều khiển PIC thông qua các điện trở, và muốn LED nào sáng, cần xuất giá trị logic 1 ra chân tương ứng của PORTB. Để thuận tiện cho việc theo dõi, sơ đồ mạch sẽ đươc đưa lại trong hình dưới đây. HI R1 R2 D1 0 C1 1 2 30 pf C2 30 pf SW1 0 8 32 9 RE0/RD/AN5 VDD 31 10 RE1/WR/AN6 GND RE2/CS/AN7 30 R6 11 RD7/PSP7 29 0 HI 12 VDD PIC16F877A RD6/PSP6 28 GND RD5/PSP5 27 0 13 RD4/PSP4 R7 14 OSC1/CLKIN 26 OSC2/CLKOUT 4 MHz 1 40 MCLR/VPP RB7/PGD 39 2 RB6/PGC 38 3 RA0/AN0 RB5 37 4 RA1/AN1 RB4 36 5 RA2/AN2/VREF-/CVREF RB3/PGM 35 6 RA3/AN3/VREF+ RB2 34 7 RA4/TOCKI/C1OUT RB1 33 RA5/AN4/SS/C2OUT RBO/INT 15 16 17 18 19 20 RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2 25 24 23 22 21 HI R3 R4 R5 R8 R9 D2 D3 D4 D5 D6 D7 D8 0 Hình 1: Sơ đồ nguyên lí mạch ứng dụng.

Ngày: 3/6/2006 Trang: 2/14 Ta đã biết được cách thiết lập giá trị cho các chân I/O của vi điều khiển (bài 1), cách viết chương trình delay (bài 2), và muốn các LED dịch từ trái sang phải, ta sử dụng một trong hai lệnh sau: Lệnh RLF Cú pháp: RLF thanh_ghi,noi_den Tác dụng: dịch trái các bit trong thanh ghi thanh_ghi thông qua cờ carry C (thanh ghi chức năng STATUS). Kết quả sau khi dịch được lưu vào thanh ghi thanh_ghi nếu tham số noi_den mang gia trị 1 hoặc thanh ghi W nếu tham số noi_den mang giá trị 0. Có thể hình dung cách dịch của lệnh này theo hình dưới. Lệnh RRF Cú pháp: RRF thanh_ghi,noi_den Tác dụng: dịch phải các bit trong thanh ghi thanh_ghi thông qua cờ carry C (thanh ghi chức năng STATUS). Kết quả sau khi dịch được lưu vào thanh ghi thanh_ghi nếu tham số noi_den mang gia trị 1 hoặc thanh ghi W nếu tham số noi_den mang giá trị 0. Có thể hình dung cách dịch của lệnh này theo hình dưới. Đến đây xem như ta đã có đầy đủ các thông tin để viết chương trình. Giải thuật cũng khá đơn giản, các bước tiến hành lần lượt như sau: Đưa vào thanh ghi PORTB giá trị 10000000b (cho LED đầu tiên sáng). Dịch phải giá trị trong thanh ghi PORTB (LED sáng cũng được dịch tương ứng). Delay 100 ms. Lặp lại bước 2. Và đây, chương trình của ứng dụng: Chương trình 3.1: ; WWW.PICVIETNAM.COM ; Lap trinh: NGUYEN TRUNG CHINH ; Ngay bat dau: 23 thang 01 nam 2006

Ngày: 3/6/2006 Trang: 3/14 ; Ngay hoan thanh: 23 thang 01 nam 2006 ; Kiem tra chuong trinh: picvietnam@googlegroups.com ; Ngay kiem tra: ; Su dung vi dieu khien Microchip: PIC16F877A title chuongtrinh3 1.asm processor 16f877a include <p16f877a.inc> CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF ; Cap nhat va bo sung: ; Mo ta chuong trinh: Chuong trinh dung de dieu khien một LED sang dịch sang phai sau ; moi khoang thoi gian 100 ms. ; Mo ta phan cung: 8 LED duoc gan vao PORTB thong qua cac dien tro, cac ; thanh phan di kem bao gom thach anh, mach reset va nguon === ; ; Khoi tao cac bien ; count1 EQU 0x20 ; cac bien dung cho doan chuong trinh delay counta EQU 0x21 countb EQU 0x22 ; CHƯƠNG TRÌNH CHÍNH ORG 0x000 GOTO start start ; chương trình chính bắt đầu tại đây ; ; Khởi tạo PORT B ;

Ngày: 3/6/2006 Trang: 4/14 BCF STATUS,RP1 BSF STATUS,RP0 ; chọn BANK1 CLRF TRISB ; PORT B < outputs BCF STATUS,RP0 ; chọn BANK0 MOVLW b 10000000 ; bật LED đầu tiên sáng lên MOVWF PORTB ; PORTB < b 10000000 ; ; Vòng lặp chính của chương trình ; loop CALL delay100ms ; gọi chương trình con delay100ms RRF PORTB,1 ; dịch phải thanh ghi PORTB ; kết quả sau khi dịch lưu vào thanh ghi PORTB GOTO loop ; vòng lặp vô hạn === ; CHƯƠNG TRÌNH CON === delay100ms ; chương trình con delay 100 ms MOVLW d 100 MOVWF count1 d1 MOVLW 0xC7 MOVWF counta MOVLW 0x01 MOVWF countb delay_0 DECFSZ counta,1 GOTO $+2 DECFSZ countb,1 GOTO delay_0

Ngày: 3/6/2006 Trang: 5/14 DECFSZ GOTO RETURN END count1,1 d1 ; trở về chương trình chính ; kết thúc chương trình === Xong! Đến đây ta có thể cảm nhận được rằng dường như việc phát triển các ứng dụng đã trở nên dễ dàng hơn trước. Tương tự ta có thể điều khiển các LED dịch từ phải sang trái (thay lệnh RRF bằng lênh RLF). Bây giờ, giả sử yêu cầu của ứng dụng không phải là dịch trái hay dịch phải, mà là dịch theo một qui luật phức tạp nào đó hoặc chẳng cần qui luật dịch nào cả. Rõ ràng các lệnh RLF hay RRF không đủ khả năng giải quyết được vấn đề, hoặc nếu có thì giải thuật cho chương trình sẽ rất phức tạp vì phải tìm ra qui luật dịch LED mà yêu cầu đặt ra. Tuy nhiên mọi khó khăn dường như đều có cách giải quyết riêng của nó, và tập lệnh của PIC cung cấp cho ta một công cụ để giải quyết khó khăn trên: lệnh RETLW. Có thể cho rằng đây là một lệnh rất quan trọng trong việc phát triển các ứng dụng và giải thuật cho vi điều khiển PIC. Kĩ thuật bảng cũng được xây dựng dựa trên lệnh này. Phần tiếp theo sẽ phân tích giải thuật của kĩ thuật này. 2. Kĩ thuật bảng 2.1. Các thông tin cơ sở để xây dựng kĩ thuật bảng 2.1.1 Các lệnh hỗ trợ cho kĩ thuật bảng. Trong bài trước ta từng biết đến lệnh RETLW với vai trò như lệnh RETURN (trở về chương trình chính từ chương trình con), ta cũng đã biết được cách sử dụng lệnh này như thế nào. Để thuận tiện cho việc theo dõi, lệnh RETLW cũng sẽ được nhăc lại ở đây cùng với một số lệnh được sử dụng cho việc phát triển kĩ thuật bảng. Lệnh RETLW Cú pháp: RETLW k (0 k 255) Tác dụng: trở về chương trình chính từ chương trình con với giá trị k được chứa trong thanh ghi W. Lệnh ADDLW Cú pháp: ADDLW k (0 k 255) Tác dụng: cộng giá trị k vào giá trị chứa trong thanh ghi W, kết quả chứa trong thanh ghi W. Lệnh này được hỗ trợ bởi các bit trạng thái C, DC, Z trong thanh ghi

Ngày: 3/6/2006 Trang: 6/14 STATUS. Chức năng các lệnh này sẽ được bàn đến kĩ hơn khi cần phát triển các ứng dụng liên quan đến các bit trạng thái này. Lệnh ADDWF Cú pháp: ADDWF thanh_ghi,noi_den Tác dụng: Cộng giá trị chứa trong thanh ghi W vào thanh ghi thanh_ghi. Kết quả được chứa trong thanh ghi thanh_ghi nếu tham số noi_den mang giá trị 1 hoặc thanh ghi W nếu tham số noi_den mang giá trị 0. Lệnh này cũng được hỗ trợ bởi các bit trạng thái C, DC, Z trong thanh ghi STATUS. Lệnh BTFSS Cú pháp: BTFSS thanh_ghi,bit (0 bit 7) Lệnh 1 Lệnh 2.. Tác dụng: kiểm tra bit được chỉ định bởi tham số bit trong thanh ghi thanh_ghi. Nếu bit đó bằng 0, lệnh 1 được thực thi. Nếu bit đó khác 0, lệnh 1 được bỏ qua và thay vào đó là lệnh NOP. Lệnh BTFSC Cú pháp: BTFSC thanh_ghi,bit (0 bit 7) Lệnh 1 Lệnh 2. Tác dụng: kiểm tra bit được chỉ định bởi tham số bit trong thanh ghi thanh_ghi. Nếu bit đó bằng 1, lệnh 1 được thực thi. Nếu bit đó bằng 0, Lệnh tiếp theo được bỏ qua và thay vào đó bằng lệnh NOP. Leänh INCF Cú pháp: INCF thanh_ghi,noi_den Tác dụng: tang giá trị thanh ghi thanh_ghi len 1 đơn vị. Kết quả được lưu vào thanh ghi W nếu tham số noi_den bằng 0 hoặc thanh ghi thanh_ghi nếu tham số noi_den bằng 1. Lệnh này được hỗ trợ bởi bit Z trong thanh ghi STATUS.

Ngày: 3/6/2006 Trang: 7/14 Lệnh DECF Cú pháp: DECF thanh_ghi,noi_den Tác dụng: giảm giá trị thanh ghi thanh_ghi 1 đơn vị. Kết quả được chứa trong thanh ghi W nếu noi_den bằng 0 hoặc thanh ghi thanh_ghi nếu noi_den bằng 1. Lệnh này được hỗ trợ bởi bit Z trong thanh ghi STATUS. Lệnh MOVF Cú pháp: MOVF thanh_ghi,noi_den Tác dụng: đưa giá trị trong thanh ghi thanh_ghi vào thanh ghi W nếu tham số noi_den bằng 0 hoặc thanh ghi thanh_ghi nếu tham số noi_den bằng 1. Việc đưa giá trị trong thanh ghi thanh_ghi vào thanh ghi thanh_ghi có vẻ vô nghĩa. Thông thường công việc này dùng để thiết lập các giá trị cho bit Z (thanh ghi STATUS). Ta sẽ bàn đến kĩ hơn thao tác này khi xây dựng các ứng dụng liên quan đến nó. Lệnh XORLW Cú pháp: XORLW k (0 k 255) Tác dụng: thực hiện phép toán XOR giữa giá trị k vả giá trị trong thanh ghi W. Kết quả được chứa trong thanh ghi W. Nếu kết quả phép toán bằng 0, bit Z (thanh ghi STATUS) sẽ mang giá trị 1. Nếu kết quả phép toán khác 0, bit Z sẽ mang giá trị 0. Xem bảng sau để biết được kết quả logic khi thực hiện phép toán XOR giữa hai tham số A và B: A B Kết quả 0 0 0 0 1 1 1 0 1 1 1 0

Ngày: 3/6/2006 Trang: 8/14 Lệnh XORWF Cú pháp: XORWF thanh_ghi,noi_den Tác dụng: thực hiện phép toán XOR giữa các giá trị chứa trong thanh ghi W và thanh ghi thanh_ghi. Kết quả được chứa trong thanh ghi W nếu tham số «noi_den» mang giá trị 0 hoặc thanh ghi «thanh_ghi» nếu tham số «noi_den» mang giá trị 1. Lệnh này cũng được hỗ trợ bởi bit Z trong thanh ghi STATUS. Ta có một số nhận xét về phép toán XOR như sau: Khi hai biến A và B mang giá trị giống nhau, kết quả của phép toán là 0 Khi hai biến A và B mang giá trị khác nhau, kết của quả phép toán bằng 1 Như vậy, giả sử A và B bằng nhau, thì kết quả phép toán (A XOR B) sẽ bằng 0, khi đó, trong trường hợp cấu tạo phần cứng của vi điều khiển PIC, bit Z sẽ mang mức logic 1. Cần chú ý là tập lệnh PIC không có phép toán so sánh, nên lệnh XORLW và bit Z của thanh ghi STATUS được sử dụng để xây dựng giải thuật thực hiện việc so sánh giữa hai số. 2.1.2 Thanh ghi PC. Ta đã biết không như vi xử lí hay vi họ điều khiển 8051, do PIC được thiết kế theo lối kiến trúc Havard nên bộ nhớ chương trình và bộ nhớ dữ liệu được tách riêng. Và để thao tác được với bộ nhớ chương trình trong vi điều khiển PIC, thanh ghi PC được đưa vào để dùng cho việc truy xuất bộ nhớ chương trình. Đây là thanh ghi chứa địa chỉ các lệnh tiếp theo sẽ được thực thi trong bộ nhơ chương trình. Đối với vi điều khiển PIC16F877A, thanh ghi PC là thanh ghi 13 bit, bao gồm hai thanh ghi PCL (chứa 8 bit thấp) và thanh ghi PCH (chứa các bit cao còn lại). Tại sao là 13 bit?? Câu trả lời là phải dùng 13 bit để mã hóa hết được địa chỉ của bộ nhớ chương trình có dung lượng là 8K word của PIC16F877A (8K word = 2 3 x2 10 word = 2 13 word). Như vậy mới bảo đảm có thể truy xuất đến bất kì ô nhớ nào trong bộ nhớ chương trình của vi điều khiển. Trước mắt ta sẽ không cần quan tâm tới thanh ghi PCH (vì thanh ghi này không nằm trong bộ nhớ dữ liệu) mà chỉ quan tâm tới thanh ghi PCL. Thanh ghi này có trong bộ nhớ dữ liệu, diều đó có nghĩa nó cho phép các thao tác như một thanh ghi thông thường (ghi, xóa, truy xuất,..). Thay đổi giá trị trong thanh ghi PCL sẽ làm thay đổi quá trình truy xuất bộ nhớ chương trình của vi điều khiển. Việc thao tác trên thanh ghi PCL cần hết sức cẩn trọng vì nó sẽ làm thay đổi quá trình thực thi lệnh và làm ảnh

Ngày: 3/6/2006 Trang: 9/14 hưởng nghiêm trọng đến giải thuật cũng như tác dụng của chương trình. Tuy nhiên nếu kiểm sát được, ta có thể điều khiển một cách linh động dòng chảy của chương trình khi vi điều khiển hoạt động. Cần kiểm soát một cách chặt chẽ việc thao tác trên thanh ghi PCL, đó cũng là yêu cầu quan trọng của kĩ thuật bảng. Có thể tìm hiểu thêm thông tin về thanh ghi này trong datasheet của nhà sản xuất. Ta cũng nên tìm hiểu các để biết thêm và để kiếm chứng lại các thông tin trong bai, đồng thời giúp ta có thêm được một số kĩ năng trong việc khai thác thông tin trong datasheet của một sản phẩm điện tử. Trong bài này ta chỉ cần tìm hiểu các thông tin đủ để phục vụ cho bài. 2.2. Phân tích giải thuật kĩ thuật bảng Ta sẽ phân tích kĩ thuật này thông qua một ứng dụng. Yêu cầu của ứng dụng như ứng dụng 1 mà ta đã thực hiện thành công ở phần 1, đó là cho một LED chạy từ trái sang phải, nhưng lần này thay vì sử dụng lệnh RLF hay RRF, ta sẽ sử dụng kĩ thuật bảng. Việc ứng dụng kĩ thuật bảng trong trường hợp này không mang tính chất tối ưu hóa giải thuật, mà chỉ mang tính chất tìm hiểu một kĩ thuật viết chương tình mới. Chương trình trong ví dụ 1 được viết lại như sau: Chương trình 3.2: ; WWW.PICVIETNAM.COM ; Lap trinh: NGUYEN TRUNG CHINH ; Ngay bat dau: 23 thang 01 nam 2006 ; Ngay hoan thanh: 23 thang 01 nam 2006 ; Kiem tra chuong trinh: picvietnam@googlegroups.com ; Ngay kiem tra: ; Su dung vi dieu khien Microchip: PIC16F877A title processor include CONFIG chuongtrinh3 2.asm 16f877a <p16f877a.inc> _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF ; Cap nhat va bo sung:

Ngày: 3/6/2006 Trang: 10/14 ; Mo ta chuong trinh: Chuong trinh dung de dieu khien cac LED gan vao ; PORTB lần lượt chạy từ trái sang phải sau moi khoang thoi ; gian 100 ms. ; Su dung ki thuat bang ; Mo ta phan cung: 8 LED duoc gan vao PORTB thong qua cac dien tro, cac ; thanh phan di kem bao gom thach anh, mach reset va nguon ; ; Khoi tao cac bien ; count1 EQU 0x20 ; Dùng cho chương trình delay counta EQU 0x21 ; Dùng cho chương trình delay countb EQU 0x22 ; Dùng cho chương trình delay count EQU 0x23 ; dùng để tra bảng dữ liệu ;CHUONG TRINH CHINH ORG 0x000 GOTO start start ; ; Khởi tạo PORT B ; BCF STATUS,RP1 BSF STATUS,RP0 ; chọn BANK1 CLRF TRISB ; PORTB < outputs BCF STATUS,RP0 ; chọn BANK0 ; ; Vòng lặp chính của chương trình ;

Ngày: 3/6/2006 Trang: 11/14 Loop1 CLRF count ; reset thanh ghi Loop2 MOVF count, 0 ; đưa giá trị thanh ghi count vào thanh ghi W CALL table ; gọi chương trình con table MOVWF PORTB ; xuất giá trị chứa trong thanh ghi W ra PORTB CALL delay100ms INCF count, 0 ; tăng giá trị thanh ghi count ; kết quả chứa trong thanh ghi W XORLW d 8 ; thực hiện phép toán XORgiữa thanh ghi W và ; giá trị 8, kết quả chứa trong thanh ghi W BTFSC STATUS,Z ; kiểm tra bit Z (Zero) GOTO Loop1 ; nhảy về label Loop1 nếu Z = 1 INCF count, 1 ; thực thi lệnh này nếu Z = 0 GOTO Loop2 ;=========================================================================== ; Các chương trình con ;=========================================================================== ; ; Chương trình con cho kĩ thuật bảng ; table ADDWF PCL,1 ; cộng giá trị trong thanh ghi W vào thanh ghi ; PCL, kết quả chứa trong thanh ghi PCL RETLW b 10000000 ; dữ liệu của bảng RETLW b 01000000 RETLW b 00100000 RETLW b 00010000 RETLW b 00001000 RETLW b 00000100

Ngày: 3/6/2006 Trang: 12/14 RETLW RETLW b 00000010 b 00000001 ; ; Chương trình con delay 100 ms ; delay100ms d1 delay_0 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF DECFSZ d 100 count1 0xC7 counta 0x01 GOTO $+2 DECFSZ GOTO DECFSZ GOTO RETURN END countb counta,1 countb,1 delay_0 count1,1 d1 Ta cùng phân tích giải thuật của chương trình dựa trên các thông tin đã được cung cấp ở phần 2.1. Sau mỗi lần lệnh CALL table đuợc gọi, lệnh RETLW trong chương trình con table sẽ mang giá trị từ bảng dữ liệu chứa trong thanh ghi W trở về chương trình chính. Dữ liệu này được xuất ra thanh ghi PORT B để điều khiển việc bật tắt các LED gắn vào PORT B. Sau mỗi lần như vậy, giá trị trong thanh ghi count sẽ được tăng lên 1 đơn vị thông qua lệnh INCF count,1. Giá trị trong thanh ghi count lại được đưa vào thanh ghi W thông qua lệnh MOVF count,0 để cộng vào thanh ghi PCL thông qua lệnh ADDWF count,1 ở chương trình con table để điều khiển chương trình nhảy tới đúng địa chỉ cần lấy dữ liệu trở về chương trình chính thông qua lệnh RETLW.

Ngày: 3/6/2006 Trang: 13/14 Để đề phòng trường hợp giá trị biến count cộng vào thanh ghi PCL vượt quá ví trí của bảng dữ liệu (trường hợp này xảy ra khi biến count mang giá trị lớn hơn 8, vì bảng dữ liệu chỉ chứa 8 giá trị), khi đó dòng chương trình thực thi sẽ không còn đúng như ta mong muốn, biến count sau mỗi lần tăng sẽ được so sánh với giá trị 8 thông qua lệnh XORLW và bit trạng thái Z được kiểm tra thông qua lệnh BTFSC STATUS,Z (giái thuật cho việc so sánh đã được đề cập ở phần trên). Nếu giá trị trong thanh ghi count chưa bằng 8, bit Z chưa mang giá trị 0, lệnh GOTO Loop1 được bỏ qua và quá trình lấy dữ liệu lai được tiếp tục thông qua các lệnh tiếp theo sau đó. Nếu thanh ghi count đã bằng 8, bit Z sẽ mang giá trị 1, lệnh GOTO Loop1 sẽ được thực thi, biến count khi đó được reset về 0 thông qua lệnh CLRF count và quá trình lấy dữ liệu xuất ra PORT B của vi điều khiển tiếp tục được thực thi. Quá trình này được bảo đảm thực thi không ngừng chừng nào vi điều khiển còn hoạt động. Cần chú ý đến việc sắp xếp các giá trị trong bảng dữ liệu một cách phù hợp với mục đích điều khiển. Trong trường hợp này, do ta muốn LED chạy từ trái sang phải nên trong bảng dữ liệu, giá trị 1 cũng được di chuyển dần từ trái sang phải. Bây giờ, ta có thể điều khiển LED chạy theo bất cứ yêu cầu nào thông qua một thao tác đơn giản: thay đổi các giá trị trong bảng dữ liệu. Đó cũng là ưu thế rõ rệt của phương pháp bảng dữ liệu so với các lệnh RLF hay RRF. Tuy nhiên, tùy trường hợp cụ thể mà ta có thể chọn được giải pháp hiệu quả nhất tương ứng. Đã đến lúc các bạn phát huy tính sáng tạo của mình để điều khiển mấy con LED nhảy múa theo ý muốn. Nhịp điệu để nhảy sẽ được quyết định bởi thời gian delay, và hình tượng của điệu nhảy sẽ được thể hiện thông qua việc chớp tắt mấy con LED. Đây cũng là thao tác nên thực hiện để giúp làm quen với kĩ thuật mới này. Như thường lệ, sau đây sẽ là một số kết luận cho bài 3. 3. Kết luận Kĩ thuật bảng được xây dựng dựa trên các thông tin về cấu tạo vi điều khiển PIC, đó là các thông tin về thanh ghi PC (Program Counter) và nguyên tăc hoạt động của nó. Bên cạnh đó là thông tin về lệnh RETLW và cách ứng dụng của nó. Sử dụng kĩ thuật bảng cho phép điều khiển một cách linh hoạt việc thay đổi dữ liệu trong thanh ghi W và thông qua đó, các dữ liệu sử dụng trong chương trình cũng sẽ được truy xuất một cách linh hoạt hơn. Giải thuật kĩ thuật bảng cũng đòi hỏi việc sắp xếp và tổ chức chương trình ở một cấp độ cao hơn, bằng chứng là yêu cầu khắt khe trong việc kiểm soát việc thực thi các lệnh trong chương trình và các lệnh hỗ trợ cho kĩ thuật này cũng khá nhiều. Bên cạnh đó là yêu cầu trong việc tổ chức và sắp xếp một cách hợp lí dữ liệu trong bảng.

Ngày: 3/6/2006 Trang: 14/14 Ứng dụng của kĩ thuật bảng trong việc xây dựng các giải thuật cho chương trình viết cho vi điều khiển PIC cũng rất đa dạng và thường xuyên. Nhận định này sẽ được thể hiện rõ ràng hơn trong các bài sau. Có thể nói đây là một kĩ thuật quan trọng. Thông qua bài này, ta cũng cảm nhận được một nhược điểm của họ vi điều khiển PIC cũng như các vi điều khiển RISC, đó là các lệnh hỗ trợ cho vi điều khiển không nhiều, dẫn đến số lượng các công cụ hỗ trợ ban đầu cũng không nhiều và gây nhiều khó khăn cho việc lập trình ứng dụng. Tuy nhiên các lệnh của vi điều khiển RISC hoàn toàn có đủ khả năng để xây dựng các ứng dụng trên vi điều khiển, vấn đề là phải tìm ra các phương pháp giải quyết thích hợp dựa trên các công cụ ban đầu đó.