Đây thực sự là hai câu hỏi trong một ...
Thứ nhất, sự khác biệt giữa vi điều khiển và vi xử lý là gì?
Bộ vi xử lý hoàn toàn là một CPU tuân theo một tập hợp các lệnh được đọc từ một bus bộ nhớ ngoài. Nó kiểm soát các thiết bị ngoại vi bên ngoài (như màn hình, bàn phím, chuột, ổ cứng, v.v.) thông qua một bus truyền thông bên ngoài. Khi bạn lập trình một bộ vi xử lý, chương trình của bạn nằm ngoài thiết bị. Trong máy tính, bộ nhớ này ban đầu là ROM ROM khởi động, ban đầu đọc hệ điều hành từ ổ cứng vào bộ nhớ RAM, sau đó tiếp tục thực thi nó từ đó.
Vi điều khiển giống như một CPU + Bộ nhớ tất cả trong một, với một số cổng bên ngoài để giao tiếp với thế giới bên ngoài. Nó khép kín và không sử dụng bộ nhớ ngoài để giữ chương trình (mặc dù nếu cần, nó có thể đọc và ghi dữ liệu làm việc vào bộ nhớ ngoài).
Thứ hai, lập trình vi điều khiển và vi xử lý có giống nhau không?
Trong một số cách có, và trong một số cách không.
Ngôn ngữ hội là một thuật ngữ rộng mô tả một tập các hướng dẫn mà CPU có thể hiểu trực tiếp. Khi bạn biên dịch ngôn ngữ hợp ngữ, nó không thực sự biên dịch bất cứ thứ gì, tất cả nó sẽ chuyển đổi nó thành một chuỗi byte đại diện cho các lệnh và cắm vào một số vị trí bộ nhớ tương đối. Điều này là phổ biến cho cả bộ vi xử lý và vi điều khiển.
Tuy nhiên, các loại CPU khác nhau hiểu một bộ hướng dẫn CPU khác nhau. Ví dụ, nếu bạn viết chương trình hợp ngữ hoạt động với bộ vi điều khiển pic 16F877, nó sẽ hoàn toàn vô nghĩa với bộ vi xử lý hoặc bất kỳ bộ vi điều khiển nào khác bên ngoài họ vi điều khiển pic 16Fxxx.
Vì vậy, mặc dù lắp ráp hoạt động theo cách tương tự trên tất cả các bộ vi xử lý và vi điều khiển, danh sách hướng dẫn thực tế mà bạn viết rất khác nhau. Để viết bằng ngôn ngữ lắp ráp, bạn cần có kiến thức chuyên sâu về kiến trúc của thiết bị, mà bạn thường có thể nhận được từ biểu dữ liệu trong trường hợp vi điều khiển.