... … org 0x1800; trang sevensegdecode: addwf PCL,f retlw b’0 011 111 1’ ;0 retlw b’0000 011 0’; retlw b’ 010 110 11 ; retlw b’ 010 011 11 ;3 retlw b’ 011 0 011 0’;4 retlw b’ 011 011 01 ;5 retlw b’ 011 111 01 ;6 retlw... 000000 01 0 01 01h 00000 010 002 02h 00000 011 003 03h 0000 010 0 004 04h 0000 010 1 005 05h 0000 011 0 006 06h 0000 011 1 007 07h 000 010 00 008 08h 000 010 01 009 09h 000 010 10 010 0Ah 000 010 11 011 0Bh 000 011 00 012 ... 0Ah 000 010 11 011 0Bh 000 011 00 012 0Ch 000 011 01 013 0Dh 000 011 10 014 0Eh 000 011 11 015 0Fh 1. 2 Lịch sử phát triển kỹ thuật vi xử lí 1. 2 .1. Họ vi mạch số công nghệ : IC dựa theo số transistor cổng
Trường Đại học Cơng nghiệp Tp Hồ Chí Minh Khoa Công nghệ Điện tử Bộ môn Điện tử Công nghiệp Bài giảng Vi xử lý Lưu hành nội Mục lục Chương 1: Giới thiệu chung hệ vi xử lí Giới thiệu chung vi điều khiển PIC Chương 2: Giới thiệu phần cứng PIC 16F84 PIC 16F877A Chương 3: Tập lệnh PIC 16F877A Chương 4: Vào Hoạt động định thời Lập trình vi điều khiển PIC 16F84 PIC 16F877A Chương 5: Truyền thông nối tiếp USART Chương 6: Ngắt Chương 7: Bộ chuyển đổi tương tự sang số (ADC) Chương 8: Bộ nhớ liệu EEPROM, PWM, SPI/I2C Chương 9: Thiết kế hệ vi xử lí hệ phát triển vi điều khiển Bài giảng số 1: Giới thiệu chung hệ vi xử lí Giới thiệu chung vi điều khiển PIC ( Số tiết: 5) I Ổn định lớp: …………………… II Kiểm tra cũ: ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… III Tên giảng: Giới thiệu chung hệ vi xử lí Giới thiệu chung vi điều khiển PIC III.1 Mục tiêu: -Giới thiệu hệ đếm Lịch sử phát triển vi xử lí Cấu trúc chức hoạt động hệ vi xử lí Chức thành phần bên hệ vi xử lí Giới thiệu vi điều khiển Các họ vi xử lí thong dụng -Giới thiệu vi điều khiển PIC: nhớ chương trình, xung đồng hồ vi điều khiển, hệ thống vi điều khiển Đặc tính vi điều khiển Các loại vi điều khiển Sử dụng vi điều khiển: phần cứng vi điều khiển lập trình vi điều khiển III.2 Đồ dung phương tiện dạy học: -Phấn trắng, khăn, bảng, bút long, micro có dây(hay khơng dây), máy tính, đèn chiếu (hay máy chiếu) III.3 Giáo trình tài liệu tham khảo: Giáo trình Vi xử lí trường Đại học công nghiệp Tp HCM D.W Smith, PIC in practice: a project-based approach, Elsevier, 2nd edition, 2006 Trương Trác, Chip đơn 16C84 ứng dụng chúng Hồ Trung Mỹ, Vi xử lí, NXB ĐHQG Tp HCM, 2003 Tài liệu vi điều khiển PIC bọ môn Điện tử công nghiệp Website: http://www.microchip.com/ http://www.alldatasheet.com/ Myke Predko, Programming and customizing the PIC microcontroller, 3rd edition, Tab Electronics, McGrawHill, 2008(Ebook) Douglass V.Hall, Microprocessors and interfacing: Programming and Hardware, 2nd ed., Macmillan/McGraw-Hill, 1992 III.4.Nội dung giảng: Nội dung chi tiết : xem giảng chi tiết Phương pháp giảng dạy: thuyết trình, nêu vấn đề đàm thoại trao đổi với sinh viên Chương 1: Giới thiệu chung hệ vi xử lí Giới thiệu chung vi điều khiển PIC 1.1 Hệ nhị phân, hệ thập phân hệ thập lục phân Hệ nhị phân dung số 2, dung hai số để biểu diễn Thí dụ: 01001010=0x27+1x26+0x25+0x24+1x23+0x22+1x21+0x20=64+8+2=74 Hệ thập phân, số 10 dùng số 0, 1, 2, 3, 4, 5, 6, 7, 8, để biểu diễn Thí dụ: 125=1x102+2x101+5x100=100+20+5 Hệ thập lục phân, số 16 dùng số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Thí dụ: 32H=3x161+2x160=48+2=50 Bảng chuyển đổi số nhị phân, thập phân thập lục phân: Hệ nhị phân (8 chữ số) Hệ thập phân (3 chữ số) Hệ thập lục phân (2 chữ số) 00000000 000 00h 00000001 001 01h 00000010 002 02h 00000011 003 03h 00000100 004 04h 00000101 005 05h 00000110 006 06h 00000111 007 07h 00001000 008 08h 00001001 009 09h 00001010 010 0Ah 00001011 011 0Bh 00001100 012 0Ch 00001101 013 0Dh 00001110 014 0Eh 00001111 015 0Fh 1.2 Lịch sử phát triển kỹ thuật vi xử lí 1.2.1.Họ vi mạch số công nghệ : IC dựa theo số transistor cổng thường chia làm : -SSI : tích hợp cỡ nhỏ -MSI: tích hợp cỡ trung bình -LSI: tích hợp cỡ lớn -VLSI: tích hợp cỡ lớn -ULSI: tích hợp cỡ cực lớn Ví dụ : MSI counter, multiplexer,… LSI vi xử lý bit : 8085, Z80… VLSI vi xử lý 16 bit , 32 bit: 80386 Giới thiệu công nghệ sản xuất chip : Về công nghệ có công nghệ chế tạo vi mạch sau : MOS : - NMOS ⇒ HMOS - PMOS - CMOS⇒ HCMOS Với H : high-performance TTL, IIL (integrated injection logic) thuộc Bipolar Trong công nghệ MOS thường ưa chuộng tích hợp nhiều, tiết kiệm lượng… 1.2.2 TỪ MÁY TÍNH LỚN ĐẾN MÁY VI TÍNH: a.Máy tính lớn : Là loại máy tính thiết kế để giải toán lớn với tốc độ nhanh -Nó làm việc với số liệu có độ dài từ 64 bit trang bị nhớ lớn, kích thước lớn -Chúng thường dùng để điều khiển hệ thống thiết bị dùng quân hệ thống máy móc chương trình nghiên cứu vũ trụ, để xử lý thông tin ngành ngân hàng, vv… Ví dụ : IBM 4381, Honeywell DSP8 Loại mạnh máy tính lớn gọi siêu máy tính (supercomputer) Ví dụ : Y-MP/832 Gray b.Máy tính : Là dạng thu nhỏ kích thước tính máy tính lớn - Làm việc với liệu có độ dài liệu 32 bit với tốc độ chậm nhớ hạn chế - Máy tính thường dùng cho tính toán khoa học kỹ thuật, gia công liệu qui mô nhỏ hay để điều khiển trình công nghệ Ví dụ : Vax 6360 DEC, MV/8000II Data general c.Máy vi tính : Máy vi tính máy thông dụng Một máy vi tính vi điều khiển (micro controller) vỏ vi mạch (one-chip microcomputer) Ví dụ : vi điều khiển 68HC11 Motorola, MCS-8051 -Có khả làm việc với độ dài liệu 4, 8, 16, 32, 64 bit… -CPU máy chế tạo công nghệ mạch vi điện tử với mức độ tổ hợp lớn VLSI -Trên thị trường có họ vi xử lý bật : Intel dùng vi xử lý 80x86 : 8086 (16 bit) 8088( 8bit) 80286 (16bit) 80386(32 bit) 80486(32 bit) 80586(32 bit) Motorola dùng vi xử lý 680x0 Zilog : Z80 (8bit), Z8000 (16 bit) 1.2.3 Lòch sử phát triển vi xử lý : a.Thế hệ : (1971-1973) -Vi xử lý Intel 4004 (4 bit) dùng máy tính xách tay Sau xuất 4040 (4 bit) Ỉ 8008 (8bit) Đặc điểm : -Độ dài từ thường bit -Công nghệ chế tạo PMOS với đặc điểm mật độ phần tử nhỏ, tốc độ thấp, giá rẻ có khả đưa dòng tải nhỏ -Tốc độ thực lệnh 10-60 micro-sec/lệnh với tần số đồng hồ (xung clock)fclk= 0,1-0,8 Mhz -Tập lệnh đơn giản phải cần số mạch phụ trợ để tạo nên hệ vi xử lý hoàn chỉnh b.Thế hệ : (1974-1977) Z80 hãng Zilog (8 bit) 6800 hãng Motorola (8bit) 6502 hãng Mos technology (8bit) 8080 8085 hãng Intel -Công nghệ chế tạo NMOS (mật độ tích hợp lớn CMOS (tiết kiệm điện tiêu thụ) -Tần số xung clock từ 1-5 Mhz tốc độ thực lệnh tứ 1-8 microsec/lệnh c.Thế hệ : (1978-1982) Vi xử lý Intel 8086, 8088, 80186, 80286, (16 bit), MP 68000/68010 cuûa Motorola (16 bit) Đây vi xử lý dùng máy tính IBM PC, PC/XT, PC/AT máy Macintosh hãng Apple -Tần số xung clock từ 5-10 Mhz, tốc độ thực lệnh 0,1-1 microsec/lệnh -Công nghệ chế tạo HMOS d.Thế hệ : (1983-?) -Các vi xử lý đại diện hệ vi xử ký 32 bit Intel 80386, 80486, 32 bit Pentium 80586, MP 32 bit 68020/68030/68040.68060 Motorola Đăc điểm : -Bus địa 32 bit (phân biệt 4GB nhớ) có khả làm việc nhớ ảo -p dụng chế xử lý xen kẻ liên tục dòng mã lệnh (pipe line), nhớ cache(bộ nhớ ẩn), nhớ ảo Các vi xử lý có quản lý nhớ (MMU) đồng xử lý toán học Bên cạnh vi xử lý dùng để xây dựng máy tính với tập lệnh đầu đủ (CISC-complete instruction set computer), người ta chế tạo vi xử lý cải tiến dùng cho máy tính với tập lệnh rút gọn (RISC- reduced instruction set computer) Xem bảng : vi xử lý 16/32 bit Intel, Motorola e Máy tính dùng vi xử lý Pentium II, PIII, PIV: -Độ dài liệu 32-64 bit - Tốc độ 1.8 Ghz-4.0 Ghz Các vi xử lý 16 bit Intel Các vi xử lý 32 bit Intel Các vi xử lý 16/32 bit Motorola Từ thập niên 1990 trở lại 1990 Microsoft WIndows 3.0 đời Motorola 68040 triển khai 1991 Apple IBM hợp tác để khảo sát RISC 1992 Microsoft WIndows 3.1 trở thành chuẩn cho PC 1993 Intel Pentium (80586) đời, công nghệ MMX cung cấp sau 1995 Microsoft Indows 95 1995 Intel Pentium pro (P6) 1997 Intel Pentium II 1998 Intel Pentium II Xeon 1999 Intel Pentium III 2001Intel Pentium IV 1.3 Cấu trúc hoạt động hệ vi xử lí 1.3.1 Sơ đồ khối SƠ ĐỒ KHỐI MỘT HỆ VI XỬ LÝ CƠ BẢN Address bus Data bus CPU Bộ nhớ T Vào I/O Thiếtbị vào Thiết bị Control bus Hình 1.1 :Sơ đồ khối hệ vi xử lý 1.3.2 Nguyên lý hoạt động: -CPU (central processing unit) đơn vị xử lý trung tâm MP (mocroprocessor) : Đây não máy tính, điều khiển toàn hoạt động hệ MP lấy lệnh, phân tích thi hành lệnh -Bộ nhớ : (memory) nơi lưu trữ liệu chương trình cần cho trình thực lệnh Bộ nhớ : rom, ram Bộ nhớ : băng từ, đóa từ -Vào (input/output) : mạch giao tiếp CPU với thiết bị vào (bàn phím, chuột), thiết bị ra(màn hình, máy in) -Ba phận liên lạc với thông qua bus hệ thống (system bus) Bus hệ thống gồm có : +Bus địa : (address bus) cho phép xác định địa ô nhớ ngoại vi cần truy xuất (đọc /ghi) Bus địa 16, 20, 24 bit… +Bus liệu (data bus) : cho phép trao đổi thông tin Cpu nhớ hay ngoại vi Bus liệu 8, 16, 32 bit… +Bus điều khiển (control bus) :là đường tín hiệu CPU đưa để điều khiển nhớ hay ngoại vi tín hiệu đưa vào CPU Ví dụ : RD (read-đọc ), WR (write-ghi) , INTR (interrupt-ngắt) Bus địa chỉ có chiều từ CPU đưa ra, bus liệu có tính chất chiều (vào/ra), bus điều khiển có chiều vào, chiều 1.4 Chức thành phần hệ vi xử lí 1.4.1 Bộ xử lí CPU 1.4.1.1.Nhiệm vụ CPU : -Điều hành hoạt động hệ thống theo ý định người sử dụng –Thi hành chương trình theo vòng kín gọi chu kì lấy lệnh Thi hành lệnh Lấy lệnh Chu kỳ lệnh Hình 1.2: Nhiệm vụ CPU 1.4.1.2.Cấu trúc CPU : Các thành phần CPU gồm có : Các thành phần lưu trữ: ghi, cờ Các thành phần thực thi (xử lý) : ALU thực tính toán số học , logic, dịch/xoay (các) bit .Các thành phần chuyển [tín hiệu]: bus Các thành phần điều khiển : Đơn vị điều khiển CPU IR PC Bộ điều khiển CU Đơn vị số học logic ALU Các ghi Hình 1.3 Cấu trúc bên CPU CPU (central processing unit) : đơn vị xử lý trung tâm ALU (arithmetic logic unit) : đơn vị số học logic Register : ghi CU : control unit, đơn vị điều khiển +ALU : thực phép tính số học logic bao gồm +, -, *, /, tăng , giảm, and, or, not, xor, dịch , quay, vv… ALU có hai ngõ vào ngõ Hai ngõ vào lấy liệu từ bus nội cần thiết để thực phép toán ngõ trả kết thực phép toán bus nội Để tránh liệu chồng bus nội, hai ngõ vào ALU có hai ghi tạm, có chức cài liệu trước ALU thực phép toán IN IN ALU OUT Hình 1.4 : ALU +Thanh ghi : ô nhớ có tên tốc độ cao nằm bên CPU Số ghi bên CPU Một số ghi định sẵn chức năng, số ghi khác ghi đa dụng -Thanh ghi PC -Thanh ghi tích lũy A -Thanh ghi cờ F -Thanh ghi lệnh IR -Thanh ghi địa nhớ MAR -Thanh ghi đa dụng -Thanh ghi trỏ stack SP +Bộ điều khiển : - Điều khiển hoạt động khối khác CPU đồng với - Xuất tín hiệu điều khiển đọc ghi nhớ bên theo trình tự định để đảm bảo cho việc đọc ghi nhớ thực 1.4.1.3 Thực lệnh : a.Lấy lệnh từ nhớ vào ghi lệnh IR (instruction register) b.Thay đổi ghi PC (program counter: đếm chương trình) để chuyển đến lệnh (thanh ghi PC giữ địa lệnh kế tiếp) c.Xác định kiểu lệnh vừa lấy d.Xác định kiểu liệu mà lệnh yêu cầu xác định vị trí liệu nhớ e.Nếu lệnh cần liệu nhớ, nạp vào ghi CPU f.Thực lệnh g.Lưu kết nơi thích hợp h.Trở bước để thực lệnh kế 1.4.1.4.Dạng lệnh : Các vùng lệnh : -Vùng mã lệnh : cho biết tác vụ thực - Vùng địa : địa nhớ ghi CPU - Vùng cách định địa : cách xác định toán hạng địa thật 1.4.1.5 Các cách định địa : -Cách định địa hiểu ngầm - Cách định địa tức thời 10 - Cách định địa ghi Cách định địa gián tiếp qua ghi Cách định địa trực tiếp Cách định địa gián tiếp Cách định địa tương đối 1.4.2 Bộ nhớ Địa 3A 0F ô nhớ n-1 Hình 1.5: Bộ nhớ a.Bit : 0/1 biểu diễn hai trạng thái , đơn vị nhớ b.Định vị nhớ : (memory addressing) Bộ nhớ sẻ đánh số n-1, với n số ô nhớ nhớ Tất ô nhớ có số lượng bit nhau, ô nhớ có k bit có từ 1Ỉ 2k tổ hợp bit khác Ví dụ : với nhớ 96 bit ta có kiểu tổ chức nhớ sau : 12x8 bit, 8x12 bit, 6x16 bit Thường ô nhớ có bit=1byte Nếu nhớ có m đường địa có 2m byte (ô nhớ) Ví dụ : nhớ có 10 bit địa Ỉ dung lượng nhớ 210 byte=1KB nhớ có 11 bit địa Ỉ dung lượng nhớ 211 byte=2KB nhớ có 12 bit địa Ỉ dung lượng nhớ 212 byte=4KB Ví dụ : EPROM 2716 2732 2764 2KB 4KB 8KB SRAM 6116 6264 2KB 8KB c Bộ nhớ : ROM (read only memory): nhớ đọc RAM(random access memory) : nhớ đọc ghi Bộ nhớ : băng từ, đóa từ (đóa mềm, đóa cứng) *Chức nhớ : -Có nhiệm vụ lưu trữ thông tin gồm có : +Chương trình :- khởi động -giao tiếp BIOS -hệ điều hành (hệ thống) 85 Hình 4.7 Nếu có lỗi MPLAB báo Nếu khơng có lỗi, MPLAB báo Quickbuild succeeded hình 4.8 Hình 4.8 Chương trình báo lỗi lở dòng START CLRF PORT; select PORTA Chương trình khơng hiểu PORT Đúng PORTA 86 Hình 4.9 Xem trình dịch chọn View, program memory Hình 4.10 4.8.Mạch nạp vi điều khiển PIC phần mềm WinPIC800 Giới thiệu Bộ nạp PIC GTP-USB Chúng ta sử dụng nạp GTP-USB PIC programmer , nạp qua cổng USB để nạp tập tin hex (nhị phân) vào nhớ chương trình Flash hay EPROM vi điều khiển PIC Bộ nạp hỗ trợ tất PIC có phần mềm nạp WinPIC800, chạy máy tính có cài Windows 95/98/2000/ME/Xp Xét mạch nạp PIC qua cổng COM, loại JDM Programmer ( bo mạch nạp RIXIN, tham khảo: sạp N6 chợ Điện tử Nhật Tảo, Nguyễn Kim, Quận 10, Tp HCM) -Kết nối phần cứng mạch nạp với máy tính qua cổng COM Bật điện -Chạy chương trình WinPic800.Vào thư mục D:\WinPic800_V359, nhấp đúp chuột vào tập tin WinPic800_V3_59.exe, trình cài đặt diễn Màn sau (hình 4.16): 87 Hình 4.11 Nhấp đúp chuột vào biểu tượng WinPic800 desktop để khởi động Hình 4.12 -Chọn IC : loại PIC F chọn PIC 16F877A -Chọn Settings, Hardware để chọn phần cứng JDM Programmer, sau nhấp vào Apply Edits -Chọn Device, Haedware test để kiểm tra phần cứng -Chọn tập tin hex để nạp : menu File, Open chọn tập tin cần nạp, thí dụ led.hex, nhấn Open Nhấn nút Program All để nạp hay menu Device, Program All Nếu nạp thành công , máy báo OK , cịn có lỗi thong báo lỗi 88 Muốn xóa nội dung chọn Device, Erase All Đọc nội dung chọn Device, Read All Kiểm tra chọn Device, Verify All Khi nạp file.hex thành công, vi điều khiển sẵn sang sử dụng Nhưng sử dụng tưởng tượng bạn Có 35 lệnh ngôn ngữ vi điều khiển bạn Tầm vi điều khiển PIC bao gồm thiết bị với 64KB nhớ chương trình EPROM, 3938 byte RAM nhớ liệu, 1024 byte nhớ EEPROM, 72 chân vào ra, 11 ngắt, A/D 10 bit có 15 kênh vào, xung clock 20 Mhz, tập lệnh 55 từ Xem phụ lục để biết chi tiết Xét mạch nạp PICSTARTPLUS: Nếu bạn khơng có mạch nạp tơi khuyến cáo nạp PICSTARTPLUS Arizona Microchip Khi Arizona mang đến vi điều khiển họ thường làm, phần mềm điều khiển cập nhật download miễn phí internet http://www.microchip.com/ Một cài máy tính PC bạn, mở từ MPLAB chuyển qua nạp PICSTARTPLUS Chọn Programmer, Select Programmer, PICSTART Plus hình Hình 1: Chọn nạp PICSTART Plus Chọn Enable Programmer từ Programmer Box hình Giai đoạn cuối lập trình đoạn mã vào chip Để làm điều ta nhấp chuột vào biểu tượng lập trình hình hay thong qua menu Programmer, Program 89 Hình 2: Biểu tượng lập trình Sau lúc thong báo thành cơng xuất hình Mã nạp thành công vào chip sẵn sang để sử dụng Nếu trình nạp thất bại, bạn kiểm tra chip gắn vào socket (đế cắm) chưa, thử lại lần Bây sử dụng vi điều khiển để bật led tắt led Mạch nạp Microchip MPLAB ICD LE (In Circuit Debugger) Chọn Programmer, Select Programmer, MPLAB ICD hình Hình Qu tr ình c ài đ ặt MPLAB ICD di ễn 90 H ình Nh ấp chu ột v Next Ch ọn c COM v t ốc đ ộ baud l 19200 baud H ình Nh ấp chu ột v Next C ấp ngu ồn cho MPLAB ICD Ch ọn ngu ồn cung c ấp ri êng hay t MPLAB ICD 91 H ình Ch ọn cho ph ép k ết n ối t ự đ ộng c ó th ể kh ơng d ùng n ếu b ạn c ó s d ụng m ạch n ạp kh ác ngo ài ICD H ình Nh ấp chu ột v Next Ch ọn cho ph ép t ự đ ộng n ạp h ệ ều h ành 92 H ình Nh ấp v Next Hi ện b ảng t óm t H ình Nh ấp v Finish đ ể k ết th úc N ếu ch ưa g ắn v ới chip PIC 16F877A th ì MPLAB hi ện th ơng b áo: 93 H ình 10 H ình 11 Tiếp theo lập trình đoạn mã vào chip Để làm điều ta nhấp chuột vào biểu tượng lập trình hình hay thong qua menu Programmer, Program 94 4.9 Lưu đồ lập trình Mở MPLAB Tạp tập tin CH51.ASM Quickbuild CH51.ASM Đ SỬa lỗi Tạo có lỗi? S Lập trình (nạp) vi điều khiển Hình 4.18 4.10 Bài tốn: chớp tắt led Xem xét mạch điện sau: B1 16F84 B0 680 680 +5V V+ 68 pF 16 MCLR T0CKI 14 32 Khz 68pF 15 0.1 µF 0V 95 Hình 4.19: Mạch điện chớp tắt led Bài tập: Viết chương trình mà chớp tắt led (on off) luân phiên Đặt led B1 led B0 Chú ý: Bạn dung chương trình CH51.asm them dịng Sau lưu lại với tên CH52.ASM Cố gắng đứng nhìn vào đáp án bên trước bạn cố gắng tìm lời giải Đáp án sau: ; phần tiêu đề (đã trình bày) ;Chương trình bắt đầu BEGIN BSF PORTB,0 ; bật B0, led sáng BCF PORTB,1 ; tắt B1, led tắt CALL DELAYP5 ; trì hỗn 0,5 giây BCF PORTB,0 ;tắt B0, led tắt BSF PORTB,1 ; bật B1, led sáng CALL DELAYP5; trì hỗn 0,5 giây GOTO BEGIN END Bài tập: 1/ Viết chương trình chớp tắt led, led sang (on) led tắt (off) 2/Viết chương trình led chạy đuổi: 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 4.11.Tập tin tiêu đề PIC 16F877A: HEADER877.ASM ; Header877.asm điều thiết lập portA ngõ vào (1 vào), portB ngõ ( ra), ;portC ngõ vào, portE ngõ vào, portD ngõ ;thanh ghi OPTION thiết lập để chia 256 cho xung định 1/32 giây ;trì hỗn giây 0,5 giây đưa vào chương trình ;*************************************** ;phần tương đương TMR0 EQU 1; nghĩa TMR0 file (ô nhớ 1) OPTION_R EQU 81h; ghi OPTION ô nhớ 81h PORTA EQU 5;nghĩa portA ô nhớ PORTB EQU 6;nghĩa portB ô nhớ PORTC EQU PORTD EQU PORTE EQU TRISA EQU 85H; TRISA (chọn I/O portA) ô nhớ 85H TRISB EQU 86H; TRISB (chọn I/O portB) ô nhớ 86H TRISC EQU 87H TRISD EQU 88H TRISE EQU 89H STATUS EQU 3; nghĩa STATUS ô nhớ ZEROBIT EQU 2; nghĩa zerobit bit CARRY EQU 96 EEADR EQU 10Dh EEDATA EQU 10Ch EECON1 EQU 18Ch EECON2 EQU 18Dh RD EQU WR EQU WREN EQU ADCON0 EQU 1Fh ADCON1 EQU 9FH ADRES EQU 1EH ADRESL EQU 9EH CHS0 EQU GODONE EQU COUNT EQU 20; COUNT ô nhớ 20H, ghi để đếm kiện ;*************************************** LIST P=16F87A ; dùng 16F877A ORG ; địa bắt đầu GOTO START; nhảy đến START ;*************************************** ;Bit cấu hình CONFIG H’3FF0’ ; chọn dao động LP, WDT off, PUT on, bảo vệ mã bị cấm ;Phần chương trình ;trì hỗn giây DELAY1 CLRF TMR0; bắt đầu TMR0 LOOPA MOVF TMR0,W; đọc TMR0 vào W SUBLW 32; TIME-W BTFSS STATUS, ZEROBIT; kiểm tra TIME-W=0 (32-W=0) GOTO LOOPA; time không 32 RETLW 0; trở sau time 32 (TMR0=32) ;trì hỗn 0,5 giây DELAY5 CLRF TMR0 ; khởi động TMR0 LOOPB MOVF TMR0,W ; đọc TMR0 vào W SUBLW 16 ;TIME-W BTFSS STATUS,ZEROBIT;kiểm tra TIME-W=0 GOTO LOOPB ; TIME không 16 RETLW 0; trở sau time 16 (TMR0=16) ;Phần cấu hình START BSF STATUS,5; trở lại bank MOVLW B’11111111’; bit port A I/P (ngõ vào) MOVWF TRISA MOVLW B’00000000’ MOVWF TRISB ; PortB output (ngõ ra) MOVLW B’11111111’ MOVWF TRISC; portC l ngõ vào MOVLW B’00000000’ MOVWF TRISD; PortD output (ngõ ra) MOVLW B’11111111’; bit port E I/P (ngõ vào) MOVWF TRISE MOVLW B’00000111’;bộ chia tỉ lệ trước /256 MOVWF OPTION_R; timer 1/32sec, dùng lệnh OPTION 97 MOVLW B’00000000’ MOVWF ADCON1; portA bit 0,1,2,3, v analog BSF STATUS,6; bank BCF EECON1,7; nhớ liệu EEPROM on BCF STATUS,5 ;trở lại bank BCF STATUS,6 BSF ADCON0,0; bật A/D CLRF PORTA ; xóa PORTA CLRF PORTB ;xóa PORTB CLRF PORTC ;xóa PORTC CLRF PORTD ;xóa PORTD CLRF PORTE ;xóa PORTE ;chương trình bắt đầu END; dịng ln ln đặt cuối chương trình Giải thích HEADER877.ASM *Phần tương đương: CHúng ta có port PortC nhớ ô nhớ TRIS tương ứng, TRISC ô nhớ 87H bank Ơ nhớ TRIS thiết lập hướng I/O bit port Địa ô nhớ liệu EEPROM them vào EEADR ô nhớ 10Dh bank 2, EEDATA 10Ch bank2, EECON1 ô nhớ 18Ch bank 3, EECON2 ô nhớ 18Dh bank Bit liệu EEPROM thêm vào, bit đọc RD bit 0, bit ghi WR bit 1, WREN ,bit cho phép ghi bit Ô nhớ analog ADRES, ADCON0, ADCON1 them vào có bit tương ứng CHS0, bit chọn kênh 0, bit bit GODONE, bit *Phần liệt kê: Phần dĩ nhiên vi điều khiển dung , 16F877A vị trí nhớ địa 0, lệnh GOTO START hướng dẫn vi điều khiển bỏ qua phần chương trình nhảy tới phần cấu hình nhãn START *Phần chương trình con: Phần bao gồm chương trình trì hỗn DELAY1 DELAYP5 trước (1 giây 0,5 giây) *Phần cấu hình: Như trước đây, cần chuyển sang bank để định vị ô nhớ TRIS để cấu hình I/O Port A thiết lập ngõ vào với lệnh: MOVLW B’11111111’ MOVWF TRISA portB, portC, portD, portE cấu hình theo cách tương tự sử dụng TRISB, TRISC, TRISD TRISE Thanh ghi OPTION cấu hình với lệnh sau: MOVLW B’00000111’ MOVWF OPTION_R Hay lệnh sau: MOVLW B’00000111’ Option Thanh ghi A/D cấu hình với lệnh: MOVLW B’00000000’ MOVWF ADCON1 thiết lập portA bit 0,1,2,3 gõ vào analog 98 Chúng ta trở bank cách chọn bit BSF STATUS,6 (bit 1) định vị EECON1, ghi điều khiển liệu EEPROM BSF EECON1 cho phép truy xuất nhớ chương trình EEPROM yêu cầu Chúng ta sau trở lại bank cách xóa bit bit ghi trạng thái (STATUS) xóa port A, B, C, D, E Ứng dụng 16F877A: Điều khiển ngơi nhà xanh IV.Tổng kết bài: -Tóm tắt ý -Chuẩn bị V Câu hỏi tập nhà: Chương 4: Vào Hoạt động định thời Lập trình cho vi điều khiển PIC 1.Viết chương trình chớp tắt led Hình: kết nối led với vi điều khiển dung chân RB0 Logic 1: led sang Logic 0: led tắt Viết chương trình chớp tắt led Viết chương trình chớp tắt led Hình: kết nối led với vi điều khiển dung RB0Ỉ RB3 Viết chương trình đèn chạy đuổi (8 led) dung PORTB điều khiển led Viết chương trình đèn sang dần (8 led) dung portB điều khiển led Viết chương trình đèn tắt dần (8 led) dung portB điều khiển led Viết chương trình đèn chạy bìa vào (8 led) dung portB điều khiển led Viết chương trình tạo sóng vng có tần số 100Khz chân RB0 dùng lệnh BSF, BCF, NOP GOTO (khơng dung timer 0) Viết chương trình tạo thời gian trễ giây dung TMR0 99 10 Viết chương trình tạo thời gian trễ 0,5 giây 11 Viết chương trình tạo song vng có tần số 10 Khz chân RB0 dùng timer 12 Viết chương trình tạo song vng có tần số Khz chân RB0 dùng timer 13 Viết chương trình tạo xung vng có chu kì sec (giây) chân RB1 dùng timer 14 Viết chương trình tạo song vng có tần số 500 Hz RB1 với chu kì bổn phận T Ton D=30 % dùng timer Chu kì bổn phận D = on = T Ton + Toff 15.Viết chương trình 8051 để tạo sóng vuông 12 Khz P1.2 dùng timer 16.Thiết kế ứng dụng “turnstile” dùng timer để xác định người thứ 250 vào sân Giả sử (a) cảm biến turnstile nối vào T0 tạo xung lần turnstile quay, (b) đèn nối vào chân RB7 (PORTB, 7) mà sáng RB7=1 tắt ngược lại Đếm “sự kiện “ T0 làm sáng đèn RB7 người thứ 250 vào sân (xem hình vẽ) turnstile (1 xung/ laàn quay) PIC 16F877A T0 RB7 (RA4/T0CKI) 0=off 1=on Đèn VI Rút kinh nghiệm: (về thời gian, nội dung, phương pháp, chuẩn bị) ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… Ngày ….tháng… năm 2011 Bộ môn Ngày ….tháng… năm 2011 Giảng viên soạn