Vi điều khiển và vi xử lý có rất nhiều điểm khác nhau. Sự khác biệt đầu tiên và quan trọng nhất chính là chức năng của nó. Để bộ vi xử lý có thể hoạt động được, các thành phần ngoại vi khác như bộ nhớ phải được thêm vào nó. Mặc dù các bộ vi xử lý được coi là những bộ máy tính toán mạnh mẽ, nhưng điểm yếu của chúng là chúng không được thiết kế để giao tiếp trực tiếp với các thiết bị ngoại vi. Để giao tiếp với môi trường ngoại vi, bộ vi xử lý phải cần thêm các bo mạch đặc biệt khác bên ngoài. Bộ vi xử lý được ví như trái tim thuần khiết của các máy tính, và nó không thể hoạt động một mình được. Đây là đặc trưng của các bộ vi xử lý, và điều này vẫn giữ nguyên cho đến ngày hôm nay. Đối lập với vi xử lý, vi điều khiển được thiết kế để gói gọn tất cả trong một, bao gồm bộ vi xử lý, các thành phần hỗ trợ cho bộ vi xử lý, các bo mạch cần thiết để kết nối với các thiết bị ngoại vi bên ngoài. Chúng ta không cần thêm bất kỳ một thành phần nào khác để thực hiện các chức năng của vi điều khiển, vì tất cả các bo mạch cần thiết nếu không thuộc về các thiết bị ngoại vi thì đều đã được tích hợp trong chính nó. Điều này giúp tiết kiệm thời gian và không gian cần thiết để thiết kế một thiết bị hoàn chỉnh một hệ thống nhúng.
Trang 2LẬP TRÌNH VI ĐIỀU KIỂN 8051 SỬ DỤNG NGÔN NGỮLẬP
TRÌNH C GIAO TIẾP NGẮT VÀ TRUYỀN THÔNG
KIẾN TRÚC VÀ
TỔ CHỨC MÁY TÍNH
THỰC HIỆN BỞI NHÓM 4
Trang 3Vi điều khiển 8051
Trang 41 CẤU HÌNH CỦA VĐK 8051
2 CẤU TRÚC CỦA 8051
3 SƠ ĐỒ CHÂN CỦA 8051
4 CẤU HÌNH TỐI THIỀU ĐỂ 8051
CÓ THỂ HOẠT ĐỘNG ĐƯỢC
Trang 5Hệ vi xử lí = CPU + bộ nhớ + phối ghép I/O 8051 có thể coi là một hệ vi xử lí trên 1 chip
Trang 6• Giao tiếp nối tiếp UART ( theo chế độ UART)
• Bộ điều khiển ngắt với 5 nguồn ngắt
• Bộ xử lý bit với 210 bit
• Lệnh nhân/ chia 4MC
Trang 7Central Processor Unit (CPU)
• CPU là bộ não trung tâm có nhiệm vụ theo dõi và điều khiển tất cả cá hoạt động của vi điều khiển CPU đọc
và thực thi chương trình trong ROM
Bus: là tập các dây nối để liên kết các thành phần,
truyền lệnh, địa chỉ, hoặc dự liệu
CẤU TRÚC BÊN TRONG CỦA 8051
Trang 8Input/Output Port
• Để kết nối với các thiết bị khác, cần có các cổng vào/ra dữ liệu I/O 8051 có bốn cổng vào/ra 8 bit, là P0, P1, P2, P3
Timers/Counters:
• 8051 có các bộ đếm/định thời 16bit Dùng để định thời gian hoặc đếm sự kiện
Interupts:
• Là một số sự kiện khẩn cấp bên trong hoặc bên
ngoài bộ vi điều khiển xảy ra, được vi điều khiển tạm dừng thực hiện chương trình hiện tại, phục vụ ngay lập tức nhiệm vụ mà ngắt yêu cầu
• Có 6 nguồn ngắt: 2 ngắt ngoài, 2 ngắt timer, 1 ngắt cổng nối tiếp, và 1 ngắt reset
CẤU TRÚC BÊN TRONG CỦA 8051
Trang 9SƠ ĐỒ CHÂN CỦA 8051 (AT89S52)
Trang 101 Chân 20 cấp GND
2 Chân 40 cấp nguồn Vcc 5V
3 Chân 9 Nối với mạch reset
4 Chân 18,19 Nối với mạch tạo dao động
5 Chân 31 Nối với Vcc, để chạy chương
trình lưu trữ trong bộ nhớ trong
6 Nếu P0 muốn làm cổng vào thì cần nối
với trở thanh 103 kéo lên Vcc
Cấu hình tối thiểu để 8051 có thể hoạt động được
Trang 11TRUYỀN THÔNG NỐI TIẾP UART
Trang 133.1 CÁC CƠ SỞ CỦA TRUYỀN THÔNG NỐI TIẾP
Trong truyền thông nối tiếp dữ liệu được gửi đi từng bit một, so với truyền song song thì là một hoặc nhiều byte được truyền đi cùng một lúc
- Giảm giá thành
- Hệ thống đơn giản hơn
- Mở ra khả năng để hai máy tính ở cách xa nhau có thể truyền
Trang 143.1 CÁC CƠ SỞ CỦA TRUYỀN THÔNG NỐI TIẾP
Truyền thông dữ liệu nối tiếp sử dụng hai phương pháp là đồng bộ và không đồng bộ
Truyền đồng bộ
Thì bộ truyền và bộ thu được đồng bộ hóa qua một đường tín hiệu đồng
hồ bên ngoài Khái niệm
“đồng bộ” để chỉ sự “báo trước” trong quá trình truyền
Truyền không đồng bộ
Chỉ cần một đường truyền cho một quá trình “Khung dữ liệu” đã được chuẩn hóa bởi các thiết bị nên không cần đường xung nhịp báo trước
dữ liệu đến.
Trong 8051 có một bộ truyền dữ liệu không đồng bộ (UART - Universal Asynchronous serial Reveiver and Transmitter)
Trang 153.1.1 BAUD RATE ( TỐC ĐỘ BAUD )
Để việc truyền và nhận không đồng bộ xảy ra thành công thì các thiết bị tham gia phải “thống nhất” với nhau về khoảng thời gian dành cho 1 bit truyền, hay nói cách khác tốc độ truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ Baud Theo định nghĩa, tốc độ baud là số bit truyền trong 1 giây
Ví dụ: nếu tốc độ baud được đặt là 19200 thì thời gian dành
cho 1 bit truyền là 1/19200 ~ 52.083us
Trang 163.1.2 FRAME ( KHUNG TRUYỀN )
Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi khung truyền
Trang 183.2.1 PHẦN CỨNG
Trong 8051 có hai chân được dùng cho
truyền và nhận dữ liệu nối tiếp Hai chân này
được gọi là TxD và RxD
Để cho phép tương thích giữa các thiết bị
truyền thông dữ liệu được sản xuất bởi các
hãng khác nhau thì một chuẩn giao diện được
gọi là RS232 đã được thiết lập
Trang 193.2.1 PHẦN CỨNG
*Nối ghép 8051 tới RS232
Chuẩn RS232 được thiết lập trước họ logic
TTL rất lâu do vậy điện áp đầu vào và đầu ra
của nó không tương thích với mức TTL Trong
RS232 thì mức logic 1 được biểu diển từ điện
áp - 3v đến -25v trong khi đó mức 0 thì ứng với
điện áp + 3v đến +25v làm cho điện áp - 3v đến
+ 3v là không xác định
Trang 203.2.2 THIẾT LẬP TỐC ĐỘ BAUD TRONG 8051
Một khi các chế độ cổng nối tiếp đã được cấu hình, việc tiếp theo là chương trình cần phải cấu hình tốc độ baud cho các cổng nối tiếp
Trang 21NGẮT TRONG 8051
Trang 234.1 SƠ LƯỢC
PHÂN BIỆT CƠ CHẾ NGẮT VÀ
CƠ CHẾ THĂM DÒ- HỎI VÒNG
Trang 24I hope and I believe that this Template will your Time, Money and Reputation
Your Text Here
Khái niệm:
4.1 SƠ LƯỢC VỀ NGẮT
Ngắt(Interrupt) là một số sự kiện khẩn cấp xảy ra bên trong hoặc bên ngoài bộ vi điều khiển, buộc vi điều khiển tạm dừng việc thực hiện chương trình hiện tại chuyển sang phục
vụ ngay lập tức nhiệm vụ mà ngắt yêu cầu — nhiệm vụ này gọi là trình phục vụ ngắt
(ISR: Interrupt Service Routine)
CHƯƠNG TRÌNH CHÍNH ( MAIN PROGRAM)
Trang 25Phân biệt cơ chế ngắt và cơ chế thăm dò - hỏi vòng
4.1 SƠ LƯỢC VỀ NGẮT
Thiết bị nào muốn được phục vụ sẽ báo
cho vi điều khiển bằng cách gửi một tín
hiệu ngắt
Bộ vi điều khiển ngừng tất cả những gì
đang thực hiện để chuyển sang phục vụ
thiết bị gọi ngắt
Sau khi phục vụ ngắt xong, bộ vi điều khiển
lại quay trở lại điểm bị ngắt trước đó tiếp
Trang 26VẬY VỚI NHỮNG ĐIỂM KHÁC BIỆT TRÊN THÌ THEO CÁC BẠN CƠ CHẾ NGẮT HAY THĂM DÒ-HỎI VÒNG
ĐƯỢC ƯA CHUỘNG HƠN? VÌ SAO?
Cơ chế ngắt được ưa chuộng hơn
Trang 274.1 SƠ LƯỢC VỀ NGẮT
Ưu điểm vượt trội của ngắt so với phương pháp thăm dò- hỏi vòng( polling)
Phương pháp ngắt được ưu chuộng hơn vì:
Bộ vi điều khiển có thể phục vụ được
rất nhiều thiết bị dựa trên mức ưu tiên
Không lãng phí thời gian cho các thiết bị không cần phục vụ.
Phương pháp thăm dò:
Bộ vi điều khiển sẽ kiểm tra tất cả các thiết
bị kể cả khi thiết bị đó không cần phục vụ
Lãng phí thời gian của bộ vi điều khiển
Trang 29Trong lập trình C trên Keil c cho 8051, chúng
ta khai báo trình phục vụ ngắt theo cấu trúc sau:
Interrupt Address = (X * 8) + 3
Trang 304.3 QUY TRÌNH THỰC HIỆN MỘT NGẮT
Trang 314.3 QUY TRÌNH THỰC HIỆN MỘT NGẮT
Khi kích hoạt một ngắt bộ vi điều khiển thực hiện các bước sau:
Nó kết thúc lệnh đang thực hiện và lưu địa chỉ của lệnh kế tiếp vào ngăn xếp.
Nó cũng lưu tình trạng hiện tại của tất cả các ngắt vào bên trong
Nó nhảy đến một vị trí cố định trong bộ nhớ được gọi là bảng vector ngắt, nơi lưu giữ địa chỉ của một trình phục vụ ngắt.
Bộ vi điều khiển nhận địa chỉ ISR từ bảng vector ngắt và nhảy tới đó Nó bắt đầu thực hiện trình phục vụ ngắt cho đến lệnh cuối cùng của ISR là RETI và trở về chương trình chính từ ngắt.
Khi bộ vi điều khiển quay trở về chương trình trước đó Trước hết nó nhận địa chỉ của bộ đếm chương trình PC từ ngăn xếp bằng cách kéo 02 byte trên đỉnh của ngăn xếp vào PC Sau đó bắt đầu thực hiện tiếp các lệnh từ địa chỉ đó.
Trang 324.4 CÁC THANH GHI ĐIỀU KHIỂN NGẮT
Trang 334.4 CÁC THANH GHI ĐIỀU KHIỂN NGẮT
• Thanh ghi TCON (Timer control): chứa các cờ ngắt Timer, cờ ngắt ngoài, và bit lựa chọn kiểu ngắt ngoài
• Thanh ghi SCON (Serial control): chứa các cờ ngắt truyền thông nối tiếp
• Thanh ghi IE (Interrupt enable): thanh ghi cho phép ngắt
• Thanh ghi IP (Interrupt priority): thanh ghi ưu tiên ngắt
Trang 344.4 CÁC THANH GHI ĐIỀU KHIỂN NGẮT
7 EA (Enable All) AFh Cho phép/cấm hoạt động của cả thanh ghi
4 ES (Enable Serial) ACh Cho phép ngắt cổng truyền thông nối tiếp
3 ET1 (Enable Timer 1) ABh Cho phép ngắt Timer 1
2 EX1 (External 1) Aah Cho phép ngắt ngoài 1
1 ET0 (Enable Timer 0) A9h Cho phép ngắt Timer 0
0 EX0 (External 0) A8h Cho phép ngắt ngoài 0
Bảng: Thanh ghi cho phép ngắt IE
Trang 354.5 ƯU TIÊN NGẮT
Trang 364.5 ƯU TIÊN NGẮT
• Mỗi một nguyên nhân ngắt đều được lập trình riêng lẻ để có một trong 2 mức
ưu tiên thông qua thanh ghi chức năng đặc biệt được định địa chỉ bit , thanh ghi ưu tiên ngắt IP (interrupt priority), thanh ghi này có địa chỉ byte là 0B8H
Vậy nếu có nhiều nguồn ngắt xảy ra thì vi điều khiển sẽ ưu tiên ngắt như thế nào?
Trang 37• Khi hệ thống được thiết lập lại trạng thái ban đầu, thanh ghi IP sẽ mặc định đặt tất
cả các ngắt ở mức ưu tiên thấp Nếu có ngắt ở mức ưu tiên cao xuất hiện , trình phục vụ ngắt cho ngắt có mức ưu tiên thấp phải tạm dừng ( nghĩa là bị ngắt)
không thể tạm dừng một chương trình một chương trình phục vụ ngắt có mức ưu tiên cao Và nếu có 2 ngắt có mức ưu tiên ngắt khác nhau xuất hiện đồng thời , ngắt có mức ưu tiên cao sẽ được phục vụ trước.
Bảng thanh ghi ưu tiên ngắt IP
Bit Ký hiệu Địa chỉ bit Mô tả
(1 : mức cao ; 0 : mức thấp)
Trang 38• Thứ nhất, Hoàn tất việc thực thi lệnh hiện hành.
• Thứ hai, Bộ đêm chương trình
PC được cất vào stack
• Thứ ba, Trạng thái của ngắt hiện hành được lưu giữ lại
• Thứ tư, Các ngắt được chận lại
Trang 394.6 Lập trình ngắt và truyền thông nối tiếp
4.6.1 Các cờ RI và TI và các ngắt
TI
RI
023H
Trang 404.6 Lập trình ngắt và truyền thông nối tiếp
4.6.2 Sử dụng cổng COM nối tiếp trong 8051
Trong các ứng dụng, ngắt nối tiếp chủ yếu được sử dụng để nhận dữ liệu và không bao giờ được sử dụng để truyền dữ liệu nối tiếp.
4.6.3 Xoá cờ RI và TI trước khi thoát khỏi ngắt truyền thông nối tiếp
Ta nhận thấy rằng rằng lệnh cuối cùng trước khi trở về từ ISR là lệnh xoá các cờ RI và TI Điều này tương phản với ngắt ngoài và ngắt bộ định thời là đều được 8051 xoá các cờ.
Trang 415 Mô phỏng
Trang 42Khai báo thư viện của 8501 trong C
<at89x51.h> <REGX51.H>
Trang 43Cài đặt hoạt động 8501 trong C
Khai báo chế độ hoạt động của IC:
TH1=0xFD;
Trang 44Các lệnh thường dung khi lập trình truyền thông nối tiếp
TI=1 // Tính hiệu đã truyền xong
TI=0 // Ngắt cờ sau khi truyền xong để chờ trạng thái tiếp theo
Trang 45Khai báo các chân nối 8501 trong C
#define <Chân của thiết bị bên ngoài> <Chân của 8501>
Trang 46THANK YOU