Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
1,88 MB
Nội dung
Bạn tự tìm hiểu về PIC: Viết chương trình cho PIC16F84A Bài đang soạn: VKH PIC (Peripheral Interface Controller) là IC lập trình dùng để điều khiển các thiết bị tự động, với các bộ nhớ chương trình (Flash ROM) và bộ nhớ đệm (SRAM). Có thể xem PIC là một máy tính nhỏ, do trong PIC có bộ phận xử lý các mã lệnh, quen gọi là các chương trình đã được Bạn cho cài đặt vào bộ nhớ Flash ROM, có bộ nhớ SRAM, như vậy có thể xem PIC là loại IC đơn phiến, nghĩa là một mình nó có thể đủ cấu tạo thành một thiết bị vi điều khiển hoàn chỉnh. Chúng ta biết bộ nhớ trong PIC thường có dung lượng nhỏ (dung lượng lớn nhỏ còn tùy theo loại PIC). Tần số xung nhịp của PIC, tối đa thường là 20MHz và dung lượng bộ nhớ thường từ 1K đến 4K. Trong bài viết này tôi sẽ viết về PIC16F84A, bài viết gồm có 3 phần: Phần 1: Giới thiệu khái quát về PIC16F84A Phần 2: Trình bày các ứng dụng của PIC16F84A qua một ứng dụng cụ thể. Phần 3: Nói về trình viết chương trình và giới thiệu về hộp nạp chương trình chi các IC họ PIC. Phần 1: Giới thiệu khái quát về PIC16F84A PIC16F84A có các đặc tính sau: * Chỉ dùng 35 câu lệnh để viết tất cả các chương trình nguồn cho PIC16Fxx. * Tất cả các câu lệnh chỉ dùng 1 chu kỳ máy, các câu lệnh nhẩy dùng 2 chu kỳ máy. * Tốc độ vận hành: dùng xung nhịp là 20MHz và chu kỳ máy là 200ns. * Có bộ nhớ chương trình (Flash Program Memory) 1024 Word (1K x 14). * Bộ nhớ RAM (RAM File Rigister) 68 byte. * Bộ nhớ dữ liệu EEPROM 64 byte. * Chiều rộng câu lệnh là 1 Word 14 bit. * Xử lý dữ liệu dạng 8 bit (1 byte). * Có 15 thanh ghi chuyên dụng SFR (Special Function Register) trong RAM. * Dùng ngăn xếp có chiều xâu 8 lớp. * Có mode truy cập theo địa chỉ trực tiếp, gián tiếp và địa chỉ tương đối. * Có 4 dạng ngắt: Ngắt ngoài trên tín hiệu trên chân RB0/INT. Ngắt theo bit báo tràn của Timer 0. Ngắt theo sự thay đổi trên các chân RB4, RB5, RB6, RB7. Ngắt khi ghi xong dữ liệu vào bộ nhớ EEPROM. * Có 13 chân dùng xuất nhập dữ liệu (Ở cảng Port A có 5 chân và Port B có 8 chân). * Có khả năng cấp dòng chảy vào/chảy ra đủ lớn: 25mA, đủ cấp cho các Led chiếu sáng. * Có 1 đồng hồ Timer 0 (TMR0), dùng thanh đếm xung 8 bit, nên đếm được tối đa 256 nhịp. * Với bộ nhớ chương trình Flash Program Memory, có thể xóa ghi được 1000 lần. * Với bộ nhớ EEPROM có thể xóa ghi dữ liệu đến 1000000 lần. * Dữ liệu cất giữ trong bộ nhớ EEPROM có thể an toàn tên 40 năm. * Có thể lập trình và nạp ngay trên bo (ICSP, In-Circuit Serial Programming) chỉ dùng 2 chân. * Có chức năng POR (Power On Reset), PWRT (Power-up Timer), OST (Oscillator Start-up Timer). * Chức năng Watch-dog (WDT) làm việc với mạch dao động RC riêng trong IC. * Có mode bảo vệ mã. (Code Protection). * Có mode Sleep dùng tiết kiệm điện năng khi ở trạng thái chờ. * Có nhiều tùy chọn cho mạch dao động tạo xung nhịp chính. * Làm việc với mức nguồn nuôi trong khoảng 2V đến 5.5V. Hình 1: Cho thấy công dụng của các chân trên IC. Trong hình này: * OSC1/CLKIN là chân ngả vào của mạch dao động thạch anh. Định tần cho xung nhịp và cũng là một ngả vào của mạch tạo xung nhịp. * OSC2/CLKOUT là chân ngả ra của mạch dao động thạch anh và là ngả ra của xung nhịp. * /MCLR (Master Clear) là chân Reset, tác dụng của lệnh Reset là trả chương trình về địa chỉ 0000h. Lệnh tác dụng ở mức áp thấp. * RA0, RA1, RA2, RA3, là các chân xuất nhập của bến cảng Port A. * RA4/TOCKI là chân đa nhiệm, vừa làm chân xuất nhập của Port A và lại là chân lấy xung cho thanh đếm của đồng hồ Timer 0 (ở chân này có cực Drain để hở). * RB0/INT là chân đa nhiệm, vừa làm chân xuất nhập của Port B và lại là chân phát động theo ngắt ngoài. Các chân của Port B có thể được lập trình để có trở kháng lớn dùng để làm ngả vào, nhập trạng thái ngoài vào PIC. * RB1, RB2, RB3, là các chân xuất nhập của bến cảng Port B. * RB4, RB5, là các chân xuất nhập của Port B và phát động ngắt theo sự thay đổi trên các chân này. * RB6, là 1 chân xuất nhập của Port B và phát động ngắt theo sự thay đổi trên chân này. Nó còn có thể lập trình để dùng chân này phát xung nhịp dùng cho công năng truyền dữ liệu nối tiếp. * RB7, là 1 chân xuất nhập của Port B và phát động ngắt theo sự thay đổi trên chân này. Nó còn có thể lập trình để dùng chân này trao đổi dữ liệu dùng cho công năng truyền dữ liệu nối tiếp. * VSS là chân nối masse để lấy dòng (ở đây là dòng điện tử). * VDD là chân nối vào đường nguồn dương (từ 2V đến 5.5V). Hình 2: Hình vẽ cho thấy các khối chức năng trong PIC16F84A Flash Program Memory có dung lượng 1024 thanh nhớ, loại rộng 14 bit (1Kx14). Ở đây Bạn cất giữ các mã lệnh của chượng trình nguồn. Các mã lệnh được truy cập theo mã địa chỉ có trong thanh ghi PC (Program Counter). Mã lệnh xuất ra trên thanh ghi Instruction Register. Thanh ghi Program Counter dùng ghi các địa chỉ của mã lệnh của bộ nhớ Flash ROM. Trong hoạt động, khi dùng lệnh nhẩy đến các chượng trình con, thì địa chỉ hiện tại sẽ được tạm thời cho cất giữ trong các thanh ghi ngăn xếp, ở đây chiều xâu ngăn xếp chỉ có 8 lớp (8 Level Stack). Ngăn xếp 8 Level Stack dùng lưu giữ các mã địa chỉ của chượng trình chính khi trong chượng trình có dùng lệnh nhẩy. Địa chỉ cất vào ngăn xếp có thể hiểu như dùng lệnh Push và địa chỉ lấy ra từ ngăn xếp có thể hiểu như dùng lệnh Pop. Instruction Register là thanh ghi mã lệnh, ở ngả ra, mã lệnh có thể chuyển đến khối giải mã Instruction Decode & Control để tạo ra lệnh điều khiển. Hay chuyển đến khối xử lý địa chỉ đa kênh Address Multiplex để truy cập các thanh nhớ trong bộ nhớ RAM (File Register). Instruction Decode & Control là khối giải mã, xác đ?nh tính năng điều khiển trong câu lệnh, nó tác dụng vào khối đ?nh trạng thái cho IC. Khối này gồm có các chức năng: Power-up Timer, Oscillator Start-up Timer, Power-on Reset, Watchdog Timer. Power-up Timer dùng kích hoạt IC theo đồng hồ Timer. Oscillator Start-up Timer dùng kích hoạt mạch dao động theo đồng hồ Timer. Power-on Reset dùng “phục nguyên” các thanh ghi trong PIC khi nó mới được cấp nguồn. Watchdog Timer dùng vào ra mode “Chó giữ nhà” theo đồng hồ Timer, một tính năng dùng tiết kiệm điện. Timing Generation là khối tạo ra xung nhịp chính, tần số của xung nhịp thượng đ?nh theo thạch anh. PIC16F84A có thể hoạt động với xung nhịp 20MHz. Đồng hồ Timer 0 (TMR0) dùng một thanh đếm 8 bit để tạo ra chức năng điều khiển theo thời gian. Nó có thể đếm tối đa 256 xung nhịp, khi thanh đếm đầy, bit báo tràn sẽ chuyển lên mức 1. Các bên cảng I/O Port (gồm Port A có 5 chân và Port B có 8 chân) dùng xuất nhập dữ liệu. Nhiều chân còn có tính đa nhiệm, nên ngoài công năng xuất nhập dữ liệu nó còn có các công năng khác. Như công năng nhập xung đếm trên chân RA4/TOCKI, công năng ngắt trên chân RB0/INT… Bộ nhớ dữ liệu EEPROM Data Memory, đây là bộ nhớ xóa ghi được trên 1 triệu lần, EEPROM có 64 thanh nhớ, với độ rộng 8 bit (1 byte). Để truy cập dữ liệu trong các thanh nhớ, mã địa chỉ sẽ chuyển vào thanh ghi EEADR và dữ liệu xuất nhập trên thanh ghi EEDATA. Bộ nhớ RAM File Register, đây là bộ nhớ RAM có 68 thanh nhớ, với độ rộng 8 bit, trong đó có 12 thanh nhớ chuyên dụng (SFR, Special Function Register), các thanh nhớ còn lại được dùng làm thanh nhớ phổ dụng (GPR, General Purpose Register). Các thanh nhớ chuyên dụng xác đ?nh hoạt động của IC, các thanh nhớ phổ dụng dùng làm thanh nhớ tạm. Khi IC mất nguồn, các dữ liệu trong các thanh nhớ RAM đều bị xóa sạch. Ngượi ta truy cập dữ liệu trong các thanh nhớ của RAM với bó nối mã địa chỉ RAM Addr (7 đ?ờng) và xuất nhập dữ liệu trên bó nối Data Bus (8 đường) Thanh ghi FSR (File Select Register) dùng truy tìm dữ liệu theo mã địa chỉ gián tiếp (Indirect Address), dùng bó nối Indirect Addr (7 đ?ờng). [...]... này, IC không được gọi là IC máy tính Thanh ghi W reg (Work Register) là thanh ghi công tác, nó cất giữ các kết quả của khối toán ALU Hình 3: Tìm hiệu bộ nhớ Flash Program Memory (tức bộ nhớ EEPROM) Sau đây chúng ta tìm hiểu cấu trúc các thanh ghi, bộ nhớ trong PIC1 6F84A: Flash Memory được dùng để lưu giữ các mã lệnh của chương trình nguồn Ở đây 1 Word là 14 bit Nó có 1024 thanh nhớ (QUEN GỌI LÀ 1KWORD)... da65o hiện tượng dao động tự kích, hiện tượng này làm cho mức nguồn ngả ra nhấp nhô, lúc lên cao lúc xuống thấp IC PIC1 6F84A làm việc với chân 5 nối masse để lấy dòng và chân 14 cho nối vào đường nguồn 5V Hình mạch thực hành 7: Khi muốn thực hiện một ý tưởng điều khiển một vật thể nào, trước hết Bạn phải phân tích tính tuần tự của diễn biến trên vật thể đó, sau đó cụ thể các trình tự này bằng một lưu đồ... mode cho PIC TRISA: Mode set for PORTA Thanh ghi 5 bit dùng xác đ?nh hương chuyển dữ liệu cho Port A TRISB: Mode set for PORTB Thanh ghi 8 bit dùng xác đ?nh hương dữ liệu cho Port B EECON1: Control Register for EEPROM Thanh ghi điều khiển việc ghi đọc cho bộ nhớ EEPROM EECON2: Write protection Register for EEPROM Thanh ghi 2 dùng điều khiển bộ nhớ EEPROM Hình 5: Hình 6: Thanh ghi STAUS Hãy tìm hiểu ý... ghi trong bộ nhớ này có thể tồn tại đến trên 40 năm Hình 4: Tìm hiểu bộ nhớ SRAM Các thanh nhớ của bộ nhớ File Register của RAM (Random Access Memory) Ở đây, ngươi ta dùng cách chuyển dãi nhớ ( chuyển bank) cho bộ nhớ này Mỗi dãi nhớ có dung lương là 80 byte (80 thanh nhớ với mã địa chỉ là 00h đến 4fh) Trong IC vi điều khiển đ?n phiến PIC1 6F84A có 2 dãi nhớ (CÓ HAI BANK, BANK 0 VÀ BANK 1) BỘ NHỚ... thấy các tình huống sẽ xẩy ra trên vật thể chịu tác động bởi chương trình mà Bạn sẽ tạo ra và cho nạp vào bộ nhớ EEPROM trong PIC Bạn hãy dò theo lưu đồ này để biết chương trình đều khiển 8 Led trên cảng RB, nó sẽ thay đổi trạng thái nhấp nháy tùy theo 5 nút nhấn trên cảng RA Tìm hiểu chương trình nguồn qua các câu lệnh được viết với ngôn ngữ lập trình Assemble ... IRP không dùng với PIC1 6F84A Sau lệnh Reset nó xác lập ở mức 0 Bit 6-5: RP1:RP0: Register Bank Select bits (used for direct addressing) Các bit dùng để chọn dãi nhớ Bank 0 hay Bank 1 Khi xác lập trị 00 là chọn các thanh nhớ ở dãi 0 (Bank 0 có địa chỉ 00h – 7fh) Khi xác lập trị 01 là chọn các thanh nhớ ở dãi 1 (Bank 1 có địa chỉ 80h – ffh) Mỗi dãi nhớ có 128 byte (thanh nhớ) Trong PIC1 6F84A chỉ dùng... câu lệnh ADDWF và ADDLW) hay số mượn trong phép toán trừ Được xác lập ở mức 1, khi xuất hiện tràn số ở thanh ghi Được xác lập ở mức 0, khi không có số tràn ở thanh ghi Hình 7: Thanh ghi OPTION Hãy tìm hiểu ý nghĩa của từng bit trong thanh ghi OPTION-REG (có địa chỉ là 81h) Bit 7: -RBPU: PORT B Pull-up Enable bit Bit xác đ?nh trạng thái treo của cảng Port B Được xác lập ở mức 1, không cho treo các... Timer 0 và Watch-dog Trị của 3 bit Tốc độ VỚI TMR0 TỐC ĐỘ CỦA WDT 000 1:2 1:1 001 1:4 1:2 010 1:8 1:4 011 1:16 1:8 100 1:32 1:16 101 110 111 1:64 1:128 1:256 Hình 8: Thanh ghi INTCON 1:32 1:64 1:128 Hãy tìm hiểu ý nghĩa của từng bit trong thanh ghi INTCON (cĩ ĐỊA CHỈ L 0BH, 8BH) Bit 7: GIE: Global Interrupt Enable bit Bit xác định điều kiện cho mở tất cả các ngắt hay tắt tất cả các ngắt Được xác lập ở mức... Trình bày PIC1 6F84A các ứng dụng của qua một ứng dụng cụ thể Hình mạch thực hành 1: Trên cảng Port B, chúng ta gắn 8 Led trên các chân RB0 (chân số 6), RB1 (chân số 7), RB2 (chân số 8), RB3 (chân số 9), RB4 (chân số 10), RB5 (chân số 11), RB6 (chân số 12), RB7 (chân số 13) Trên cảng Port A, chúng ta gắn các nút nhấn SW1 (chân 17), SW2 (chân 18), SW3 (chân 1), SW4 (chân 2), SW5 (chân 3) IC PIC1 6F84A... REGISTER) VÀ DÙNG NÓ ĐỂ ĐẶT BIT 0/1 XÁC Đ?NH CÁC TRẠNG THÁI VẬN HÀNH CỦA PIC Đ?NH ĐIỀU KIỆN CHO VIỆC XUẤT NHẬP TRÊN CÁC BẾN CẢNG VÀ CÒN Đ?NH CÁC ĐIỀU KIỆN KHÁC NỮA CÓ 16 THANH GHI KHÁC NHAU TRONG VÙNG CHỨA CÁC THANH GHI ĐẶC DỤNG (11 THANH TRONG BANK 0 VÀ 5 THANH TRONG BANK 1) NỘI DUNG TRONG MỖI THANH GHI NÀY DÙNG QUẢN LÝ SỰ VẬN HÀNH CỦA PIC MẶC DÙ CÓ TỔNG CỘNG 24 THANH GHI LƯU TRỮ (FILE REGISTER), NHƯNG . Bạn tự tìm hiểu về PIC: Viết chương trình cho PIC1 6F84A Bài đang soạn: VKH PIC (Peripheral Interface Controller) là IC lập trình dùng để điều khiển các thiết bị tự động, với các. tôi sẽ viết về PIC1 6F84A, bài viết gồm có 3 phần: Phần 1: Giới thiệu khái quát về PIC1 6F84A Phần 2: Trình bày các ứng dụng của PIC1 6F84A qua một ứng dụng cụ thể. Phần 3: Nói về trình viết. 3: Nói về trình viết chương trình và giới thiệu về hộp nạp chương trình chi các IC họ PIC. Phần 1: Giới thiệu khái quát về PIC1 6F84A PIC1 6F84A có các đặc tính sau: * Chỉ dùng 35