Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Microcontroller
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Programming environments == Microcontrollers were originally programmed only in [[assembly language]], but various [[high-level programming language]]s, such as [[C (programming language)|C]], [[Python (programming language)|Python]] and [[JavaScript]], are now also in common use to target microcontrollers and [[embedded systems]].<ref>{{cite conference |chapter=Changing the programming paradigm for the embedded in the IoT domain |last1=Mazzei |first1= Daniele |last2= Montelisciani |first2= Gabriele |last3= Baldi |first3= Giacomo |last4= Fantoni |first4=Gualtiero |title= 2015 IEEE 2nd World Forum on Internet of Things (WF-IoT) |date= 2015 |publisher= IEEE |pages= 239β244 |conference=Internet of Things (WF-IoT), 2015 IEEE 2nd World Forum on |location=Milan |doi= 10.1109/WF-IoT.2015.7389059|isbn= 978-1-5090-0366-2 }}</ref> [[Compiler]]s for [[general-purpose language]]s will typically have some restrictions as well as enhancements to better support the unique characteristics of microcontrollers. Some microcontrollers have environments to aid developing certain types of applications. Microcontroller vendors often make tools freely available to make it easier to adopt their hardware. Microcontrollers with specialty hardware may require their own non-standard dialects of C, such as [[Small Device C Compiler|SDCC for the 8051]], which prevent using standard tools (such as code libraries or static analysis tools) even for code unrelated to hardware features. [[Interpreter (computing)|Interpreters]] may also contain nonstandard features, such as [[MicroPython]], although a fork, [[CircuitPython]], has looked to move hardware dependencies to libraries and have the language adhere to a more [[CPython]] standard. Interpreter firmware is also available for some microcontrollers. For example, [[BASIC programming language|BASIC]] on the early microcontroller [[Intel]] [[8052]];<ref>{{cite web |url=http://www.lvr.com/microc.htm |title=8052-Basic Microcontrollers |author=Jan Axelson |date=1994}}</ref> BASIC and [[Forth (programming language)|FORTH]] on the [[Zilog Z8]]<ref>{{cite tech report |last1=Edwards |first1=Robert |year=1987 |title=Optimizing the Zilog Z8 Forth Microcontroller for Rapid Prototyping |page=3 |publisher=Martin Marietta |url=https://technicalreports.ornl.gov/1987/3445602791343.pdf |archive-url=https://web.archive.org/web/20230124143800/https://technicalreports.ornl.gov/1987/3445602791343.pdf |archive-date=24 January 2023 |url-status=dead}}</ref> as well as some modern devices. Typically these interpreters support [[interactive programming]]. [[Logic simulation|Simulators]] are available for some microcontrollers. These allow a developer to analyze what the behavior of the microcontroller and their program should be if they were using the actual part. A [[simulator]] will show the internal processor state and also that of the outputs, as well as allowing input signals to be generated. While on the one hand most simulators will be limited from being unable to simulate much other hardware in a system, they can exercise conditions that may otherwise be hard to reproduce at will in the physical implementation, and can be the quickest way to debug and analyze problems. Recent microcontrollers are often integrated with on-chip [[debug]] circuitry that when accessed by an [[in-circuit emulator]] (ICE) via [[JTAG]], allow debugging of the firmware with a [[debugger]]. A real-time ICE may allow viewing and/or manipulating of internal states while running. A tracing ICE can record executed program and MCU states before/after a trigger point.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)