Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
5,48 MB
Nội dung
Lập trình vi điều khiển với AT89S52 BÀI 1: CẤU TRÚC VI ĐIỀU KHIỂN 1.1 GIỚI THIỆU 1.1.1 Sơ lược vi xử lý: Trong thập niên cuối kỉ XX, từ đời công nghệ bán dẫn, kĩ thuật điện tử có phát triển vượt bậc Các thiết bị điện tử sau tích hợp với mật độ cao cao diện tích nhỏ, nhờ thiết bị điện tử nhỏ nhiều chức Các thiết bị điện tử ngày nhiều chức giá thành ngày rẻ hơn, điện tử có mặt khắp nơi Bước đột phá công nghệ điện tử, công ty trẻ tuổi Intel cho đời vi xử lý Đột phá chỗ: "Đó kết cấu logic mà thay đổi chức chương trình không phát triển theo hướng tạo cấu trúc phần cứng thực theo số chức định trước đây" (trích từ dòng 17 đến 19, trang 3, 'Kĩ thuật VI XỬ LÝ lập trình ASSEMBLY cho hệ vi xử lý', tác giả Đỗ Xuân Tiến, nhà xuất Khoa học kĩ thuật) Tức phần cứng đóng vai trò thứ yếu, phần mềm (chương trình) đóng vai trò chủ đạo chức cần thực Nhờ vi xử lý có mềm dẻo hóa chức Ngày vi xử lý có tốc độ tính toán cao khả xử lý lớn Vi xử lý có khối chức cần thiết để lấy liệu, xử lý liệu xuất liệu sau xử lý Và chức Vi xử lý xử lý liệu, chẳng hạn cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý khả giao tiếp trực tiếp với thiết bị ngoại vi, có khả nhận xử lý liệu mà Để vi xử lý hoạt động cần có chương trình kèm theo, chương trình điều khiển mạch logic từ vi xử lý xử lý liệu cần thiết theo yêu cầu Chương trình tập hợp lệnh để xử lý liệu thực lệnh lưu trữ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ nhớ, giải mã lệnh thực lệnh sau giải mã Để thực công việc với thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự hình đòi hỏi phải kết hợp vi xử lý với mạch điện giao tiếp với bên gọi thiết bị I/O (nhập/xuất) hay gọi thiết bị ngoại vi Bản thân vi xử lý đứng nhiều hiệu sử dụng, phần máy tính, hiệu ứng dụng Vi xử lý lớn Vi xử lý kết hợp với thiết bị khác sử hệ thống lớn, phức tạp đòi hỏi phải xử lý lượng lớn phép tính phức tạp, có tốc độ nhanh Chẳng hạn hệ thống sản xuất tự động công nghiệp, tổng đài điện thoại, robot có khả hoạt động phức tạp v.v 1.1.2 Từ Vi xử lý đến Vi điều khiển Bộ Vi xử lý có khả vượt bậc so với hệ thống khác khả tính toán, xử lý, thay đổi chương trình linh hoạt theo mục đích người dùng, đặc biệt hiệu toán hệ thống lớn Tuy nhiên ứng dụng nhỏ, tầm tính toán không đòi hỏi khả tính toán lớn việc ứng dụng vi xử lý cần cân nhắc Bởi hệ thống dù lớn hay nhỏ, dùng vi xử lý đòi hỏi khối mạch điện giao tiếp phức tạp Các khối bao gồm nhớ để chứa liệu chương trình thực hiện, mạch điện giao tiếp ngoại vi để xuất nhập điều khiển trở lại, khối liên kết với vi xử lý thực công việc Để kết nối khối Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 đòi hỏi người thiết kế phải hiểu biết tinh tường thành phần vi xử lý, nhớ, thiết bị ngoại vi Hệ thống tạo phức tạp, chiếm nhiều không gian, mạch in phức tạp vấn đề trình độ người thiết kế Kết giá thành sản phẩm cuối cao, không phù hợp để áp dụng cho hệ thống nhỏ Vì số nhược điểm nên nhà chế tạo tích hợp nhớ số mạch giao tiếp ngoại vi với vi xử lý vào IC gọi Microcontroller-Vi điều khiển Vi điều khiển có khả tương tự khả vi xử lý, cấu trúc phần cứng dành cho người dùng đơn giản nhiều Vi điều khiển đời mang lại tiện lợi người dùng, họ không cần nắm vững khối lượng kiến thức lớn người dùng vi xử lý, kết cấu mạch điện dành cho người dùng trở nên đơn giản nhiều có khả giao tiếp trực tiếp với thiết bị bên Vi điều khiển xây dựng với phần cứng dành cho người sử dụng đơn giản hơn, thay vào lợi điểm khả xử lý bị giới hạn (tốc độ xử lý chậm khả tính toán hơn, dung lượng chương trình bị giới hạn) Thay vào đó, Vi điều khiển có giá thành rẻ nhiều so với vi xử lý, việc sử dụng đơn giản, ứng dụng rộng rãi vào nhiều ứng dụng có chức đơn giản, không đòi hỏi tính toán phức tạp Vi điều khiển ứng dụng dây chuyền tự động loại nhỏ, robot có chức đơn giản, máy giặt, ôtô v.v Năm 1976 Intel giới thiệu vi điều khiển (microcontroller) 8748, chip tương tự vi xử lý chip họ MCS-48 Độ phức tạp, kích thước khả Vi điều khiển tăng thêm bậc quan trọng vào năm 1980 intel tung chip 8051, Vi điều khiển họ MCS-51 chuẩn công nghệ cho nhiều họ Vi điều khiển sản xuất sau Sau nhiều họ Vi điều khiển nhiều nhà chế tạo khác đưa thị trường với tính cải tiến ngày mạnh 1.1.3 Họ MSC-51 Hiện có nhiều họ Vi điều khiển thị trường với nhiều ứng dụng khác nhau, họ Vi điều khiển họ MCS-51 sử dụng rộng rãi giới Việt nam Vào năm 1980 Intel công bố chíp 8051(80C51), vi điều khiển họ vi điều khiển MCS-51 Nó bao gồm 4KB ROM, 128 byte RAM, 32 đường xuất nhập, port nối tiếp định thời 16 bit Tiếp theo sau đời chip 8052,8053,8055 với nhiều tính cải tiến Hiện Intel không cung cấp loại Vi điều khiển họ MCS-51 nữa, thay vào nhà sản xuất khác Atmel, Philips/signetics, AMD, Siemens, Matra&Dallas, Semiconductors cấp phép làm nhà cung cấp thứ hai cho chip họ MSC-51 Chip Vi điều khiển sử dụng rộng rãi giới Việt Nam Vi điều khiển hãng Atmel với nhiều chủng loại vi điều khiển khác Hãng Atmel có chip Vi điều khiển có tính tương tự chip Vi điều khiển MCS51 Intel, mã số chip thay đổi chút Atmel sản xuất Mã số 80 chuyển thành 89, chẳng hạn 80C52 Intel sản xuất Atmel mã số thành 89C52 (Mã số đầy đủ: AT89C52) với tính chương trình tương tự Tương tự 8051,8053,8055 có mã số tương đương Atmel 89C51,89C53,89C55 Vi điều khiển Atmel sau ngày cải tiến bổ sung thêm nhiều chức tiện lợi cho người dùng Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 Bảng 89C51 89C52 89C53 89C55 Dung lượng RAM 128 byte 128 byte 128 byte 128 byte Dung lượng ROM Kbyte Kbyte 12 Kbyte 20 Kbyte Chế độ nạp song song song song song song song song Sau khoảng thời gian cải tiến phát triển, hãng Atmel tung thị trường dòng Vi điều khiển mang số hiệu 89Sxx với nhiều cải tiến đặc biệt có thêm khả nạp chương trình theo chế độ nối tiếp đơn giản tiện lợi cho người sử dụng Bảng 89S51 89S52 89S53 89S55 Dung lượng RAM 128 byte 128 byte 128 byte 128 byte Dung lượng ROM Kbyte Kbyte 12 Kbyte 20 Kbyte Chế độ nạp nối tiếp nối tiếp nối tiếp nối tiếp Tất Vi điều khiển có đặc tính giống phần mềm (các tập lệnh lập trình nhau), phần cứng bổ sung với chip có mã số hai số cuối cao hơn, Vi điều khiển sau có nhiều tính vượt trội Vi điều khiển hệ trước Các Vi điều khiển 89Cxx bảng có cấu tạo ROM RAM 98Sxx bảng 2, nhiên 98Sxx bổ sung số tính có thêm chế độ nạp nối tiếp Trên thị trường có nhiều loại sách hướng dẫn Vi điều khiển với nhiều loại khác 8051, 89C51, 89S8252, 89S52 v.v sách hướng dẫn cụ thể phần cứng cách thức lập trình Chương trình phần mềm dành cho Vi điều khiển nhau, bạn tham khảo thêm Vi điều khiển sách Các phần thực hành phần cứng thực tế, bạn thực hành với Vi điều khiển 89S52 (Mã đầy đủ:AT89S52; AT viết tắt nhà sản xuất ATMEL) : Các Vi điều khiển 89Sxx cải tiến từ dòng 89Cxx Chương trình viết dành cho 89Cxx chạy với 89Sxx 89Sxx rẻ 89Cxx 89Sxx có chế độ nạp nối tiếp với mạch nạp đơn giản có khả nạp bo mạch mà không cần tháo chip vi điều khiển sang mạch khác để nạp chương trình nhiều tính cải tiến khác 1.1.4 Các loại vi điều khiển khác 1.2 Vi điều khiển AVR Vi điều khiển PIC Vi điều khiển MCUs Philips Các loại vi điều khiển chuyên dụng hãng sản xuất khác: Các loại vi điều khiển sử dụng chuyên dụng theo chức cần điều khiển SƠ LƯỢC PHẦN CỨNG VI ĐIỀU KHIỂN-GIAO TIẾP BÊN NGOÀI Các thành viên họ MCS-51 (Atmel) có đặc điểm chung sau: Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 Có 4/8/12/20 Kbyte nhớ FLASH ROM bên để lưu chương trình Nhờ Vi điều khiển có khả nạp xoá chương trình điện đến 10.000 lần 128 Byte RAM nội Port xuất/nhập bit Từ đến định thời 16-bit Có khả giao tiếp truyền liệu nối tiếp Có thể mở rộng không gian nhớ chương trình 64KByte (bộ nhớ ROM ngoại): chương trình người lập trình viết có dung lượng lớn dung lượng nhớ ROM nội, để lưu chương trình cần nhớ ROM lớn hơn, cách giải kết nối Vi điều khiển với nhớ ROM từ bên (hay gọi ROM ngoại) Dung lượng nhớ ROM ngoại lớn mà Vi điều khiển kết nối 64Kbyte Có thể mở rộng không gian nhớ liệu 64KByte (bộ nhớ RAM ngoại) Bộ xử lí bit (thao tác bit riêng rẽ) 210 bit truy xuất đến bit 1.2.1 Khảo sát sơ đồ chân Mặc dù thành viên họ MSC-51 có nhiều kiểu đóng vỏ khác nhau, chẳng hạn hai hàng chân DIP (Dual In-line Pakage) dạng vỏ dẹt vuông QFP (Quad Flat Pakage) dạng chíp chân đỡ LLC (Leadless Chip Carrier) có 40 chân cho chức khác vào I/0, đọc, ghi, địa chỉ, liệu ngắt Tuy nhiên, hầu hết nhà phát triển dùng chíp đóng vỏ 40 chân với hai hàng chân DIP, nên khảo sát Vi điều khiển với 40 chân dạng DIP Hình 1.1 - Chân VCC: Chân số 40 VCC cấp điện áp nguồn cho Vi điều khiển Nguồn điện cấp +5V±0.5 - Chân GND: Chân số 20 nối GND(hay nối Mass) Khi thiết kế cần sử dụng mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn giản sử dụng IC ổn áp 7805 - Port (P0) Port gồm chân (từ chân 32 đến 39) có hai chức năng: Chức xuất/nhập :các chân dùng để nhận tín hiệu từ bên vào để xử lí, dùng để xuất tín hiệu bên ngoài, chẳng hạn xuất tín hiệu để điều khiển led đơn sáng tắt Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 Chức bus liệu bus địa (AD7-AD0) : chân (hoặc Port 0) làm nhiệm vụ lấy liệu từ ROM RAM ngoại (nếu có kết nối với nhớ ngoài), đồng thời Port dùng để định địa nhớ - Port (P1) Port gồm chân (từ chân đến chân 8), có chức làm đường xuất/nhập, chức khác - Port (P2) Port gồm chân (từ chân 21 đến chân 28) có hai chức năng: Chức xuất/nhập Chức bus địa cao (A8-A15): kết nối với nhớ có dung lượng lớn, cần byte để định địa nhớ, byte thấp P0 đảm nhận, byte cao P2 đảm nhận - Port (P3) Port gồm chân (từ chân 10 đến 17): Chức xuất/nhập Với chân có chức riêng thứ hai bảng sau Bit P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 P1.0 P1.1 Tên RxD TxD INT0 INT1 T0 T1 WR RD T2 T2X Chức Ngõ vào nhận liệu nối tiếp Ngõ xuất liệu nối tiếp Ngõ vào ngắt cứng thứ Ngõ vào ngắt cứng thứ Ngõ vào Timer/Counter thứ Ngõ vào Timer/Counter thứ Ngõ điều khiển ghi liệu lên nhớ Ngõ điều khiển đọc liệu từ nhớ bên Ngõ vào Timer/Counter thứ Ngõ nạp lại/thu nhận Timer/Counter thứ - Chân RESET (RST) Ngõ vào RST chân ngõ vào Reset dùng để thiết lập trạng thái ban đầu cho vi điều khiển Hệ thống thiết lập lại giá trị ban đầu ngõ mức tối thiểu chu kì máy - Chân XTAL1 XTAL2 Hai chân có vị trí chân 18 19 sử dụng để nhận nguồn xung clock từ bên để hoạt động, thường ghép nối với thạch anh tụ để tạo nguồn xung clock ổn định - Chân cho phép nhớ chương trình PSEN (Program Store Enable) tín hiệu xuất chân 29 dùng để truy xuất nhớ chương trình Chân thường nối với chân OE (output enable) ROM Khi vi điều khiển làm việc với nhớ chương trình ngoài, chân phát tín hiệu kích hoạt mức thấp kích hoạt lần chu kì máy Khi thực thi chương trình ROM nội, chân trì mức logic không tích cực (logic 1) (Không cần kết nối chân không sử dụng đến) - Chân ALE (chân cho phép chốt địa chỉ-chân 30) có chức bus liệu phải tách đường liệu địa Tín hiệu chân ALE dùng làm tín hiệu điều khiển để giải đa hợp đường địa đường liệu kết nối chúng với IC chốt Các xung tín hiệu ALE có tốc độ 1/6 lần tần số dao động đưa vào Vi điều khiển, dùng tín hiệu ngõ ALE làm xung clock cung cấp cho phần khác hệ thống Ghi chú: không sử dụng bỏ trống chân Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 - Chân EA Chân EA dùng để xác định chương trình thực lấy từ ROM nội hay ROM ngoại Khi EA nối với logic 1(+5V) Vi điều khiển thực chương trình lấy từ nhớ nội Khi EA nối với logic 0(0V) Vi điều khiển thực chương trình lấy từ nhớ ngoại 1.2.2 Kết nối phần cứng Kết nối hai chân XTAL1 XTAL2 Mạch dao động đưa vào hai chân thông thường kết nối với dao động thạch anh sau: Hình 1.2 Hình 1.3 Ghi chú: C1,C2= 30pF±10pF (thường sử dụng với C1,C2 tụ 33pF) dùng ổn định dao động cho thạch anh Hoặc cấp tín hiệu xung clock lấy từ mạch tạo dao động đưa vào Vi điều khiển theo hình 1.3 Trong NC: để trống, chân XTAL2 để trống Chu kì máy Gọi fzat tần số dao động thạch anh Đối với 89Sxx sử dụng thạch anh có tần số fzat từ 2MHz đến 33MHz Chu kì máy khoảng thời gian cần thiết qui định để Vi điều khiển thực hoàn thành lệnh Một chu kì máy 12 lần chu kì dao động nguồn xung dao động cấp cho Tck = 12.Toc Với: Tck chu kì máy Toc chu kì nguồn xung dao động cấp cho Vi điều khiển Như vậy: Với: Tck chu kì máy foc tần số dao động cấp cho Vi điều khiển Ví dụ: Ta kết nối Vi điều khiển với thạch anh có tần số fzat = 12MHz, chu kì máy Tck=12/(12.106)=10-6s =1µs Chính lí thạch anh có tần số fzat = 12MHz tạo chu kì máy 1µs, thuận lợi cho việc tính toán thời gian lập trình thạch anh có tần số fzat 12MHz thường sử dụng thực tế Khi giao tiếp truyền nối tiếp với máy vi tính dùng thạch anh có tần số fzat 11.0592MHz Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 Kết nối chân RESET-chân Khi bị cúp điện, hoạt động mà hệ thống bị lỗi cần tác động cho Vi điều khiển hoạt động trở lại, người sử dụng muốn quay trạng thái hoạt động ban đầu Vì chân RESET kết nối sau: Với Vi điều khiển sử dụng thạch anh có tần số fzat = 12MHz sử dụng C=10µF R=10KΩ Hình 1.4 Kết nối Port với Led Các Port xuất tín hiệu mức logic thường không đạt đến 5V mà dao động khoảng từ 3.5V đến 4.9V dòng xuất nhỏ 5mA (P0,P2 dòng xuất khoảng 1mA; P1,P3 dòng xuất khoảng 1mA đến 5mA) dòng xuất không đủ để làm led sáng Tuy nhiên Port xuất tín hiệu mức logic dòng điện cho phép qua lớn nhiều: Chân Vi điều khiển mức 0: Dòng lớn qua P0 : -25mA Dòng lớn qua P1,P2,P3 : -15mA Do kết nối với led thiết bị khác Vi điều khiển gặp trở ngại tác động làm led sáng Vi điều khiển xuất mức 1, lúc dòng áp không đủ để led sáng rõ (led đỏ sáng điện áp 1.6V-2.2V dòng khoảng 10mA) Khắc phục cách sau: a Cho led sáng Vi điều khiển mức 0: Px.x thay cho chân xuất Port Ví dụ: Chân P1.1, P2.0, v.v Khi Px.x mức led không sáng Khi Px.x mức led sáng Hình 1.5 Hình 1.6 b Cho led sáng Vi điều khiển xuất mức 1: Như trình bày ngõ Vi điều khiển xuất mức không đủ led sáng, để led sáng cần đặt thêm điện trở kéo lên nguồn VCC (gọi điện trở treo hình 1.6) Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 Tuỳ trường hợp mà chọn R2 để dòng áp phù hợp với thiết bị nhận Khi Px.x mức 0, có chênh lệch áp nguồn VCC chân Px.x - dòng điện từ VCC qua R2 Px.x Mass, hiệu điện hai chân led gần 0, led không sáng Khi Px.x mức (+5V), dòng điện không chạy qua chân Vi điều khiển để mass được, có lệch áp hai chân led, dòng điện trường hợp qua led Mass led sáng R2 thường sử dụng với giá trị từ 4.7KΩ đến 10KΩ Nếu tất chân Port kết nối để tác động mức cao điện trở R2 thay điện trở chân có hình dáng sử dụng dễ làm mạch điện c Ngoài cách sử dụng điện trở treo, việc sử dụng cổng đệm có tác dụng thay đổi cường độ dòng điện xuất ngõ mức 1, cổng đệm xuất tín hiệu mức với áp dòng lớn có tín hiệu mức đặt ngõ vào Tùy theo yêu cầu người thiết kế dòng áp cần thiết mà chọn IC đệm cho phù hợp Chẳng hạn từ ngõ P0.0 làm nhiều led sáng lúc việc sử dụng IC đệm ưu tiên Có thể sử dụng 74HC244 74HC245, nhiên 74HC245 cải tiến từ 74HC244 nên việc sử dụng 74HC245 dễ dàng thiết kế mạch Hình 1.7 1.3 CẤU TRÚC BÊN TRONG CỦA VI ĐIỀU KHIỂN 1.3.1 Bộ nhớ chương trình - nhớ ROM Bộ nhớ ROM dùng để lưu chương trình người viết chương trình viết Chương trình tập hợp câu lệnh thể thuật toán để giải công việc cụ thể, chương trình người thiết kế viết máy vi tính, sau đưa vào lưu ROM vi điều khiển, hoạt động, vi điều khiển truy xuất câu lệnh ROM để thực chương trình ROM dùng để chứa số liệu bảng, tham số hệ thống, số liệu cố định hệ thống Trong trình hoạt động nội dung ROM cố định, thay đổi, nội dung ROM thay đổi ROM chế độ xóa nạp chương trình (do mạch điện riêng biệt thực hiện) Bộ nhớ ROM tích hợp chip Vi điều khiển với dung lượng tùy vào chủng loại cần dùng, chẳng hạn 89S52 8KByte, với 89S53 12KByte Bộ nhớ bên Vi điều khiển 89Sxx nhớ Flash ROM cho phép xóa nhớ ROM điện nạp vào chương trình điện nạp xóa nhiều lần Bộ nhớ ROM định địa theo Byte, byte đánh địa theo số hex-số thập lục phân, địa 0000H, viết chương trình cần ý đến địa lớn Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 ROM, chương trình lưu bị địa lưu vượt qua vùng Ví dụ: AT89S52 có 8KByte nhớ ROM nội, địa lớn 1FFFH, chương trình viết có dung lượng lớn 8KByte byte địa lớn 1FFFH bị Ngoài Vi điều khiển có khả mở rộng nhớ ROM với việc giao tiếp với nhớ ROM bên lên đến 64Kbyte (địa từ 0000H đến FFFFH) 1.3.2 Bộ nhớ liệu- nhớ RAM Bộ nhớ RAM dùng làm môi trường xử lý thông tin, lưu trữ kết trung gian kết cuối phép toán, xử lí thông tin Nó dùng để tổ chức vùng đệm liệu, thao tác thu phát, chuyển đổi liệu RAM nội Vi điều khiển tổ chức sau: Các vị trí RAM định địa theo Byte số thập lục phân (số Hex) Các bank ghi có địa 00H đến 1FH 210 vị trí định địa bit vị trí RAM bình thường Các ghi có chức đặc biệt có địa từ 80H đến FFH Các byte RAM bit vi điều khiển gọi "ô nhớ", ô nhớ có chức đặc biệt thường gọi "thanh ghi", bit gọi "bit nhớ" Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 Cách 1: Cách cách 5, làm cho led sáng cách thiết đặt giá trị thích hợp cho Port để làm led sáng theo trạng thái, cách đơn giản cần viết dài tốn dung lượng nhớ Rom ;******************************************************************************* ;**************///// - 32 LED SANG LAN LUOT- CACH DON GIAN -\\\\\\************** ;** ;**//////////////// _ led sang lan luot tu led den led 32 _\\\\\\\\\\\\\\\\\\\\\\\\\\\ ;**/////////////// _ sang o muc va tat o muc \\\\\\\\\\\\\\\\\\\\\\\\\ ;**////////////// lap di lap lai khong gioi han \\\\\\\\\\\\\\\\\\\\\ ;** ||| Mov P1,#0 ;===>>>> ||| cac led deu tat Mov P2,#0 ;===>>>> ||| Mov P3,#0 ;===>>>> ||| LCall Delay ;===>>>>goi chuong trinh Delay Xuat: ;**>>>>>>>>>>>>>>>>>>> lam led P0 sang >>> lam led sang LCall Delay Mov P0,#00100000B ;===>>>> lam led sang LCall Delay Mov P0,#01000000B ;===>>>> lam led sang LCall Delay Mov P0,#10000000B ;===>>>> lam led sang LCall Delay ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>lam led P1 sang >> lam led sang LCall Delay 63 Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 Mov P1,#00010000B ;===>>>> lam led sang LCall Delay Mov P1,#00100000B ;===>>>> lam led sang LCall Delay Mov P1,#01000000B ;===>>>> lam led sang LCall Delay Mov P1,#10000000B ;===>>>> lam led sang LCall Delay ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> lam led P2 sang >>> lam led sang LCall Delay Mov P2,#00010000B ;===>>>> lam led sang LCall Delay Mov P2,#00100000B ;===>>>> lam led sang LCall Delay Mov P2,#01000000B ;===>>>> lam led sang LCall Delay Mov P2,#10000000B ;===>>>> lam led sang LCall Delay ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>lam led P1 sang >> lam led sang LCall Delay Mov P3,#00010000B ;===>>>> lam led sang LCall Delay Mov P3,#00100000B ;===>>>> lam led sang LCall Delay Mov P3,#01000000B ;===>>>> lam led sang LCall Delay Mov P3,#10000000B ;===>>>> lam led sang 64 Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 LCall Delay Mov P3,#00000000B ;*** -Ljmp Xuat ;===>>>> lam led P3 tat ; ===>>>> nhay ve thuc hien tu dau ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> delay >>> ||| ;===>>>> ||| ;===>>>> ||| ;===>>>> lam co C len Xoay32bit: Sjmp Mov A,P0 RLC A Mov P0,A Mov A,P1 RLC A Mov P1,A Mov A,P2 RLC A Mov P2,A Mov A,P3 RLC A Mov P3,A LCall Delay Xoay32bit ;|||||||||| ;||||||||||===>>>> xoay trai P0 voi co nho C ;|||||||||| ;@@@@ ;@@@@ ===>>>> xoay trai P1 voi co nho C ;@@@@ ;##### ;##### ===>>>> xoay trai P2 voi co nho C ;##### ;!!!!!!!!!!! ;!!!!!!!!!!!===>>>> xoay trai P3 voi co nho C ;!!!!!!!!!!! ;===>>>>goi chuong trinh Delay ;===>>>> nhay ve thuc hien tu dau ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Delay nhay ve thuc hien tu dau ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> delay >>>>>>>>>>>>>>>>>>>>> delay [...]... nối tiếp (hạn chế lỗi phát sinh trong quá trình truyền) 13 Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 BÀI 2: LẬP TRÌNH CHO VI ĐIỀU KHIỂN 2.1 GIỚI THIỆU Vi điều khiển là một IC lập trình, vì vậy Vi điều khiển cần được lập trình trước khi sử dụng Mỗi phần cứng nhất định phải có chương trình phù hợp kèm theo, do đó trước khi viết chương trình đòi hỏi người viết phải nắm bắt được... chương trình viết bằng ngôn ngữ bậc cao khác 2.2 TỔNG QUAN VỀ NGÔN NGỮ ASSEMBLY Assembly là một ngôn ngữ lập trình cấp thấp gần với ngôn ngữ máy, chương trình sau khi viết bằng assembly cần được chuyển đổi qua mã lệnh (hay còn gọi là mã máy) của vi điều khiển, quá trình chuyển đổi được thực hiện bằng chương trình dịch Assembler Các mã lệnh sau đó được nạp vào ROM của vi điều khiển để thực hiện chương trình. .. khi thực hiện chương trình Vi điều khiển đọc các mã lệnh này, giải mã, và thực hiện lệnh Vì các lệnh của Vi điều khiển có dạng số nhị phân quá dài và khó nhớ, hơn nữa việc gỡ lỗi khi chương trình phát sinh lỗi rất phức tạp và khó khăn Khó khăn này được giải quyết với sự hỗ trợ của máy vi tính, người viết chương trình có thể viết chương trình cho vi điều khiển bằng các ngôn ngữ lập trình cấp cao, sau... hiện chương trình Chương trình dịch Assembler được dùng phổ biến hiện nay là chương trình Macro Assembler sử dụng trên DOS Để soạn thảo chương trình có thể sử dụng NotePad hoặc bất cứ chương trình soạn thảo có sử dụng bộ kí tự chuẩn ASCII và lưu tên đuôi như sau: "tên.asm" Ngoài ra có thể sử dụng các phần mềm hỗ trợ soạn thảo dành riêng cho vi điều khiển đã tích hợp sẵn chương trình dịch Assembler 14... số tại địa chỉ http://www.codientu.info/ki_thuat_cdt/dien_tu/vi_mach_so/ hoặc các tài liệu về kĩ thuật số khác 3 Kết thúc chương trình Sau khi chương trình hoàn tất phải kết thúc bằng câu lệnh END Các câu lệnh này báo cho trình biên dịch biết phần kết thúc của chương trình, trình biên dịch bỏ qua tất cả các câu lệnh sau lệnh END 2.4 TẬP LỆNH TRONG VI ĐIỀU KHIỂN Tập lệnh trong Vi điều khiển được chia... trình mô phỏng dành riêng Chương trình cho Vi điều khiển có thể viết bằng C++, C, Visual Basic, hoặc bằng các ngôn ngữ cấp cao khác Tuy nhiên hợp ngữ Assembler được đa số người dùng Vi điều khiển sử dụng để lập trình, vì lí do này chúng tôi chọn Assembly để hướng dẫn viết chương trình cho Vi điều khiển Assembly là một ngôn ngữ cấp thấp, trong đó mỗi câu lệnh chương trình tương ứng với một chỉ lệnh... viết chương trình được hoàn tất, các trình biên dịch sẽ chuyển các câu lệnh cấp cao thành mã máy một cách tự động Các mã máy này sau đó được đưa (nạp) vào bộ nhớ ROM của Vi điều khiển, Vi điều khiển sẽ tìm đến đọc các lệnh từ ROM để thực hiện chương trình Bản thân máy tính không thể thực hiện các mã máy này vì chúng không phù hợp với phần cứng máy tính, muốn thực hiện phải có các chương trình mô phỏng... "tên.asm" Ngoài ra có thể sử dụng các phần mềm hỗ trợ soạn thảo dành riêng cho vi điều khiển đã tích hợp sẵn chương trình dịch Assembler 14 Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 2.3 MỘT SỐ QUI ƯỚC KHI LẬP TRÌNH VỚI HỢP NGỮ ASSEMBLER 1 Khi giới thiệu các câu lệnh viết bằng hợp ngữ, các câu lệnh cần được bao quát tất cả các trường hợp do đó có một số qui ước khi thiết lập cú... viết cần thêm phía sau giá trị bằng kí tự "H" Nếu sô hex bắt đầu là A,B,C,D,E,F thì cần thêm số "0" phía trước để trình biên dịch nhận biết được đó là số Hex, không lầm giá trị số với các kí tự chữ khác Khi sử dụng các giá trị dành 15 Collected by Truong Van Gian Lập trình vi điều khiển với AT89S52 riêng cho một công việc nào đó, việc ghi nhớ bằng số nhị phân rất rắc rối và khó nhớ, khi đó số hex được... kèm theo, do đó trước khi viết chương trình đòi hỏi người viết phải nắm bắt được cấu tạo phần cứng và các yêu cầu mà mạch điện cần thực hiện Chương trình là tập hợp các lệnh được tổ chức theo một trình tự hợp lí để giải quyết các yêu cầu của người lập trình Tập hợp tất cả các lệnh gọi là tập lệnh Họ Vi điều khiển MSC-51 đều có chung một tập lệnh, các Vi điều khiển được cải tiến sau này thường ít thay