单片机入门-要从汇编开始

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器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、汇编语言的产生

早期我们编程是用机器可以执行的机器码编程的,但是这样太复杂,于是人们就想办法,于是汇编语言就产生了。

汇编工作过程如下图

2、汇编语言的组成

汇编语言由(1)汇编指令:机器码的助记符,有对应的机器码

(2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行

(3)其他符号:+,-,*,/等,由编译器识别,没有对应的机器码

汇编语言的核心是汇编指令,它绝对了汇编语言的特性,就像我们每一种构架的CPU都有自己特殊的汇编指令集。

3、什么是指令和数据

指令和数据在底层即内存上没有什么区别,都是二进制,但是在CPU工作的时候,我们上层比如汇编,C语言会赋予不同的含义。

4、CPU对存储器的读写

CPU想对数据进行读写,就必须和外设进行交互,必须和三类总线进行交互

(1)地址总线:存储单元的地址

(2)控制总线:器件的选择,读或写的命令

(3)数据总线:读或写数据

5、存储器和内存地址空间

存储器其实就是我们一台计算机不同的存储单元,物理上是不同的RAM和ROM,在内存上表示为不同的地址单元,我们通过访问不同的地址单元就可以访问计算机的各个物理部分,通过控制总线就可以控制各个物理单元部分。

地址空间大小现在就是32位,就4G的寻址空间。

山焦汾西柳湾煤矿下发《2020年修订版工作流程图汇编》

近日,山焦汾西柳湾煤矿面向全矿各单位下发了《2020年修订版工作流程图汇编》,指导全年各项工作流程,推进构建现代化管理体系进程。

为进一步提高工作效率,优化完善工作流程,使各项工作更清晰明了,该矿从去年12月开始,在《2019年工作流程图汇编》的基础上,再次对各单位工作内容进行了梳理,修改运行过程中存在的问题,此次修订在2019年版的基础上,增补了流程图8副,删除6副,修订35副,重新收纳整理了全矿30个业务科室、单位共计173副工作流程图,部分环节还增补了工作原则及注意事项相关标注。其中,重点对地测科测量、安全技术措施编制审批等八个岗位、部门工作流程上规定了时间节点,要求必须在规定时间内完成,其具体落实情况由督查办进行督查督导。最终于今年元月定稿、印刷,并于近日下发。

自第一版《工作流程图汇编》下发以来,柳湾煤矿在理顺工作关系、优化工作流程、提高工作效率方面都起到了良好的效果。该项目先后获得了山西省煤炭企业管理现代化创新优秀成果特等奖,中国煤炭企业管理现代化创新成果三等奖。

柳湾煤矿《2020年修订版工作流程图汇编》的制订下发,是该矿在企业管理现代化创新领域重要举措的新起点,其所具备的科学有效、规范有序的特性,必将对该矿管理体系现代化产生积极深远的影响。(丁 盛)

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。