Bài 1: Họ vi điều khiển MCS51I Tổng quan về họ 80511.1 Tóm tắt về lịch sử của 8051Vào năm 1981. Hãng Intel giới thiệu một số bộ vi điều khiển được gọi là 8051. Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chíp. Lúc ấy nó được coi là một “hệ thống trên chíp”. 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm. Dữ liệu lớn hơn 8 bit được chia ra thành các dữ liệu 8 bit để cho xử lý. 8051 có tất cả 4 cổng vào ra IO mỗi cổng rộng 8 bit (xem hình 1). Mặc dù 8051 có thể có một ROM trên chíp cực đại là 64 K byte, nhưng các nhà sản xuất lúc đó đã cho xuất xưởng chỉ với 4K byte ROM trên chíp. Điều này sẽ được bàn chi tiết hơn sau này.
Trang 1Bài 1: Họ vi điều khiển MCS-51
I - Tổng quan về họ 8051
1.1 Tóm tắt về lịch sử của 8051
Vào năm 1981 Hãng Intel giới thiệu một số bộ vi điều khiển được gọi là 8051
Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, mộtcổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chíp Lúc ấy nóđược coi là một “hệ thống trên chíp” 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ cóthể làm việc với 8 bit dữ liệu tại một thời điểm Dữ liệu lớn hơn 8 bit được chia ra thànhcác dữ liệu 8 bit để cho xử lý 8051 có tất cả 4 cổng vào - ra I/O mỗi cổng rộng 8 bit
(xem hình 1) Mặc dù 8051 có thể có một ROM trên chíp cực đại là 64 K byte, nhưng
các nhà sản xuất lúc đó đã cho xuất xưởng chỉ với 4K byte ROM trên chíp Điều này sẽđược bàn chi tiết hơn sau này
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất
và bán bất kỳ dạng biến thế nào của 8051 mà họ thích với điều kiện họ phải để mã lạitương thích với 8051 Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc
độ khác nhau và dung lượng ROM trên chíp khác nhau được bán bởi hơn nửa các nhàsản xuất Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về tốc
độ và dung lương nhớ ROM trên chíp, nhưng tất cả chúng đều tương thích với 8051 banđầu về các lệnh Điều này có nghĩa là nếu ta viết chương trình của mình cho một phiênbản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà không phân biệt nó từhãng sản xuất nào
3216
Bảng 1: Các đặc tính cơ bản của 8051.
1.2 Bộ ví điều khiển 8051
Bộ vi điều khiển 8051 là thành viên đầu tiên của họ 8051 Hãng Intel ký hiệu nó
như là MCS51 Bảng 1 trình bày các đặc tính của 8051
1.3 Các thành viên khác của họ 8051
Trang 2Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031.
1.1.1 Bộ vi điều khiển 8052
Bộ vi điều khiển 8052 là một thành viên khác của họ 8051, 8052 có tất cả cácđặc tính chuẩn của 8051 ngoài ra nó có thêm 128 byte RAM và một bộ định thời nữa.Hay nói cách khác là 8052 có 256 byte RAM và 3 bộ định thời Nó cũng có 8K byteROM Trên chíp thay vì 4K byte như 8051
Một thành viên khác nữa của 8051 là chíp 8031 Chíp này thường được coi như
là 8051 không có ROM trên chíp vì nó có OK byte ROM trên chíp Để sử dụng chíp này
ta phải bổ xung ROM ngoài cho nó ROM ngoài phải chứa chương trình mà 8031 sẽ nạp
và thực hiện So với 8051 mà chương trình được chứa trong ROM trên chíp bị giới hạnbởi 4K byte, còn ROM ngoài chứa chương trinh được gắn vào 8031 thì có thể lớn đến64K byte Khi bổ xung cổng, như vậy chỉ còn lại 2 cổng để thao tác Để giải quyết vấn
đề này ta có thể bổ xung cổng vào - ra cho 8031 Phối phép 8031 với bộ nhớ và cổngvào - ra chẳng hạn với chíp 8255 được trình bày ở chương 14 Ngoài ra còn có các phiênbản khác nhau về tốc độ của 8031 từ các hãng sản xuất khác nhau
1.4 Các bộ vi điều khiển 8051 từ các hãng khác nhau
Mặc dù 8051 là thành viên phổi biến nhất của họ 8051 nhưng chúng ta sẽ thấy
nó trong kho linh kiện Đó là do 8051 có dưới nhiều dạng kiểu bộ nhớ khác nhau như
UV - PROM, Flash và NV - RAM mà chúng đều có số đăng ký linh kiện khác nhau.Việc bàn luận về các kiểu dạng bộ nhớ ROM khác nhau sẽ được trình bày ở chương 14.Phiên bản UV-PROM của 8051 là 8751 Phiên bản Flash ROM được bán bởi nhiều hãngkhác nhau chẳng hạn của Atmel corp với tên gọi là AT89C51 còn phiên bản NV-RAMcủa 8051 do Dalas Semi Conductor cung cấp thì được gọi là DS5000 Ngoài ra còn cóphiên bản OTP (khả trình một lần) của 8051 được sản xuất bởi rất nhiều hãng
Trang 31.4.1 Bộ vi điều khiển 8751
Chíp 8751 chỉ có 4K byte bộ nhớ UV-EPROM trên chíp Để sử dụng chíp này
để phát triển yêu cầu truy cập đến một bộ đốt PROM cũng như bộ xoá UV- EPROM đểxoá nội dung của bộ nhớ UV-EPROM bên trong 8751 trước khi ta có thể lập trình lại nó
Do một thực tế là ROM trên chíp đối với 8751 là UV-EPROM nên cần phải mất 20 phút
để xoá 8751 trước khi nó có thể được lập trình trở lại Điều này đã dẫn đến nhiều nhàsản xuất giới thiệu các phiên bản Flash Rom và UV-RAM của 8051 Ngoài ra còn cónhiều phiên bản với các tốc độ khác nhau của 8751 từ nhiều hãng khác nhau
1.4.2 Bộ vi điều khiển AT8951 từ Atmel Corporation
Chíp 8051 phổ biến này có ROM trên chíp ở dạng bộ nhớ Flash Điều này là lýtưởng đối với những phát triển nhanh vì bộ nhớ Flash có thể được xoá trong vài giâytrong tương quan so với 20 phút hoặc hơn mà 8751 yêu cầu Vì lý do này mà AT89C51
để phát triển một hệ thống dựa trên bộ vi điều khiển yêu cầu một bộ đốt ROM mà có hỗtrợ bộ nhớ Flash Tuy nhiên lại không yêu cầu bộ xoá ROM Lưu ý rằng trong bộ nhớFlash ta phải xoá toàn bộ nội dung của ROM nhằm để lập trình lại cho nó Việc xoá bộnhớ Flash được thực hiện bởi chính bộ đốt PROM và đây chính là lý do tại sao lại khôngcần đến bộ xoá Để loại trừ nhu cầu đối với một bộ đốt PROM hãng Atmel đang nghiêncứu một phiên bản của AT 89C51 có thể được lập trình qua cổng truyền thông COM củamáy tính IBM PC
Bảng 3: Các phiên bản của 8051 từ Atmel (Flash ROM).
Chữ C trong ký hiệu AT89C51 là CMOS
Cũng có những phiên bản đóng vỏ và tốc độ khác nhau của những sản phẩm trênđây Xem bảng 1.6 Ví dụ để ý rằng chữ “C” đứng trước số 51 trong AT 89C51 -12PC là
ký hiệu cho CMOS “12” ký hiệu cho 12 MHZ và “P” là kiểu đóng vỏ DIP và chữ “C” cuối cùng là ký hiệu cho thương mại (ngược với chữ “M” là quân sự ) Thông thường AT89C51 - 12PC rất lý tưởng cho các dự án của học sinh, sinh viên
Trang 4AT89C51-12PC 42MHZ 40 DTP Thương mại
Bảng 4: Các phiên bản 8051 với tốc độ khác nhau của Atmel.
1.4.3 Bộ vi điều khiển DS5000 từ hãng Dallas Semiconductor
Một phiên bản phổ biến khác nữa của 8051 là DS5000 của hãng DallasSemiconductor Bộ nhớ ROM trên chíp của DS5000 ở dưới dạng NV-RAM Khả năngđọc/ ghi của nó cho phép chương trình được nạp vào ROM trên chíp trong khi nó vẫn ởtrong hệ thống (không cần phải lấy ra) Điều này còn có thể được thực hiện thông quacổng nối tiếp của máy tính IBM PC Việc nạp chương trình trong hệ thống (in-system)của DS5000 thông qua cổng nối tiếp của PC làm cho nó trở thành một hệ thống pháttriển tại chỗ lý tưởng Một ưu việt của NV-RAM là khả năng thay đổi nội dung củaROM theo từng byte tại một thời điểm Điều này tương phản với bộ nhớ Flash vàEPROM mà bộ nhớ của chúng phải được xoá sạch trước khi lập trình lại cho chúng
128128128128
32323232
2222
6666
5V5V5V5V
40404040
Bảng 5: Các phiên bản 8051 từ hãng Dallas Semiconductor.
Chữ “T” đứng sau 5000 là có đồng hồ thời gian thực
Lưu ý rằng đồng hồ thời gian thực RTC là khác với bộ định thời Timer RTC tạo
và giữ thời gian l phút giờ, ngày, tháng - năm kể cả khi tắt nguồn
Còn có nhiều phiên bản DS5000 với những tốc độ và kiểu đóng gói khác nhau.( Xem bảng 1.8) Ví dụ DS5000-8-8 có 8K NV-RAM và tốc đọ 8MHZ Thông thườngDS5000-8-12 hoặc DS5000T-8-12 là lý tưởng đối với các dự án của sinh viên
8MHz12MHz8MHz8MHz (with RTC)12MHz
12MHz (with RTC)
Bảng 6:Các phiên bản của DS5000 với các tốc độ khác nhau
Trang 51.4.4 Phiên bản OTP của 8051
Các phiên bản OTP của 8051 là các chíp 8051 có thể lập trình được một lần vàđược cung cấp từ nhiều hãng sản xuất khác nhau Các phiên bản Flash và NV-RAMthường được dùng để phát triển sản phẩm mẫu Khi một sản pohẩm được thiết kế vàđược hoàn thiện tuyệt đối thì phiên bản OTP của 8051 được dùng để sản hàng loạt vì nó
rẻ hơn rất nhiều theo giá thành một đơn vị sản phẩm
1.4.5 Họ 8051 từ Hãng Philips
Một nhà sản xuất chính của họ 8051 khác nữa là Philips Corporation Thật vậy, hãng này có một dải lựa chọn rộng lớn cho các bộ vi điều khiển họ 8051 Nhiều sản phẩm của hãng đã có kèm theo các đặc tính như các bộ chuyển đổi ADC, DAC, cổng I/0 mở rộng và cả các phiên bản OTP và Flash
II - Giới thiệu Kiến trúc Vi điều khiển 8051
2.1 Tổ chức bộ nhớ
Các vi điều khiển thuộc họ 8051 đều tổ chức thành 2 không gian chương trình và
dữ liệu Kiến trúc vi xử lý 8 bit của 8051 này cho phép truy nhập và tính toán nhanh hơnđối với không gian dữ liệu nhờ việc phân chia 2 không gian bộ nhớ chương trình và dữliệu như trên Tuy nhiên bộ nhớ ngoài được truy nhập bởi hệ thống 16 bit địa chỉ vẫn cóthể thực hiện nhờ thanh ghi con trỏ
Bộ nhớ chương trình (ROM, EPROM) là bộ nhớ chỉ đọc, có thể mở rộng tối đa64Kbyte Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích hợp sẵn trong chip
có kích thước nhỏ nhất là 4kByte Với các vi điều khiển không tích hợp sẵn bộ nhớchương trình trên chip, buộc phải thiết kế bộ nhớ chương trình bên ngoài Ví dụ sử dụngEPROM: 2764 (64Kbyte), khi đó chân PSEN phải ở mức tích cực (5V)
Giới thiệu:
8051 là vi điều khiển đầu tiên của họ vi điều khiển MCS51 được Intel sản xuất vào năm
1980 Họ MCS51 là họ 8-bit có khả năng định địa chỉ 64KB bộ nhớ chương trình và 64KB bộ nhớ dữ liệu
Một số chip 8051 thông dụng:
2.2 Kiến trúc phần cứng:
Trang 62.3 Cấu hình chân:
Trang 7- VCC: Điện áp cung cấp.
- GND: Được nối đất
- RST : ngõ vào RESET, chân RESET ở mức cao trong 2 chu kỳ máy khi bộ dao động đang chạy sẽ RESET chip
- PSEN (Program Store ENable): được nối với chân OE của chip dữ liệu bên ngoài,
- ALE : (ALE : Adress Latch Enable) là tín hiệu điều khiển xuất ra của 8051, nó cho phép phân kênh giữa bus địa chỉ và bus dữ liệu trên PORT0
- EA : (External Access): chọn bộ nhớ giao tiếp EA=1: chọn bộ nhớ nội, EA=0: chọn bộnhớ ngoại
Cấu hình chọn bộ nhớ ngoài:
Trang 8- PORT 0:
Port 0 là một cổng 8 bit I/O 2 chiều, Khi mức logic 1 được viết vào các PIN của PORT
0, Pin đó có thể được sử dụng là cổng vào trở kháng cao
Port 0 cũng có thể được cấu hình thành bus ghép kênh 8 bit địa chỉ/dữ liệu thấp trong quá trình truy nhập bộ nhớ ngoài, ở chế độ này các PIN của PORT 0 sẽ được kéo lên bêntrong
Ngoài ra PORT 0 cũng được sử dụng để nạp dữ liệu cho chip
- PORT 1:
Port 1 là cổng I/O 2 chiều có trở treo bên trong Khi mức logic 1 được viết vào PIN của PORT 1, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thể được sử dụng là cổng vào
Ngoài ra các PIN P1.0 và P1.1 có thể được cấu hình là đầu vào của bộ Timer 2
(AT89S52, AT89C52) Các pin P1.5, P1.6, P1.7 (AT89S51, AT89S52) lần lượt là các PIN MOSI, MISO, SCK khi sử dụng để nạp cho chip qua ISP (In- System Programing)
- PORT 2 :
Port 2 là cổng I/O 2 chiều có trở treo bên trong Khi mức logic 1 được viết vào PIN của PORT 2, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thể được sử dụng là cổng vào
Port 2 cũng có thể được cấu hình thành bus ghép kênh 8 bit địa chỉ cao trong quá trình truy nhập bộ nhớ ngoài với 16 bit địa chỉ
- PORT 3 :
Port 3 là cổng I/O 2 chiều có trở treo bên trong Khi mức logic 1 được viết vào PIN của PORT 3, PIN đó được kéo lên bởi 1 trở treo bên trong, và có thể được sử dụng là cổng vào
Ngoài ra các Pin của PORT 3 cũng có thêm các chức năng đặc biệt khác:
Trang 9Bài 2: NGÔN NGỮ C
I Ngôn ngữ C cho vi điều khiển
1, Giới thiệu ngôn ngữ C
Trong kỹ thuật lập trình vi điều khiển nói chung, ngôn ngữ lập trình được sửdụng thường chia làm 2 loại: Ngôn ngữ bậc thấp và Ngôn ngữ bậc cao
Ngôn ngữ bậc cao là các ngôn ngữ gần vơi ngôn ngữ con người hơn, do đó việclập trình bằng các ngôn ngữ này trở nên dễ dàng và đơn giản hơn Có thể kể đến một
số ngôn ngữ lập trình bậc cao như C, Basic, Pascal… trong dó C là ngôn
ngữ thông dụng hơn cả trong kỹ thuật vi điều khiển Về bản chất, sử dụng các ngônngữ này thay cho ngôn ngữ bậc thấp là giảm tải cho lập trình viên trong việc nghiêncứu các tập lệnh và xây dựng các cấu trúc giải thuật Chương trình viết bằng ngôn ngữbậc cao cũng sẽ được một phần mềm trên máy tính gọi là trình biên dịch (Compiler)chuyển sang dạng hợp ngữ trước khi chuyển sang mã máy
Khi sử dụng ngôn ngữ C người lập trình không cần hiểu sâu sắc về cấu trúc của
bộ vi điều khiển Có nghĩa là với một người chưa quen với một vi điểu khiển chotrước sẽ xây dựng được chương trình một cách nhanh chóng hơn, do không phải mấtthời gian tìm hiểu kiến trúc của vi điều khiển đó Và việc sử dụng lại các chương trình
đã xây dựng trước đó cũng dễ dàng hơn, có thể sử dụng toàn bộ hoặc sửa chữa mộtphần
Trang 10- Cú pháp: Kiểu_dữ_liệu Vùng_nhớ Tên_biến _at_ Đia_chỉ; Ví dụ:
Unsigned char data x;
- Khi khai báo biến có thể gán luôn cho biến giá trị ban đầu
vùng nhớ trình dịch Keil C sẽ mặc định đó là vùng nhớ DATA
Vùng
nhớ
Ý nghĩa
CODE Bộ nhớ mã nguồn chương trình
DATA Bộ nhớ dữ liệu gồm 128 Byte thấp của RAM trong vi điều khiển
BDATA Bộ nhớ dữ liệu có thê định địa chỉ bit, nằm trong vùng nhớ DATA
IDATA Bộ nhớ dữ liệu gồm 128 Byte cao của RAM trong vi điều khiển chỉ có ở
một số dòng vi điều khiển sau nàyPDATA Bố nhớ dữ liệu ngoài gồm 256 Byte, được truy cập bởi địa chỉ đặt trên P0XDATA Bộ nhớ dữ liệu ngoài có dung lượng có thể lên đến 64 KB, được truy cập
bởi địa chỉ đặt trên P0 và P2
* Định nghĩa lại kiểu
- Cú pháp: typedef Kiễu_dữ_liệu Tên_biến;
- Ten_biến sau này sẽ được sử dụng như một kiểu dữ liệu mới và có thể dùng để khai báo các biến khác
Trang 11Mảng có thể là mảng một chiều hoặc mảng nhiều chiều
Khai báo:
- Cú pháp: Tên_kiểu Vùng_nhớ Tên_mảng[số_phần_tử_mảng];
Khi bỏ trống số phần tử mảng ta sẽ có mảng có số phần tử bất kì
Ví dụ:
Unsigned int data a[5],b[2] [3];
Với khai báo trên ta sẽ có: mảng a là mảng một chiều 5 phần tử Mảng b là mảng hai chiều, tổng số phần tử là 6
Chỉ số của mảng bắt đầu từ số 0 Mảng có bao nhiêu chiều phải cung cấp đầy
đủ bấy nhiêu chỉ sô
Con trỏ là một biến dùng để chứa địa chỉ mà không chứa giá trị, hay giá trị củacon trỏ chính là địa chỉ khoảng nhớ mà nó trỏ tới
Với các vùng nhớ cụ thể con trỏ tới vùng nhớ đó chiếm dung lượng phụ thuộcvào độ lớn của vùng nhớ đó Con trỏ tổng quát khi không xác định trước vùng nhớ sẽ
có dung lượng lớn nhất vì vậy tốt nhất nên sử dụng con trỏ cụ thể
Loại con trỏ Kích thướcCon trỏ tổng quát 3 byteCon trỏ XDATA 2 byteCon trỏ CODE 2 byteCon trỏ DATA 1 byte
Trang 12Con trỏ IDATA 1 byteCon trỏ PDATA 1 byte
Khai báo biến con trỏ:
- Cú pháp: Kiểu_Dữ_liệu Vùng_nhớ *Tên_biến;
- Ví dụ:
int *int_ptr;
long data *long_ptr;
- khi không chỉ rõ vùng nhớ con trỏ sẽ được coi là con trỏ tổng quát.2.2.1 Phép toán số học
(a=9, b=2 → X=1)2.2.2 Phép toán Logic
AND: &
OR: |
NOT: !
2.2.3 Các phép toán so sánh:
Trang 132.2.4 Phép toán thao tác Bit
Trang 142.3.1 Cấu trúc chương
trình
* Cấu trúc
1 Khai báo chỉ thị tiền xử lý
2 Khai báo các biến toàn cục
3 Khai báo nguyên mẫu các hàm
Khai báo biến toàn cục
Unsigned char code Led_arr[3];
Unsigned char data dem; Unsigned int xdata X;
Khai báo nguyên mẫu hàm
Void delay(unsigned int n); bit kiemtra(unsigned int a);
void delay(unsigned int n){
Khai báo biến cục bộ; Mãchương trình trễ;
}Xây dựng các hàm và chương trình chính
Void main(){
Khai báo biến cụ bộ;
Mã chương trình chính;
}Bit kiemtra(unsigned int a){
Khai báo biến cục bô;
Mã chương trình kiểm tra biến a;}
Trang 15Chú ý:Hàm không khai báo nguyên mẫu phải được xây dựng trước hàm có lờigọi hàm đó Ở ví dụ trên do hàm “bit kiemtra(unsigned int a)” đã được khaibáo nguyên mẫu hàm ở trên nên có thể xây dựng hàm ở bất kì vị trí nào trongchương trình.
2.3.2 Chỉ thị tiền xử lý
Các chỉ thị tiền sử lý không phải là các lệnh của ngôn ngữ C mà là các lệnhgiúp cho việc soạn thảo chương trình nguồn C trước khi biên dịch Khi dịch mộtchương trình C thì không phải chính bản chương trình nguồn mà ta soạn thảo đượcdịch Trước khi dịch, các lệnh tiền xử lý sẽ chỉnh lý bản gốc, sau đó bản chỉnh lý này
Chú thích trong chương trình sẽ không ảnh hưởng đến chương trình mà ta soạnthảo vì trình dịch sẽ bỏ qua tất cả lời chú thích khi biên dịch chương trình sang mãmáy
Trang 16// Đoạn chương trình 1
// Đoạn chương trình 2Giải thích: nếu dieu_kien đúng thì xử lí “Đoạn chương trình 1” bên trong cònsai thì x ử l ý “Đoạn chương trình 1”
+ Câu lệnh lựa chọn:
Cấu trúc: switch(bien)
{case gia_tri_1: {//các câu lệnh break;}
case gia_tri_2: {//các câu lệnh break;}
Trang 17case gia_tri_3: {//các câu lệnh break;}
………
case gia_tri_n: {//các câu lệnh break;}
}Giải thích: tuỳ vào biến có gia_tri_1 thì thực hiện các câu lệnh tương ứng rồi sau
đó thoát khỏi cấu trúc nhờ câu lệnh break
Biến có gia_tri_2 thì thực hiện câu lệnh tương ứng rồi thoát
Trang 18Giả thích: thực hiện lặp các câu lệnh khi điều kiện đúng nếu điều kiện saithì thoát khỏi vòng lặp.
+ Vòng lặp không xác định do while:
Cấu trúc: do
{// các câu lệnh} while(dieu_kien);
Giả thích: thực hiện lặp các câu lệnh sau đó kiểm tra điều kiện nếu đúng, nếusai thì thoát khỏi vòng lặp
Trang 19Bài 3: HƯỚNG DẪN SỬ DỤNG PHẦN MỀM KEIL C
3.1 Khởi tạo cho Project.
Để tạo 1 project mới chọn project → New project như sau:
Hộp thoại create new project hiện ra như sau:
Trang 20Đánh tên và chuyển đến thư mục bạn lưu project.bạn nên tạo mỗi một thư mục cho 1
project rồi chọn save.
Hộp thoại sau hiện ra:
Trang 21Trong này có 1 loạt các hãng điện tử sản xuất 8051 bạn lập trình cho con nào thì chọn con đấy, kích chuột vào dấu + để mở rộng các con IC của các hang ở đây ta lậptrình cho AT89C51 của hang ATMEN nên ta chọn như trên.
Khi chọn chip thì ngay lập tức 1 bảng hiện ra 1 số tính năng của chip các bạn có thểnhìn thấy: 8051 based fully static 24Mhz … nhập OK, chọ câu trả lời NO khi đượchỏi “copy standard 8051 startup code to project and addfile to project” vì nếu chonYES chỉ làm cho file lập trình của bạn thêm nặng
Để tạo một file code các bạn chọ file→new hoặc ấn ctrl+N như sau:
Cửa sổ text1 hiện ra Tiếp theo bạn chọn File → save As hoặc Ctrl+S, để lưu File
mặc dù chưa có gì như sau:
Trang 22Được cửa sổ sau:
Các bạn nhập tên vào text box file name.chú ý tên gì cũng được nhưng không đượcthiếu đuôi mở rộng C, và nhấn SAVE
Trong ô bên trái màn hình, cửa sổ PROJECT WORKSPACE, các bạn mở rộng cái target 1 ra như sau:
Trang 23Nhấp chuột phải nên SOURCE GROUP, chọn Add file to Group “Source Group 1” hộp thoại hiện ra chọn file C mà các bạn vừa SAVE rồi nhấn Add 1lấn rồi nhấn
Close nếu bạn nhấn Add 2 lần nó sẽ thong báo là file đã add bạn chỉ việc OK rồi nhấnClose Được như sau:
Bây giờ trong hình nhìn thấy trong Source Group 1 có file VIDU.C các bạn nhấpchuột phải vào vùng soạn thảo file VIDU.C để thêm file thư viện Chon Insert
“#include<REGX51.H>”
Trang 24Phần cuối cùng của công việc khởi tạo là các bạn viết lời giải thích cho dự án của mình phần này rất cần thiết vì nó để người khác hiểu mình làm gì trong project này vàkhi mình cần sử dụng lại code đọc lại còn biết nó là cái gì.
3.2 Soạn thảo chương trình.
Các bạn viết thử 1 chương trình làm ví dụ khi viết xong mỗi dòng lệnh nên giải thíchdòng lệnh đó làm gì Ví dụ:
Trang 253.3 Biên dịch một chương trình.
Sau khi soạn thảo xong nhấn Ctrl+S để nhớ Nhớ xong các bạn biên dịch chươngtrình bắng cách ấn phím F7 hoặc chọn Build target là biểu tượng ngay trên cửa sổWorkspace, như trên hình:
Trang 26Để biên dịch chương trình thành file HEX các bạn chọn: Project→option for
‘target 1’ như hình vẽ:
Trang 27Trong hộp thoại hiện ra, hãy check vào Creat HEX File như chỉ dẫn:
chọn thẻ táp target nhập lại tần số thạch anh là 12Mhz
Để mô phỏng các bạn chon Debug→Start/stop debug session hoặc ấn Ctrl+F5, hoặc
nhấn vào Icon chữ D màu đỏ trong cái kính lúp trên thanh công cụ
Trang 28Để hiển thi các cổng, các thanh ghi các bạn chon trong peripherals.
Các bạn thấy 1 cửa sổ nhỏ Parallel Port xuất hiện đó là cái để mô phỏng cho 1 cổng của AT89C51 dấu tick tương đương chân ở mức cao (5V), không tick chân ở mức thấp 0V.trong menu peripherals còn có các ngoại vi khác như timer, interrupt, serial
Trang 29Để chạy chương trình các bạn ấn chuột phải vào màn hình soạn thảo, rồi ấn F11.mỗi làn ấn sẽ chạy 1 lệnh.khi debug nếu các bạn chờ hàm delay lâu quá
1000 lần lặp các bạn nhấn ctrl+F11 để bỏ qua hàm
hoặc ấn F10 để chạy từng dòng lệnh