TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PHẦN MỀM KEIL C51 TRONG LẬP TRÌNH VI ĐIỀU KHIỂN

39 861 1
TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PHẦN MỀM  KEIL C51  TRONG LẬP TRÌNH VI ĐIỀU KHIỂN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 1 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG PHẦN MỀM KEIL_C51 TRONG LẬP TRÌNH VI ĐIỀU KHIỂN - Các bước cài đặt và thiết lập cho phần mềm - Hướng dẫn lập trình và mô phỏng một số chương trình (Điều xung, Watchdog Timer, Sử dụng các Macro) - Hướng dẫn lập trình truyền thông nối tiếp (UART, SPI) - Hướng dẫn lập trình giao tiếp ngoại vi (VĐK - máy tính) - Cách thiết lập các chế độ Timer, Counter - Giới thiệu một số lệnh căn bản YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 2 LỜI NÓI ĐẦU Hiện nay Vi Điều Khiển đã rất phổ biến ở nước ta từ những sản phẩm đơn giản như máy nấu nước,nấu cơm tự động… đến những sản phẩm đắt tiền như máy giặt, máy điều hòa… Nói chung hầu như tất cả những sản phẩm nào có chức năng giao tiếp với người dùng đều cần một bộ vi điều khiển. Nhưng chỉ khác một điều là nó được nhà sản xuất lập trình một lần và tung ra hàng loạt và hầu như chúng ta không có khả năng thay đổi chương trình cho chúng. Tuy nhiên khi đã nắm bắt được khả năng lập trình cho VĐK ta có thể làm rất nhiều việc chẳng hạn làm ra những sản phẩm có khả năng giao tiếp người dùng như đồng hồ hiển thò bằng LCD có chức năng nhập thời điểm báo chuông, bảng quang báo bằng Led ma trận, các dây chuyền tự động…….và gần gũi thiết thực nhất là lập trình cho ROBO (đó là một số sản phẩm mà chúng tôi câu lạc bộ E_CLUP đã thực hiện thành công). Để lập trình VĐK thì điều đầu tiên là cần một phần mềm lập trình do đó trong bài viết này tôi sẽ giới thiệu với các bạn phần mềm Keil_C51. Đây là phần mềm lập trình cho phép bạn sử dụng cả 2 ngôn ngữ Asm và ngôn ngữ C. Kết hợp với phần giới thiệu tôi sẽ trình bày một số bài lập trình cơ bản đã được viết hoàn chỉnh và hệ thống. Khi viết bằng ngôn ngữ ASM các bạn sẽ dễ dàng nắm bắt được cấu trúc bên trong VĐK cách thực thi từng lệnh nên thích hợp với người mới học, sau khi đã có kinh nghiệm lập trình bạn sẽ dễ dàng chuyển qua ngôn ngữ C. Để tiện cho người mới học theo dõi tôi đã trình bày dưới dạng ngôn ngữ ASM và tôi đang hoàn thiện bài hướng dẫn khác bằng ngôn ngữ C. Vì bản thân tôi cũng mới bắt đầu làm quen với VĐK vài năm và các bài lập trình chủ yếu được viết trên kinh nghiệm thực tế của tôi nên có thể còn nhiều sai sót mong được sự góp ý của các bạn để bài viết có thể hoàn thiện hơn. Chúc các bạn thành công!!! Biên Hòa 15/03/2008 Lê Tiến Lộc YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 3 I. CÀI ĐẶT PHẦN MỀM KEIL C51: - Nếu bạn là người yêu thích công việc lập trình Vi Điều Khiển và bạn đang sử dụng những phần mềm như Pinacal, Crimson…… và bạn gặp những rắc rối như đối với Pinacal thì bạn không thể lập trình quá 2KB nếu bạn không đăng ký mua bản quyền, Crimson hơi khó xài với những người mới học lập trình và không hỗ trợ những tính năng mô phỏng. Ở đây tôi sẽ giới thiệu với bạn một phần mềm với đầy đủ tính năng và có vẻ dễ dàng sử dụng hơn. Với Phần mềm Keil uVision3 bạn có thể xem mô phỏng dạng tín hiệu ra ở từng chân của Vi Điều Khiển với một màn hình tương tự Oscilloscope. Dễ dàng và thuận tiện cho việc lập trình hơn với những thư viện khai báo có sẵn trong chương trình. Bạn có thể tải File Setup trên mạng hoặc liên hệ với chúng tôi để được cung cấp miễn phí. Sau khi có file Setup bạn nhấp double vào biểu tượng cài đặt như sau để bắt đầu quá trình cài đặt. Keil C51 v8.05.exe Sau khi nhấp chuột cửa sổ sau xuất hiện : - Nhấn Next để tiếp tục việc cài đặt. - Sau khi nhấn next xuất hiện hộp thoại sau: - Đánh dấu chọn vào ô check box và chọn next. Nhấp vào đây để cài đặt Check here to agree YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 4 - Chọn đường dẫn chứa chương trình và nhấn next. - Điền các thông số vào (có thể là thông số bất kỳ nào đó không cần chính xác), nhấn next và bắt đầu quá trình cài đặt. - YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 5 - Sau khi cài đặt xong nhấn Finish để kết thúc quá trình cài đặt. • Chưa hết, để có thể sử dụng phần mềm này bạn cần phải CRAK nó. Coppy folder Keil trong thư mục CRACK và Paste nó lên thư mục mà bạn đã chọn khi cài. Sẽ xuất hiện một hộp thoại yêu cầu bạn có muốn replace không? Chọn Yes để thay thế. Chú ý là trong quá trình Crack bạn nên đóng tất cả cửa sổ chương trình lại. - Mở thư mục Keil vừa thay thế ra chọn file TOOLS • Đến đây bạn đã hoàn tất quá trình cài đặt!!! Congratulation!!!! I. THIẾT LẬP PHẦN MỀM: Tiếp theo, mời bạn làm quen với giao diện của chương trình: - Khởi động chương trình bằng cách : nhấp double vào biểu tượng trên Desktop hoặc vào Start -> Program -> chọn biểu tượng của chương trình. Giao diện chính của chương trình như sau: Coppy file này trong mục CRACK và Paste nó vào thư mục cài đặt !!!Thay thế file Keil trong mục vừa cài bằng file này. Biểu tượng của chương trình. Chọn đúng đường dẫn cho file rồi chọn save. Trong file cài thường đường dẫn được chọn mặc đònh là ổ D. Nhưng ta thường cài ở ổ C nên phải thay đường đẫn cho chính xác. YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 6 Bây giờ việc đầu tiên bạn phải làm là tạo 1 Project mới để làm việc. - Trên thanh menu vào Project -> New Project - Hộp thoại sau xuất hiện: Cửa sổ soạn thảo. Cửa sổ quản lý Cửa sổ báo lỗi Nút dòch sang file Hex và kiểm lỗi YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 7 Nhấn Save hộp thoại sau xuất hiện: - Sau khi chọn Chip nhấn OK, xuất hiện tiếp hộp thoại sau. Chọn Yes để đồng ý chuyển những mã code chuẩn 8051 vào Project của bạn. Lúc này bạn có thể thấy trên cửa sổ chương trình là tên Project mà bạn đặt. - Sau đó, bạn vào menu Project -> Options for Target ‘Target 1’ Đặt tên Project vào đây!!! Chọn Chip mà bạn đònh dùng VD: 89C51RD2XX YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 8 Hộp thoại sau xuất hiện: - Chọn OK. Sau khi thiết lập xong vào thẻ A51: Chọn thẻ Output Nhấn dấu chọn vào đây để tạo file HEX Đặt tên cho file HEX ở đây Bạn có thể chọn đường dẫn cho file HEX ở đây YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 9 - Nếu không tắt dấu chọn có nghóa là bạn đồng ý đònh nghóa chức năng thanh ghi đặc biệt theo chuẩn 8051 và không cần khai báo thư viện ở đầu chương trình, tuy nhiên khi chương trình được viết cho các IC có chức năng đặc biệt thì bạn cần khai báo tên thư viện ở đầu bài lập trình và tắt dấu chọn ở thẻ này. - Chọn OK. - Vậy là bạn đã hoàn tất việc thiết lập phần mềm, có thể bạn thấy hơi phức tạp nhưng công việc này bạn chỉ phải thiết lập một lần duy nhất. II. VIẾT MỘT CHƯƠNG TRÌNH VÀ CHẠY MÔ PHỎNG: (hiển thò dưới dạng tín hiệu) 1. Mô phỏng tín hiệu Digital và cách sử dụng Watchdog timer: - Bây giờ tôi sẽ hướng dẫn bạn viết một chương trình chi tiết từ A->Z .Giả sử ta có một đề bài là: Viết một chương trình chớp tắt đèn Standby vì đây là một bài tập nhỏ chỉ cần một vài câu lệnh nên tôi sẽ thêm vào phần Watchdog Timer để giới thiệu cùng bạn. - Sau khi mở cửa sổ soạn thảo bạn viết đoạn code sau vào: để bắt đầu viết code bạn nhấp phải chuột chọn insert ‘#include <REG51F.H>’ đây là thư viện giúp bạn không phải khai báo các thanh ghi chức năng đặc biệt. #include <REG51F.H> ;ADD THƯ VIỆN VÀO START BIT P0.0 ;KHAI BÁO NÚT NHẤN STOP BIT P0.1 STAND_BY BIT P1.0 ;KHAI BÁO ĐÈN LÀ CHÂN P1.0 WMCON EQU 0A6H ;KHAI BÁO WATCHĐOG TIMER ORG 0000H ;VETOR RESET LJMP MAIN ;LỆNH NHẢY TỚI NHÃN MAIN ORG 000BH ;VETOR NGẮT TRONG TIMER0 LJMP NGAT_T0 ;NHẢY ĐẾN TRÌNH PHỤC VỤ NGAT_T0 ORG 001BH ;VETOR NGẮT TRONG TIMER1 LJMP NGAT_T1 ;NHẢY ĐẾN TRÌNH PHỤC VỤ NGAT_T1 ORG 0030H ;VETOR KẾT THÚC Tắt dấu chọn ở đây! YELLOW BUTTERFLY 3/15/2008 Created by ELECTRONIC FACULTY Page 10 MAIN: MOV TMOD,#00010001B ;KHAI BÁO SỬ DỤNG TIMER 0 VÀ 1 MOV IE,#10001010B ;KHAI BÁO SỬ DỤNG NGẮT TRONG TIMER 0 VÀ 1 MOV TH0,#HIGH(-1000) ;NẠP GIÁ TRỊ BAN ĐẦU CHO BYTE CAO TIMER 0 MOV TL0,#LOW(-1000) ;NẠP GIÁ TRỊ BAN ĐẦU CHO BYTE THẤP TIMER 0 MOV TH1,#HIGH(-1000) ;NẠP GIÁ TRỊ BAN ĐẦU CHO BYTE CAO TIMER 1 MOV TL1,#LOW(-1000) ;NẠP GIÁ TRỊ BAN ĐẦU CHO BYTE THẤP TIMER 1 MOV P0,#0FFH ;ĐƯA CÁC CHÂN CỦA PORT 0 LÊN MỨC 1 MOV R0,#10 ;GIÁ TRỊ TRÌ HOÃN PHỤC VỤ NGẮT T0 CLR TR0 ;TẮT TIMER 0 SETB TR1 ;KHỞI ĐỘNG TIMER 1 LOOP: JB START ,N2 ;KIỂM TRA NÚT NHẤN START LCALL DELAY ;DELAY CHỐNG NẢY JB START,N2 JNB START,$ ;CHỜ NHÃ PHÍM MOV P1,#00H ;ĐƯA CÁC CHÂN CỦA PORT 1 XUỐNG MỨC 0 SETB TR0 ;KHỞI ĐỘNG TIMER 0 N2: JB STOP,LOOP ;KIỂM TRA NÚT STOP LCALL DELAY ;CHỐNG NẢY JB STOP,LOOP JNB STOP,$ ;CHỜ NHÃ PHÍM CLR TR1 SJMP LOOP ;QUAY LẠI ĐỂ BẮT ĐẦU VIỆC QUÉT PHÍM NGAT_T0: ;TRÌNH PHỤC VỤ NGẮT T0 CLR TR0 ;TẮT TIMER 0 MOV TH0,#HIGH(-1000) ;NẠP LẠI GIÁ TRỊ timer MOV TL0,#LOW(-1000) DJNZ R0,EXIT_T0 ;GIẢM R0 ĐỂ CÓ ĐƯC THỜI GIAN CẦN, như trên ta ;đã thiết lập cứ 1000 µ s thì tràn timer nhưng ta muốn 0,01s mới đảo Stanby, nên R0=10 CPL STAND_BY ;đảo bit sau 0,01s MOV R0,#10 ;nạp lại giá trò đếm EXIT_T0: SETB TR0 ;khởi động timer 0 RETI ;kết thúc ngắt quay về chương trình chính NGAT_T1: CLR TR1 MOV TH1,#HIGH(-1000) MOV TL1,#LOW(-1000) MOV WMCON,#01EH ;DAT GIA TRI DEM MOV WMCON,#0E1H ;KHOI DONG LAI WATCHDOG TIMER EXIT_T1: SETB TR1 RETI [...]... ACC.6,$ IV ĐIỀU KHIỂN GIAO TIẾP MÁY TÍNH QUA CHUẨN RS232 : - Trước khi bước vào phần lập trình giao tiếp máy tính tôi sẽ hướng dẫn các bạn cách lập trình trên giao diện Visual Basic 6.0 - Để dễ hiểu hơn ta đi vào một yêu cầu cụ thể Giả sử ta có một yêu cầu là lập trình giao tiếp với card LCD Ở đây chương trình vi điều khiển có nhiệm vụ nhận dữ liệu trên máy tính và hiển thò trên màn hình LCD Chương trình. .. TIẾP NGOẠI VI: 1 Dùng chuẩn truyền bất đối xứng UART 8bit: - Bây giờ tôi sẽ trình bày về cách sử dụng ngắt truyền thông nối tiếp Trong Vi Điều Khiển có chức năng ngắt truyền thông nối tiếp để truyền và nhận dữ liệu Chân TXD(P3.1 phát) và chân RXD(P3.0 thu) Thanh ghi điều khiển ngắt nối tiếp là SCON và thanh ghi đệm dữ liệu là SBUF Đòa chỉ véctor ngắt là 023H, bit cho phép ngắt là ES bit 4 trong thanh... cho phép nhập dữ liệu vào textbox, một nút SEND để gửi dữ liệu xuống VĐK, một textbox để nhận dữ liệu và một nút STOP để kết thúc Đoạn code chương trình Vi Điều Khiển như sau: (những phần không chú thích đã trình bày ở các bài trên) ; KHAI BAO BIEN (khai báo các chân trong LCD) RS BIT P1.0 ; RS=0 chon thanh ghi lệnh, RS=1 chọn thanh ghi dữ liệu RW BIT P1.1 ;RW=0 ghi dữ liệu, RW=1 đọc dữ liệu EN BIT P1.2... với một số chương trình lớn bao gồm nhiều chương trình con, ta có thể dùng tính năng liên kết file để tiện theo dõi và sữa đổi, thay thế các chương trình con - Để liên kết file, trên đầu chương trình chính ta khai báo đường dẫn đến file chứa chương trình con Ví dụ: Trong chương trình chính có dùng đến chương trình con đặt tại đường dẫn D\data\tienloc\count_line.asm thì trong chương trình chính khai... ;CHƯƠNG TRÌNH CON DELAY MOV 33H,#255 DJNZ 33H,$ RET END - Vậy là đã xong phần lập trình, chương trình trên có tác dụng như sau: khi nhấn START timer 0 bắt đầu làm vi c và khi ngắt xảy ra sẽ giảm giá trò trong R1 cho đến khi R1 bằng 0 thì thực hiện lệnh đảo bit Standby Khi STOP được nhấn timer 1 ngưng hoạt động và không còn nạp lại giá trò cho Watchdog timer dẫn đến tràn và chương trình sẽ bò RESET bởi phần. .. chế đo Timer0 Thanh ghi điều khiển chế độ đònh thời: TCON: Timer Control Register TF1 (Bit7): Cờ tràn timer 1 Được set bằng phần cứng khi Timer1 hoặc Counter1 tràn TR1 (Bit6): Bit điều khiển Timer1 (1: Run) TF0 (Bit5): Cờ tràn timer 0 Được set bằng phần cứng khi Timer0 hoặc Counter0 tràn TR0 (Bit4): Bit điều khiển Timer0 (1: Run) IE1 (Bit3): Cờ ngắt ngoài timer 1 Được set bằng phần cứng khi có tác động... Bit7 – Bit2 : Không sử dụng (bit dự trữ dùng trong tương lai cho các phiên bản 8051 sau) T2OE (Bit1): Bit cho phép timer2 xuất tín hiệu trên chân T2 DCEN (Bit0): Bit điều khiển đếm lên / xuống (1: up / 0: down) Thanh ghi điều khiển chế độ đònh thời 2: T2CON: Timer2 Control Register TF2 (Bit7): Cờ tràn của timer2 Được set lên 1 khi bộ đếm TL2 và TH2 tràn và phải được xóa bằng phần mềm TF2 sẽ không được... với chương trình Keil - Tiếp theo ta thử qua khái niệm điều xung và mô phỏng tín hiệu analog 2 Mô phỏng tín hiệu Analog và cách thiết lập chế độ điều xung: - Giả sử ta có đề bài: Tạo tín hiệu hình Sin trên chân P1.0 (lưu ý IC của bạn phải hỗ trợ chức năng này) Hay làm cho một đèn Led sáng dần và tắt dần Vì bài này cũng tương đối ngắn nên ta cùng kết hợp với cách sử dụng Timer 2 - Trong cửa sổ Code... Master;MSTR=0 chọn chế độ Slave CPOL (Bit3) : CPOL=0 chân SCK ở mức thấp khi không truyền dữ liệu; CPOL=1 chân SCK ở mức cao khi không truyền dữ liệu CPHA (Bit2) : Clock Phase Bit này kết hợp với CPOL để điều khiển xung clock và mối quan hệ truyền nhận giữa con chủ và tớ SPR0 (Bit1) : Điều khiển tốc độ xung SCK SPR1 (Bit0) : Điều khiển tốc độ xung SCK PR0 SPR1 0 0 lock rate/4 0 1 lock rate/16 1 0 lock rate/64... sẽ bò RESET bởi phần mềm Có thể bạn sẽ đặt ra câu hỏi vậy Watchdog timer để làm gì? Đối với đoạn chương trình trên thì chỉ để bạn hiểu về cách hoạt động của watchdog timer Còn trong thực tế bạn sẽ cho watchdog timer chạy như vậy nếu chương trình bạn lỡ bò rơi vào vòng lặp vô tận hay bò treo thì watchdog timer sẽ tự Reset chương trình lại - Bây giờ ta quay lại vi c mô phỏng với KEIL, sau khi gõ đoạn . dấu chọn c nghóa là bạn đồng ý đònh nghóa ch c năng thanh ghi đ c biệt theo chuẩn 8051 và không c n khai báo thư viện ở đầu chương trình, tuy nhiên khi chương trình đư c viết cho c c IC c ch c. 3/15/2008 Created by ELECTRONIC FACULTY Page 12 - Ta c thể xem trạng thái c c thanh ghi bằng c ch vào View -> Watch & call stack window, c a sổ ở g c phải màn hình hiện ra, chọn thẻ Watch,. đư c phát + Scon.4(REN) đòa chỉ 9CH bit cho phép thu, phải đư c set=1 để nhận ký tự + Scon.5(SM0) đòa chỉ 9DH bit chọn chếù độ + Scon.6(SM1) đòa chỉ 9EH bit chọn chếù độ + Scon.7(SM2) đòa chỉ

Ngày đăng: 07/04/2015, 14:25

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan