Lập trình C bằng Keil C
Số trang: 12
Loại file: doc
Dung lượng: 92.50 KB
Lượt xem: 24
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Để học tốt bài lập trình C bằng Keil C yêu cầu bạn phải có kiến thức căn bản về C như hàm con, sử dụng con trỏ, các kiểu dữ liệu.. C là một ngôn ngữ lập trình tương đối nhỏ gọn vận hành gần với phần cứng và nó giống với ngôn ngữ Assembler hơn hầu hết các ngôn ngữ bậc cao.
Nội dung trích xuất từ tài liệu:
Lập trình C bằng Keil C Lập trình C bằng Keil CI. Cấu trúc chương trình C cho 8051Để có thể hiểu được những vấn đề tôi viết thì yêu cầu bạn phải có kiến thứccăn bản về C như hàm con, sử dụng con trỏ, các kiểu dữ liệu(int, float,double,char, unsigned char,..)Tôi xin đi vào bài thứ nhất. Nói về cấu trúc cho chương trình C:1/Phần đầu tiên là liệt kê các header file mà các bạn dùng bằng từ khóa#includetên header filehoặc#include< tên header file>Khi bạn viết theo cách thứ nhất thì trình biên dịch sẽ tìm kiếm file .h hoặc .c nàytrong thư mục hiện tại chứa dự án của bạn, nếu không có thì sẽ tìm kiếm trongthư mục Inc trong thư mục cài đặt KeilC.Viết theo cách thứ hai thì trình biên dịch sẽ tìm luôn trong thư mục /INC luôn.Để có thể sử dụng đúng các file .h cho các vi điều khiển của mình thì bạn nênmở thư mục /inc trong thư mục này có các thư mục con như tên của hãng sảnxuất. Ví dụ như của Atmel thì bạn tìm trong thư mục /Atmel thì sẽ thấy đượcfile reg51.h ,.. Bạn mở từng file nên mà khám phá sẽ có nhiều điều hay đấy.2/Định nghĩa các macro cho chương trình sáng sủa. Việc định nghĩa này đượcdùng bằng từ khóa #defineVí dụ: bạn định nghĩa led1 là P1_0 tức là led1 được nối với chân 0 của Port 1.#define led1 P1_03/ Các hàm ngắt như ngắt timer0, timer1, ngắt nối tiếp, ngắt ngoài. Tôi sẽ nói chitiết cái này sau. Còn bây giờ tôi chỉ giới thiệu sơ sơ thôi.Ví dụ bạn dùng ngắt nối tiếp là ngắt 4 trong bảng vector ngắt thì hàm sẽ có dạngnhư sau:void inter_4(void) interrupt 4 using 2{// làm gì thì làm ở đây}Cú pháp các ngắt khác cũng tương tự chỉ thay số 4 bằng số thứ tự của ngắt trongbảng vector ngắt.4/ Các hàm con như Delay, khởi tạo,.. như:void delay( unsigned char time){//code viết ở đây}5/ Chương trình chính:void main(void){// viết mã ở đây}Đối tượng của chương trình là vi điều khiển nên hàm main không có giá trị trảvề và không có tham số đưa vào. Và thực chất cũng chẳng cần biến toàn cục vìta chỉ cần viết 1 file thôi. Nên tôi không đưa biến toàn cục vào đây.Kết luận, chương trình của chúng ta sẽ có dạng như sau:// liệt kê header file#inlucdetên header file....................// các marco#define led1 P1_0...........// các hàm ngắtvoid inter_1 interrupt 1 using 3{}..........// các hàm bình thườngvoid delay( unsigned char time){///}..............// chương trình chínhvoid main(void){//lenh}Trên đây tôi đã phân tích cấu trúc của chương trình viết cho 8051 rồi. Chi tiếttừng vấn đề tôi sẽ đưa sau.Có lẽ người dùng Keil C lần đầu tiên gặp trở ngại khi dùng #include đó là khôngbiết liệt kê các header file nào cần thiết cho ứng dụng của mình.Để có thể biết được header file nào dùng cho vi điều khiển của mình thì các bạnmở thư mục cài Keil C ra, tìm đến thư mục C51/INC bạn sẽ thấy một loạt cácthư mục của các hãng như Atmel,Dalas,.. Tôi xin lấy ví dụ một file regx51.htrong thư mục /Atmel. Bạn mở file đó lên sẽ thấy đầu đề của nó như sau:/*--------------------------------------------------------------------------AT89X51.HHeader file for the low voltage Flash Atmel AT89C51 and AT89LV51.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/Chứng tỏ file này dùng cho con AT89C51 và AT89LV51 rồi. Khi đó bạn sẽ thêmheader file này vào chương trình của mình.Còn làm thế nào để mình làm việc với các thành ghi, các port như trong ASM bâygiờ. Câu trả lời ở trong file này:#ifndef __AT89X51_H__#define __AT89X51_H__/*------------------------------------------------Byte Registers ; Định nghĩa các thành ghi ở các địa chỉ trong RAM------------------------------------------------*/sfr P0 = 0x80;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr P1 = 0x90;sfr SCON = 0x98;sfr SBUF = 0x99;sfr P2 = 0xA0;sfr IE = 0xA8;sfr P3 = 0xB0;sfr IP = 0xB8;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;/*------------------------------------------------P0 Bit Registers ; Định nghĩa các cổng của Port 0 vì port này là thanh ghi 8 bítđịnh được địa chỉ trực tiếp------------------------------------------------*/sbit P0_0 = 0x80;sbit P0_1 = 0x81;sbit P0_2 = 0x82;sbit P0_3 = 0x83;sbit P0_4 = 0x84;sbit P0_5 = 0x85;sbit P0_6 = 0x86;sbit P0_7 = 0x87;/*------------------------------------------------PCON Bit Values------------------------------------------------*/#define IDL_ 0x01#define STOP_ 0x02#define PD_ 0x02 /* Alternate definition */#define GF0_ 0x04#define GF1_ 0x08#define SMOD_ 0x80/*------------------------------------------------TCON Bit Registers------------------------------------------------*/sbit IT0 = 0x88;sbit IE0 = 0x89;sbit IT1 = 0x8A;sbit IE1 = 0x8B;sbit TR0 = 0x8C;sbit TF0 = 0x8D;sbit TR1 = 0x8E;sbit TF1 = ...
Nội dung trích xuất từ tài liệu:
Lập trình C bằng Keil C Lập trình C bằng Keil CI. Cấu trúc chương trình C cho 8051Để có thể hiểu được những vấn đề tôi viết thì yêu cầu bạn phải có kiến thứccăn bản về C như hàm con, sử dụng con trỏ, các kiểu dữ liệu(int, float,double,char, unsigned char,..)Tôi xin đi vào bài thứ nhất. Nói về cấu trúc cho chương trình C:1/Phần đầu tiên là liệt kê các header file mà các bạn dùng bằng từ khóa#includetên header filehoặc#include< tên header file>Khi bạn viết theo cách thứ nhất thì trình biên dịch sẽ tìm kiếm file .h hoặc .c nàytrong thư mục hiện tại chứa dự án của bạn, nếu không có thì sẽ tìm kiếm trongthư mục Inc trong thư mục cài đặt KeilC.Viết theo cách thứ hai thì trình biên dịch sẽ tìm luôn trong thư mục /INC luôn.Để có thể sử dụng đúng các file .h cho các vi điều khiển của mình thì bạn nênmở thư mục /inc trong thư mục này có các thư mục con như tên của hãng sảnxuất. Ví dụ như của Atmel thì bạn tìm trong thư mục /Atmel thì sẽ thấy đượcfile reg51.h ,.. Bạn mở từng file nên mà khám phá sẽ có nhiều điều hay đấy.2/Định nghĩa các macro cho chương trình sáng sủa. Việc định nghĩa này đượcdùng bằng từ khóa #defineVí dụ: bạn định nghĩa led1 là P1_0 tức là led1 được nối với chân 0 của Port 1.#define led1 P1_03/ Các hàm ngắt như ngắt timer0, timer1, ngắt nối tiếp, ngắt ngoài. Tôi sẽ nói chitiết cái này sau. Còn bây giờ tôi chỉ giới thiệu sơ sơ thôi.Ví dụ bạn dùng ngắt nối tiếp là ngắt 4 trong bảng vector ngắt thì hàm sẽ có dạngnhư sau:void inter_4(void) interrupt 4 using 2{// làm gì thì làm ở đây}Cú pháp các ngắt khác cũng tương tự chỉ thay số 4 bằng số thứ tự của ngắt trongbảng vector ngắt.4/ Các hàm con như Delay, khởi tạo,.. như:void delay( unsigned char time){//code viết ở đây}5/ Chương trình chính:void main(void){// viết mã ở đây}Đối tượng của chương trình là vi điều khiển nên hàm main không có giá trị trảvề và không có tham số đưa vào. Và thực chất cũng chẳng cần biến toàn cục vìta chỉ cần viết 1 file thôi. Nên tôi không đưa biến toàn cục vào đây.Kết luận, chương trình của chúng ta sẽ có dạng như sau:// liệt kê header file#inlucdetên header file....................// các marco#define led1 P1_0...........// các hàm ngắtvoid inter_1 interrupt 1 using 3{}..........// các hàm bình thườngvoid delay( unsigned char time){///}..............// chương trình chínhvoid main(void){//lenh}Trên đây tôi đã phân tích cấu trúc của chương trình viết cho 8051 rồi. Chi tiếttừng vấn đề tôi sẽ đưa sau.Có lẽ người dùng Keil C lần đầu tiên gặp trở ngại khi dùng #include đó là khôngbiết liệt kê các header file nào cần thiết cho ứng dụng của mình.Để có thể biết được header file nào dùng cho vi điều khiển của mình thì các bạnmở thư mục cài Keil C ra, tìm đến thư mục C51/INC bạn sẽ thấy một loạt cácthư mục của các hãng như Atmel,Dalas,.. Tôi xin lấy ví dụ một file regx51.htrong thư mục /Atmel. Bạn mở file đó lên sẽ thấy đầu đề của nó như sau:/*--------------------------------------------------------------------------AT89X51.HHeader file for the low voltage Flash Atmel AT89C51 and AT89LV51.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/Chứng tỏ file này dùng cho con AT89C51 và AT89LV51 rồi. Khi đó bạn sẽ thêmheader file này vào chương trình của mình.Còn làm thế nào để mình làm việc với các thành ghi, các port như trong ASM bâygiờ. Câu trả lời ở trong file này:#ifndef __AT89X51_H__#define __AT89X51_H__/*------------------------------------------------Byte Registers ; Định nghĩa các thành ghi ở các địa chỉ trong RAM------------------------------------------------*/sfr P0 = 0x80;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr P1 = 0x90;sfr SCON = 0x98;sfr SBUF = 0x99;sfr P2 = 0xA0;sfr IE = 0xA8;sfr P3 = 0xB0;sfr IP = 0xB8;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;/*------------------------------------------------P0 Bit Registers ; Định nghĩa các cổng của Port 0 vì port này là thanh ghi 8 bítđịnh được địa chỉ trực tiếp------------------------------------------------*/sbit P0_0 = 0x80;sbit P0_1 = 0x81;sbit P0_2 = 0x82;sbit P0_3 = 0x83;sbit P0_4 = 0x84;sbit P0_5 = 0x85;sbit P0_6 = 0x86;sbit P0_7 = 0x87;/*------------------------------------------------PCON Bit Values------------------------------------------------*/#define IDL_ 0x01#define STOP_ 0x02#define PD_ 0x02 /* Alternate definition */#define GF0_ 0x04#define GF1_ 0x08#define SMOD_ 0x80/*------------------------------------------------TCON Bit Registers------------------------------------------------*/sbit IT0 = 0x88;sbit IE0 = 0x89;sbit IT1 = 0x8A;sbit IE1 = 0x8B;sbit TR0 = 0x8C;sbit TF0 = 0x8D;sbit TR1 = 0x8E;sbit TF1 = ...
Tìm kiếm theo từ khóa liên quan:
Lập trình C Ngôn ngữ C Ngôn ngữ lập trình Ngôn ngữ lập trình C Tài liệu lập trình C bằng Keil C Chương trình CTài liệu có liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 315 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 309 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 292 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 248 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 246 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 242 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 231 1 0 -
101 trang 211 1 0
-
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 204 0 0 -
Thiết kế mạch logic bằng Verilog - HDL
45 trang 195 0 0