NHÚNG. Vi ñiều khiển BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 2

Similar documents
Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

BẢO MẬT TRONG SQL SERVER

Các kiểu định địa chỉ họ MSC-51

SIEMENS INDUSTRIAL NETWORKS

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

SIMULATE AND CONTROL ROBOT

Tài liệu hướng dẫn: Stored Procedure

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

Bài 10: Cấu trúc dữ liệu

Chương 5. Network Layer 19/09/2016 1

CẤU TRÚC DỮ LIỆU NÂNG CAO

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

Nhấn nút New để tạo 1 biến mới Trang 17

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

Tình huống 1: PPPoE với Username và Password

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

LÂ P TRI NH WEB ASP.NET

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

Entity Framework (EF)

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

Hướng dẫn cài đặt FPT

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

LẬP TRÌNH 8051 SỐ HỌC VÀ LÔ GIC

Tạo Project với MPLAB

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

BELGIUM ONLINE APPOINTMENT

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

Bài tập lớn số 1. Giả lập bộ định thời

Mô hình dữ liệu quan hệ (Relational data model)

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

Dọn "rác" Windows 7 vào dịp cuối năm

PHÁT TRIỂN ỨNG DỤNG WEB

GV: Phạm Đình Sắc or

STACK và QUEUE. Lấy STACK

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MINICHAT. Bài giảng 3. Trang1. Khoa Khoa Học Và Kỹ Thuật Máy Tính

Lecture 12. Trees (1/2) Nội dung bài học:

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

KIẾN TRÚC MÁY TÍNH. Giảng viên: ThS. Phan Thanh Toàn. v

Exceptions. Outline 7/31/2012. Exceptions. Exception handling is an important aspect of objectoriented. Chapter 10 focuses on:

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Tìm hiểu Group Policy Object và các ví dụ

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly

TỔNG QUAN VỀ.NET VÀ C#

Chương 3 Tập lệnh họ MSC-51

HỆ THỐNG FILE TRÊN PC

Đa ngôn ngữ (Internationalization) trong Servlet

BÁO GIÁ MODULE, PLC S7200

B3: Bên khung Package Explore bên trái đi tới thư mục res, bạn sẽ thấy có 3 thư mục con:

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

Bài 7: Các cấu trúc điều khiển

Bài thực hành 1: Chỉ mục trong SQL Server

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

Cập nhật ResultSet trong JDBC

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

Tính kế thừa-2. Bởi: Thanh Hiền Vũ. Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất:

LAB IP SLA Bài 1. Bùi Quốc Kỳ ***

Time Picker trong Android

JAVASCRIPT. Giảng viên : Ths. PHẠM ĐÀO MINH VŨ

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Module2: Lập trình Shell và C Quản lý tiến trình A. TÓM TẮT LÝ THUYẾT:

Nội dung. Thêm về Java 2. Nguyễn Việt Hà

LÝ THUYẾT MÔ HÌNH VÀ TỐI ƢU. Th.S Nguyễn Tấn Phúc. Tel:

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

HTML DOM - Forms. MSc. nguyenhominhduc

BÀI 6a LẬP TRÌNH ĐA TUYẾN (MULTI THREAD)

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

Quản trị Linux nâng cao. Tháng 9/2013

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

Bài thực hành số 2 QUYỀN và ROLE

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

LỖI LÚC THỰC THI và QUÁ TRÌNH GOM RÁC

