Ini benar-benar dua pertanyaan dalam satu ...
Pertama, apa perbedaan antara mikrokontroler dan mikroprosesor?
Mikroprosesor adalah murni CPU yang mengikuti serangkaian instruksi yang dibaca dari bus memori eksternal. Ini mengontrol perangkat eksternal (seperti layar, keyboard, mouse, hard drive, dll) melalui bus komunikasi eksternal. Ketika Anda memprogram mikroprosesor, program Anda eksternal untuk perangkat. Di komputer, memori ini awalnya adalah boot up BIOS ROM yang awalnya membaca sistem operasi dari hard drive ke dalam memori RAM, kemudian melanjutkan untuk mengeksekusi dari sana.
Mikrokontroler agak seperti CPU + Memori all-in-one, dengan beberapa port eksternal untuk berkomunikasi dengan dunia luar. Ini mandiri dan tidak menggunakan memori eksternal untuk memegang programnya (walaupun jika diperlukan dapat membaca dan menulis data yang berfungsi ke memori eksternal).
Kedua, apakah pemrograman mikrokontroler dan mikroprosesor sama?
Dalam beberapa hal, ya, dan dalam beberapa hal tidak.
Bahasa assembly adalah istilah luas yang menjelaskan sekumpulan instruksi yang dapat dipahami langsung oleh CPU. Ketika Anda 'mengkompilasi' bahasa assembly, itu tidak benar-benar mengkompilasi apa pun, semua itu tidak mengkonversikannya ke urutan byte yang mewakili perintah dan colokan di beberapa lokasi memori relatif. Ini umum untuk mikroprosesor dan mikrokontroler.
Namun, berbagai jenis CPU memahami serangkaian instruksi CPU yang berbeda. Misalnya, jika Anda menulis program bahasa rakitan yang bekerja dengan mikrokontroler pic 16F877, itu akan menjadi omong kosong bagi mikroprosesor atau mikrokontroler lain di luar keluarga mikrokontroler pic 16Fxxx.
Jadi, walaupun perakitan bekerja dengan cara yang sama di semua mikroprosesor dan mikrokontroler, daftar instruksi yang Anda tulis sebenarnya sangat berbeda. Untuk menulis dalam bahasa assembly, Anda harus memiliki pengetahuan mendalam tentang arsitektur perangkat, yang biasanya Anda dapatkan dari lembar data dalam kasus mikrokontroler.