单片机入门-要从汇编开始
简介
单片机 是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器、显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。单片机的发展先后经历了4位、8位、16位和32位等阶段。8位单片机由于功能强,被广泛用于工业控制、智能接口、仪器仪表等各个领域,8位单片机在中、小规模应用场合仍占主流地位,代表了单片机的发展方向,在单片机应用领域发挥着越来越大的作用。
51单片机
单片机的开发主要包括CPU开发、程序开发、 存储器开发、计算机开发及C语言程序开发,同时得到开发能够保证单片机在十分复杂的计算机与控制环境中可以正常有序的进行。程序开发嵌入式系统的合理应用得到了大力推广,对程序进行开发时要求能够自动执行各种指令,这样可以快速准确地采集外部数据,提高单片机的应用效率。
为啥选汇编入门
很多电子爱好者都想学习单片机这门技术,初学者入门从底层硬件入手基于汇编和c两种语言,详细的介绍了单片机的原理,指令,寄存器,以及接口等,后面还为你准备了一些小的设计。都是从单片机最基本的东西讲起,相信你一定能看懂,并且学会单片机这门有意思的技术,有什么问题可在文章后面的评论留言。
初学单片机汇编有利于深入结构的了解,但是真正工作的时候,用的是C语言;汇编语言一般只在处理器启动的时候用一下,或C语言插入汇编的调用,之后就全是C语言,汇编移植性太差,但是它的效率高,时间精度能控制好。一般汇编都不需要你自己写,拿来用就行,主要还是C语言。可以肯定的告诉 你,99%用C语言。
51单片机开发板
现在单片机的编程大多 是C语言完成
但有时代码中必须嵌入汇编语言解决某些特定的问题
对于程序调试 汇编语言更是不可或缺。
直接使用汇编指令编写单片机程序,对硬件的控制更加直接,可以直接操作物理地址,寄存器,端口等;其它更高级的语言(如:C语言)对硬件的控制是依赖于类库来实现的。并且,对于一些对程序大小和运行速度有非常严苛要求的项目而言,都必须使用汇编指令。C语言只是为了方便编写,与机器打交道的其实都是2进制得代码,汇编语言就是这些代码好记忆的名称和规则,只是比C语言难理解些。
单片机
单片机最小系统
包括电源电路 、时钟晶振电路 、复位电路 。
时钟晶振电路、复位电路
程序存储器中有七个特设的地址,其功能分别是用于:0000H 复位时ROM的地址;0003H 外部中断0入口地址;000BH 定时器计数器0溢出中断入口地址;0013H 外部中断1入口地址;001BH 定时器计数器1溢出中断入口地址;0023H串行口中断入口地址;002BH 定时/计数器2溢出中断入口地址。
0000H地址是单片机复位时的PC地址,从0000H开始执行程序。
其他6个地址是单片机相应不同的中断时,所跳向对应的入口地址。
该表也叫中断向量表或称中断向量,在写程序时,这些地址不要占用。使用时一般在这6个地址写跳转指令,如AJMP,LMJP等等。
单片机汇编指令
为解决某些特定的问题代码中必须嵌入汇编语言以代替C语言完成的单片机的编程,汇编语言对于程序调试是不可或缺的。它包括:算术操作类指令,布尔变量操作类指令,逻辑操作数指令,控制转移类指令。
常用单片机汇编指令:
1 .MOV A,Rn 寄存器内容送入累加器
2 .MOV A,direct 直接地址单元中的数据送入累加器
3 .MOV A,@Ri (i=0,1)间接RAM 中的数据送入累加器
4 .MOV A,#data 立即数送入累加器
5 .MOV Rn,A 累加器内容送入寄存器
6 .MOV Rn,direct 直接地址单元中的数据送入寄存器
7 .MOV Rn,#data 立即数送入寄存器
8 .MOV direct,A 累加器内容送入直接地址单元
9 .MOV direct,Rn 寄存器内容送入直接地址单元
布尔变量操作类指令:
1. CLR C 清进位位
2 .CLR bit 清直接地址位
3 .SETB C 置进位位
4 .SETB bit 置直接地址位
控制转移类指令
1. ACALL addr11 绝对(短)调用子程序
2 .LCALL addr16 长调用子程序
3 .RET 子程序返回
4 .RETI 中断返回
5 .AJMP addr11 绝对(短)转移
6 .LJMP addr16 长转移
7 .SJMP rel 相对转移
8 .JMP @A+DPTR 相对于DPTR 的间接转移
9. JZ rel 累加器为零转移
10. JNZ rel 累加器非零转移
11. CJNE A,direct,rel 累加器与直接地址单元比较,不相等则转移
12 .CJNE A,#data,rel 累加器与立即数比较,不相等则转移
13 .CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移
14 .CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移
15 .DJNZ Rn,rel 寄存器减1,非零转移
16 .DJNZ direct,rel 直接地址单元减1,非零转移
17 .NOP 空操作
闪烁灯汇编代码
流程图
闪烁灯汇编代码:
ORG 0000H ;初始地址
LJMP A0A0 ;跳转至I/O初始化
ORG 002BH
A0A0:MOV P0,#0FFH ;P0口初始化
MOV P1,#0FFH ;P1口初始化
MOV P2,#0FFH ;P2口初始化
MOV P3,#0FFH ;P3口初始化
A0A1:SETB P1.5 ;P1.5置1(高电平)
LCALL DELA0 ;调用延时
CLR P1.5 ;P1.5清0(低电平)
LCALL DELA0 ;调用延时
LJMP A0A1 ;跳转至开头循环
DELA0:MOV 68H,#5 ;延时
DELA1:MOV 67H,#248
DELA2:MOV 66H,#250
DJNZ 66H,$
DJNZ 67H,DELA2
DJNZ 68H,DELA1
RET
END
闪烁灯电路_亮
闪烁灯电路_灭
单片机新手入门系列视频集锦
单片机入门视频和文字等教程集锦,点击以下链接进入视频:
一、单片机视频教程:
1单片机入门-C51流程控制if-else-for-while综合电路应用实例 - 西瓜视频
2单片机入门-数组电路应用实例 - 西瓜视频
3单片机入门-移位运算符电路应用实例 - 西瓜视频
4单片机入门-if-else选择语句电路应用实例 - 西瓜视频
5单片机入门-C51语言for循环控制语句电路应用实例 - 西瓜视频
6单片机入门-利用for语句嵌套实现简单的延时1s功能 - 西瓜视频
7单片机入门-51系列单片机开发板使用简介 - 西瓜视频
8单片机入门-C51语言实现8个按键检测和数码管的控制 - 西瓜视频
9单片机入门-C51语言LCD12864液晶显示器的基本使用视频教程 - 西瓜视频
10单片机入门-C51语言采用定时器查询方法获取1秒精准定时 - 西瓜视频
11单片机入门-C51语言采用定时器查询方法设计LCD电子钟视频教程 - 西瓜视频
12单片机入门-C51语言采用定时器中断方法获取1秒精准定时 - 西瓜视频
13单片机入门-C51语言采用定时器中断方法设计LCD电子钟 - 西瓜视频
14单片机入门-C51语言采用外部中断调整电子钟时分秒 - 西瓜视频
15单片机入门-C51语言实现电子钟界面功能优化 - 西瓜视频
16单片机入门-C51语言用按键中断和查询两种方法调整电子钟参数 - 西瓜视频
17单片机入门-串行通信理论基础 - 西瓜视频
18单片机入门-C51语言实现串行通信用查询法发送数据控制数码管 - 西瓜视频
19单片机入门-C51语言实现单工双机通信用串行口中断方法控制数码管 - 西瓜视频
20单片机入门-C51语言实现双工方式的双机通信 - 西瓜视频
21单片机入门-C51语言实现双机串口通信发送机接按键接收机数码显示 - 西瓜视频
22单片机入门-数字电压表和模数转换知识基础 - 西瓜视频
23单片机入门-C51实现数字电压表数模转换详细设计分步骤讲解 - 西瓜视频
24单片机入门-C51语言实现数字电压表ADC0808通道选择 - 西瓜视频
25单片机入门-C51语言实现数字电压表用LCD12864显示结果 - 西瓜视频
26单片机入门-C51实现用TLC549模数转换用LCD设计数字电压表 - 西瓜视频
27单片机入门-C51实现用TLC549模数转换用数码管设计电压表 - 西瓜视频
28单片机入门-数模转换和DAC0832芯片简单介绍第一节 - 西瓜视频
29单片机入门-C51语言用DAC0832实现正弦波的波形发生器第二节 - 西瓜视频
30单片机入门-C51语言用DAC0832实现三角波和方波波形发生器第三节 - 西瓜视频
31单片机入门-C51语言用DAC0832实现凸形波发生器第四节 - 西瓜视频
32 单片机开发实例1:颜色识别器和测色仪潘通劳尔色卡匹配色差计功能 - 西瓜视频
33单片机开发实例2:测色仪颜色识别详细视频教程含高级潘通劳尔色卡匹配和色差计功能 - 西瓜视频
二、单片机文字教程:
1单片机入门-Proteus绘制电路和Keil写代码视频教学
2单片机入门-C51语言实现单个LED数码管显示控制
3单片机入门-C51语言手动和自动控制红绿LED交通灯的实现视频教学
4单片机入门-C51语言实现单个LED数码管显示控制
5单片机入门-C51语言用函数和for简化代码实现数码管显示控制
6单片机入门-C51语言实现矩阵键盘按键检测和数码管显示
7单片机入门-C51语言实现矩阵键盘和数码管调整时钟的时分秒
8单片机入门-C51语言LCD12864液晶显示器的基本使用介绍
9单片机入门-C51语言采用定时器查询方法获取1秒精准定时解说
1051单片机通过蓝牙串口模块发送JSON数据给安卓手机故障解决办法
11单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例
12单片机入门-C51语言采用定时器中断方法获取1秒精准定时解说
13单片机入门-C51语言采用定时器中断方法设计LCD电子钟解说
14单片机收发Json数据格式与安卓手机双向通信实例附简要代码
15单片机入门-C51语言按键采用外部中断调整电子钟时分秒解说
16单片机入门-C51语言用按键中断和查询两种方法调整电子钟参数解说
17单片机入门-串行通信理论基础解说
18单片机入门-C51语言实现串行通信用查询法发送数据控制数码管解说
19单片机入门-C51语言实现双机通信用串行口中断方法控制数码管解说
20单片机入门-C51语言用单片机串口实现双向数据收发的双机通信
21单片机STC12C5A60S2常用C51代码-串口通信速度设置
22单片机STC12C5A60S2常用C51代码-定时器计算
23单片机STC12C5A60S2常用C51代码-软件延时计算
24单片机入门-C51语言实现双机串口通信发送机接按键接收机数码显示
25单片机入门-数字电压表和模数转换(ADC)知识基础解说
26单片机入门-C51实现数字电压表模数转换详细设计分步骤详细解说
27单片机入门-C51语言实现数字电压表ADC0808通道选择解说
28单片机入门-C51语言实现数字电压表用LCD12864显示结果解说
29单片机入门-C51语言实现数字电压表用LCD12864显示结果解说
30单片机入门-C51实现用TLC549模数转换用LCD设计数字电压表解说
31单片机入门-数模转换和DAC0832芯片简单介绍第一节解说
32单片机入门-C51语言用DAC0832实现正弦波的波形发生器第二节解说
33单片机入门-C51语言DAC0832实现三角波方波波形发生器第三节解说
34单片机入门-C51语言用DAC0832实现凸形波发生器第四节解说
35单片机HEX文件下载到单片机步骤
3651单片机用汇编语言让8个LED灯向左循环闪烁
3751单片机用汇编语言的查表法控制红绿交通灯
3851单片机用汇编语言的控制LED灯闪烁
39单片机汇编语言常见错误和解决办法
4051单片机用汇编语言实现存储器块清零
4151单片机用汇编语言实现ASCII码转换
4251单片机用汇编语言实现BCD码转换
4351单片机用汇编语言实现程序跳转表
4451单片机用汇编语言实现内存块移动
4551单片机用汇编语言实现数据排序
4651单片机用汇编语言的查表法控制任意LED闪烁
4751单片机主要汇编指令集
4851单片机用C51语言实现I2C24C02存储器用法和实例
三:单片机入门知识:
1单片机Keil开发软件常见编译错误解释及解决办法
2单片机怎么防止代码拼写错误
3学好单片机的作用和怎么学好单片机
4单片机汇编语言利用查找表法实现任意LED闪烁
5单片机汇编语言循环指令实现LED左循环闪烁
651系列单片机汇编语言实现简单的交通灯控制
751系列单片机汇编语言利用查找表方法实现简单的交通灯控制
8单片机入门-C51语言实现简单的红绿LED交通灯控制
9单片机入门-C51语言指针的LED灯闪烁控制电路应用实例
10单片机Keil软件常见语法和拼写错误原因和处理办法
相关问答
单片机汇编 语言1加到100怎么编?org0movr0,#100;共100个数mova,#0;累加结果先清0movr1,#1;第1个数为1loop:adda,r1;把数累加起来incr1;下一个数djnzr0,l...
汇编 程序如何烧写到 单片机 里?汇编语言烧到单片机的过程(不同系列的单片机有所不同)汇编程序--->汇编语言编译器--->单片机烧写器--->单片机编写软件软件+硬件单片机汇编语...
STC 单片机 能用 汇编 写程序吗?指令和C51有什么区别?当然可以用和汇编语言写。其实STC就是51内核的单片机。指令系统当然和c51单片机兼容的。不过有的STC的外设比标准的C51丰富,比如有的STC有P4口,普通的C51就没...
51 单片机汇编 语言的ifelse如何实现?51单片机汇编语言的ifele语句实现如下:if语句由关键字“if”开始,后面跟随一个逻辑表达式。if语句根据该逻辑表达式的值来决定哪些语句会被执行。if语句可以...
单片机 ,使用 汇编 语言使led数码管每隔1秒轮流显示数字0000-9999,这个怎么样做呀?这是四位数的秒计数器,用四位一体共阴数码管显示,P0口输出段码,P2口输出位码。用定时器定时器50ms,采用中断方式,中断20次为1秒,显示数字加1。这是四位数的...
51 单片机汇编 语言倒计时60秒循环程序?可以在SJMP$这里改成判断R2是不是为0,如是就重新载入60…如果不是就跳回重新判断R2可以在SJMP$这里改成判断R2是不是为0,如是就重新载入60…如果不是就跳回...
单片机汇编 指令ACALL怎么用?ACALL是51汇编的子程序调用指令,其使用范围是±2K范围,超出这个范围的调用将会出错,这时可以使用LCALL即长调用语句。调用格式如下:ACALL标号(子程序名)例...
单片机汇编 语言流水灯程序延时0.5秒,一共四个灯循环?4只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。;用最直接的方式实现流水灯ORG0000HSTART:MOVP1,#01111111B;最下面的LED点亮LCALLDE.....
单片机 为什么可以读懂 汇编 和C语言?每个芯片都有其支持的指令集(二进制码,在计算机内部以高电平和低电平表示),芯片本身是不“认识”汇编语言和C语言的,所有高级语言和汇编语言编写的代码都会...
XRL 单片机汇编 语句啥意思?逻辑异或指令,即相对应的二进制位不同该位异或后的结果是1,相同则为0。XRLA,#data;累加器A中的内容和立即数执行逻辑异或操作。结果存放在累加器A中如A中的...