TỔNG QUAN LẬP TRÌNH JAVA

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Lập trình chuyên nâng cao. Lập trình phân tán (Distributed computing

ĐỀ CƯƠNG BÀI GIẢNG HỌC PHẦN: AN NINH MẠNG

Chapter 4 Menus, Functions And Common Dialog

biến Global có thể được áp dụng cho tất cả các extension trong tất cả các context trong Dialplan.

Transcription:

LẬP TRÌNH HỆ THỐNG NHÚNG BÙI QUỐC BẢO Vi ñiều khiển 8051 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 2 1

Vi ñiều khiển 8051 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 3 Phần mềm KEIL PROTEUS BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 4 2

Cấu trúc bộ nhớ của 8051 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 5 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 6 3

Cấu trúc bộ nhớ của 8051 8051 có 3 vùng nhớ riêng biệt (bộ nhớ chương trình, bộ nhớ dữ liệu trong, bộ nhớ dữ liệu ngoài). Mỗi vùng nhớ ñược truy cập bằng các câu lệnh khác nhau. Khi khai báo các biến, ta phải xác ñịnh vùng nhớ cho các biến ñó. BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 7 Cấu trúc bộ nhớ của ARM7 LPC2000 Các vi xử lý có kiến trúc Von- Newman (VD: ARM) dùng chung 1 không gian nhớ cho bộ nhớ chương trình và dữ liệu. BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 8 4

Không gian bộ nhớ chương trình ðược gọi là code space Chứa chương trình và các hằng số VD: khai báo hằng số chứa bình phương các số từ 0 ñến 3: code char square[4] = {0,1,4,9}; Lệnh assembly: MOVC A, @A+DPTR BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 9 Không gian bộ nhớ dữ liệu nội Vùng nhớ nội truy xuất trực tiếp (00H-7FH) ñược ký hiệu là data Lệnh assembly: MOV A, 7FH Vùng nhớ nội truy xuất gián tiếp (00H-FFH), ñược ký hiệu idata Lệnh assembly: MOV R0, #80H MOV A, @R0 Hai vùng nhớ này dùng ñể chứa các biến thường dùng và biến tạm VD: khai báo một biến integer: idata unsigned int temp; BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 10 5

Không gian bộ nhớ dữ liệu ngoài ðược gọi là external data space (xdata) L nh assembly: MOV DPTR, #2000H MOVX A,@DPTR Chứa các biến ít dùng, các khối dữ liệu lớn hoặc ngoại vi theo kiểu memory-mapped VD: xdata unsigned int[1000] ADC_value; BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 11 VD: Viết hàm có prototype như sau: unsigned int checksum (unsigned int start, unsigned int end) ñể tính checksum của vùng nhớ ch ng trình từ ñịa chỉ start ñến end (code) BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 12 6

unsigned int checksum (unsigned int start, unsigned int end) { unsigned int code *codeptr, *codeend; unsigned int data checksum = 0; codeptr = (unsigned int code *)start; codeend = (unsigned int code *)end; while (codeptr <= codeend) { checksum = checksum + (unsigned int data)*codeptr; codeptr++; /* go to the next address */ } return (checksum); } BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 13 Các kiêủ thông dụng Type Bits Bytes Range char 8 1-128 to +127 unsigned char 8 1 0 to 255 enum 16 2-32,768 to +32,767 short 16 2-32,768 to +32,767 unsigned short 16 2 0 to 65,535 int 16 2-32,768 to +32,767 unsigned int 16 2 0 to 65,535 long 32 4-2,147,483,648 to 2,147,483,647 unsigned long 32 4 0 to 4,294,697,295 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 14 7

Kiêủ float và double Trong C51, kiểu float và double giống nhau, gồm 4 byte theo chuẩn EEE-754 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 15 Các kiểu ñặc biệt của C51 Type Bits Bytes Range bit 1 0 or 1 sbit 1 0 or 1 sfr 8 1 0 to 255 sf16 16 2 0 to 65,535 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 16 8

Thanh ghi Keil cho phép khai báo các thanh ghi bằng từ khóa sfr VD: sfr P0 = 0x80; P0 = 0x0F; //khai báo thanh ghi P0 ở //ñịa chỉ 80H BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 17 Tác ñộng ñến bit trong SFR 8051 có các lệnh tác ñộng ñến bit. ðể tác ñộng ñến bit trong thanh ghi ta dùng khai báo sbit sbit name = sfr-name ^ bit-position; sbit name = sfr-address ^ bit-position; sbit name = sbit-address; BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 18 9

Tác ñộng ñến bit trong SFR sfr PSW = 0xD0; sbit CY = PSW^7; sbit CY = 0xD0^7; sbit CY = 0xD7; BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 19 Tác ñộng ñến bit trong SFR sfr char P0 = 0x80; sbit SW = P0^0; void main(void) { while(1) { SW =!SW; } } ðịa chỉ của các biến sfr, sfr16, sbit phải nằm bên ngoài hàm. BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 20 10

Vùng nhớ ñược ñịnh ñịa chỉ bit 8051 có vùng nhớ ñược ñịnh ñịa chỉ bit. ðể tác ñộng ñến vùng nhớ này ta dùng khai báo bdata bdata bit flag = temp ^0; void main(void) { } flag = 1; char temp _at_ 0x2F; BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 21 Lưu ý: Các khai báo code, idata, xdata, bdata, sfr, sbit là ñặc biệt cho trường hợp lập trình 8051. BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 22 11

VD: Viết chương trình cho 8051 tạo hàm như sau: P1.0 = P1.1 AND P1.2 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 23 Cấu trúc vòng lặp vô tận (endless loop) void main(void) { } Task1_init(); Task2_init(); While(1) //m t vòng l p vô t n th c hi n task1 và task2 { Task1(); Task2(); } BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 24 12

Endless loop Ưu ñiểm: ðơn giản. Dễ thực hiện, sửa lỗi và bảo trì Không cần sử dụng nhiều tài nguyên hệ thống (VD: timer) Dễ dàng thay ñổi ñể chạy với các vi xử lý khác (portable) BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 25 Endless loop Nhược ñiểm: Không phù hợp với các ứng dụng ñòi hỏi thời gian chính xác (VD: ñồng hồ số). Tiêu tốn năng lượng vì CPU hoạt ñộng ở chế ñộ bình thường trong toàn bộ thời gian BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 26 13

Look-up table unsigned char code square[]={0,1,4,9,16,25,36,49,64,81}; unsigned char cal_square(unsigned char num) { return square[num]; } Assembly: MOV A,R7 MOV DPTR, #SQUARE MOVC A,@A+DPTR MOV R7,A BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 27 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 28 14

Question ðịa chỉ của LED 7 ñoạn là bao nhiêu? ðể làm LED hiển thị số 8, ta dùng lệnh cho 8051 như thế nào? (dùng assembly và C) Xây dựng bảng mã 7 ñoạn cho LED (cho các số lớn hơn 9 tắt tất cả ñoạn LED). Viết chương trình C ñọc giá trị từ 4 SW và hiển thị lên LCD. (Dùng bảng tra ñể lấy mã 7 ñoạn). BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 29 Giao tiếp switch Switch là 1 trong những phương pháp giao tiếp chính của hệ thống nhúng Các contact cơ khí sẽ bị rung khi ñóng hoặc mở. BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 30 15

Chống rung delay delay Not pressed Press detected Read again Confirmed Press detected Read again Just a bounce BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 31 Giao tiếp switch Với 8051, trước khi ñọc switch ta phải ghi 1 ra bộ chốt của chân port ñang giao tiếp switch BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 32 16

Viết chương trình C ñọc giá trị switch (có chống rung) và xuất ra LED. BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 33 Giao tiếp keypad BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 34 17

Giao tiếp keypad Chương trình getkey(): Giá trị trả về: mã phím (0-15) hoặc 255 nếu không có phím nhấn. Vẽ lưu ñồ Viết code C BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 35 Giao tiếp keypad Chương trình getkey_debound() Giá trị trả về: mã phím (0-15) hoặc 255 nếu không có phím nhấn. Cách thực hiện: Nếu trong 20 lần liên tiếp gọi chương trình getkey() trả về cùng 1 giá trị, thì ñó là giá trị trả về của getkey_debound(). BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 36 18

Giao tiếp keypad Vẽ lưu ñồ cho chương trình getkey_debound() Viết code C BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 37 BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 38 19

Giao tiếp keypad Viết chương trình getcalkey_debound(): Giá trị trả về là 1 trong các ký tự: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, C, =, +, -, x, / hoặc N nếu không có phím ñược nhấn BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 39 Hàm printf() Hàm printf() rất có ích trong quá trình viết và debug chương trình. Mặc ñịnh, hàm printf xuất 1 chuỗi ký tự ra serial port của 8051 Cấu trúc: int printf ( const char * format,... ); Chi tiết tham khảo tại: http://www.cplusplus.com/reference/clibrary/cs tdio/printf/ BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 40 20

Thư viện của Keil C Keil C hỗ trợ rất nhiều thư viện như thư viện xuất nhập (stdio), toán (math), Các thư viện và hàm của Keil C có thể tham khảo tại: http://www.keil.com/support/man/docs/c5 1/c51_library.htm BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 41 21