学了一段C语言基础,买了ARM(4412)开发板准备学嵌入式,没有任何基础,看了几天裸机教程,头大啊真是从入门到放弃。欲速则不达,还是从基础的学起吧,先搞51单片机从基础学起,然后在stm32,最后学ARM开发板。
花了几百大洋买了嵌入式开发板,不想再买别的板子了,于是发现了新大陆---Proteus,不光能仿真51单片机还能仿真stm32十分强大。
元件库都是英文的,常用的几种元件中英文对照如下。
RES:电阻;CAP:电容;BUTTON:按键开关;CRYSTAL:晶振;DIODE:二极管;LED:发光二极管。
51单片机几个重要元件MCU表示单片机微处理器,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件
单片机最小系统必须包含:
1.电源电路
2.晶体震荡电路
3.复位电路
51单片机特有的编程语句
1.头文件#include<reg51.h>:定义了一些51单片机特殊寄存器等
2.sfr(special function register):特殊功能寄存器声明。
sfr P0 = 0x80;
0x80为寄存器地址,通过地址来访问寄存器(注意这个 P 必须大写)
只有声明了这条语句,编译器才知道P0是什么东西。
3.sbit:特殊功能位声明
sbit led = P0^0//P0口的第0位取了一个更形象的名字叫做led
IO口是特殊功能寄存器,初始化值为高电平。P0口有8位(bit),正好是一个字节Byte
区分字节地址和位地址
P0的字节地址是80H。
SP的字节地址是81H。
----
P0的字节地址是80H,它有8个bit(P0^0 - P0^7), 对应的 位地址是80H~87H。
位地址81H,和SP的字节地址81H,没有冲突。
位 操作和总线操作 点亮led
keil编译c文件,然后生成hex文件加载到proteus中
1.位操作
#include<reg51.h>
sbit led7 = P1^7;
void main()
{
led7=1;
while(1);
}
这样就完成了操作,不影响P1口上其它IO的值
2.总线操作
要求让P1口的最高位置(P1^7)为“1”,其它为0
#include<reg51.h>
void main()
{
P1 = 0x80;//注意:1000 0000 P0口中存储的数据
while(1);
}
内存地址是内存当中存储数据的一个标识,并不是数据本身,通过内存地址可以找到内存当中存储的数据。
,