To naprawdę dwa pytania w jednym ...
Po pierwsze, jaka jest różnica między mikrokontrolerem a mikroprocesorem?
Mikroprocesor to procesor, który postępuje zgodnie z zestawem instrukcji odczytywanych z zewnętrznej magistrali pamięci. Kontroluje zewnętrzne urządzenia peryferyjne (takie jak ekran, klawiatura, mysz, dysk twardy itp.) Za pośrednictwem zewnętrznej magistrali komunikacyjnej. Gdy programujesz mikroprocesor, twój program znajduje się na zewnątrz urządzenia. W komputerze pamięć ta jest początkowo BIOS-em rozruchowym, który najpierw odczytuje system operacyjny z dysku twardego do pamięci RAM, a następnie kontynuuje wykonywanie go od tego momentu.
Mikrokontroler jest trochę jak zintegrowany procesor + pamięć, z niektórymi zewnętrznymi portami do komunikacji ze światem zewnętrznym. Jest samowystarczalny i nie wykorzystuje pamięci zewnętrznej do przechowywania programu (chociaż w razie potrzeby może odczytywać i zapisywać dane robocze w pamięci zewnętrznej).
Po drugie, czy programowanie mikrokontrolera i mikroprocesora jest tym samym?
Pod pewnymi względami tak, a pod pewnymi względami nie.
Język asemblera to szeroki termin, który opisuje zestaw instrukcji, które procesor może bezpośrednio zrozumieć. Kiedy „kompilujesz” język asemblerowy, tak naprawdę nic nie kompiluje, wszystko to konwertuje go na sekwencję bajtów reprezentujących polecenia i podłącza się do niektórych względnych lokalizacji pamięci. Jest to wspólne zarówno dla mikroprocesorów, jak i mikrokontrolerów.
Jednak różne typy procesorów rozumieją inny zestaw instrukcji procesora. Na przykład, jeśli napiszesz program w asemblerze, który współpracuje z mikrokontrolerem pic 16F877, będzie to kompletny nonsens dla mikroprocesora lub innego mikrokontrolera spoza rodziny mikrokontrolerów pic 16Fxxx.
Tak więc, chociaż montaż działa w podobny sposób we wszystkich mikroprocesorach i mikrokontrolerach, rzeczywista lista instrukcji, które piszesz, jest bardzo różna. Aby pisać w asemblerze, musisz mieć dogłębną znajomość architektury urządzenia, którą normalnie możesz uzyskać z arkusza danych w przypadku mikrokontrolera.