历史上的今天
返回首页

历史上的今天

今天是:2025年07月28日(星期一)

正在发生

2021年07月28日 | 学习笔记 从零开始学单片机(0) 系统结构

2021-07-28 来源:eefocus

      最近想研究研究嵌入式系统,由于虽然是计算机专业的,但是硬件知识很差,再加上毕业若干年,全部忘光光。可以说,一切几乎是从零开始了。我还是从简单点的单片机开始学习,看了一眼,感觉比较容易些,从浅入深的学习吧。原来学东西好囫囵吞枣,学了一大堆几乎都是些皮毛,我这次写这个日志,一个是把它当做我的学习笔记,另外也是敦促我自己踏踏实实的学习。


      言归正传,去年在二手市场上花了¥2.00(也够抠门的了)买来了一本《单片微型机 原理、应用与实验》,复旦大学出版社的(我就是由买书的爱好,有没有用看到就想买),就拿它当做我的课本了吧。单片机这个东西,要理论联系实际,没有实验啥都是白学!于是跑到淘宝上花了3百多RMB买来开发板一套,附赠视频教程。预览了一遍,都是简单介绍一下理论(很多东西都没有说清楚),主要就是讲解了一下C代码,一切都得靠自己,哪有那么多现成的。


      教材上用的是汇编语言,写程序真是麻烦,还是用C吧,大不了C搞不定的时候嵌汇编不就完了么!


      还是从51,这个虽然比较老,但是很经目前典用应仍然很广泛的这类芯片开始学习,下面是一个典型的8051引脚图。

8051引脚

图1.1 8051引脚图


      制造工艺为HMOS(参考数电)的MSC-51单片机采用的是只引脚双列直插封装。12个时钟是一个机器周期,51的指令1~4个机器周期。


(1) 电源引脚:


Vcc接(+5v)电源


Vss接地。


(2) 时钟引脚:


XTAL1、XTAL2外接晶体振荡器。


(3) 控制引脚:


RST/Vpd:复位信号/备用电源输入(H/L)


ALE/PROC:地址锁存允许信号/编程脉冲输入端(H/L)


PSEN:程序存储器输出控制(L)


EA/Vpp:内外程序存储器选择控制端/施加较高编程电压(+21V或12V)的输入端(L/H)


(4)I/O口引脚


P0口:是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。


P1口:是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS型的TTL负载。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址。


P2口:是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2可以驱动(吸收或输出电流)4个LS型的TTL负载。


P3口:是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS型的TTL负载。


P3.0 10 RXD(串行输入口)


P3.1 11 TXD(串行输出口)


P3.2 12 INT0(外部中断0)


P3.3 13 INT1(外部中断1)


P3.4 14 T0(定时器0外部输入)


P3.5 15 T1(定时器1外部输入)


P3.6 16 WR(外部数据存储器写脉冲)


P3.7 17 RD(外部数据存储器读脉冲)


在4个端口当中,只有P0是真正的双向口,其他都是准双向口。其他都是准双向口。


单片机控制的时候就是向4个I/O口送高低电平,另外我们需要关注的是它的存贮器,和寻址方式。


(1)程序存贮器:


可以在单片机内部或者在外部,PC就是从0地址开始执行的,此时要设置一个跳转指令,跳向用户设计的主程序。MSC-51的中断入口是固定的,它们的地址是0BH,13H,1BH,23H……。地址通常从3开始,每隔8个字节安排一个中断入口。


(2)内部RAM数据存贮器


工作寄存器区(由PSW的第三和第四位指示):在需要的时候它们也可以作为数据缓冲器。


00H~07H:工作寄存器区0(R0~R7)


08H~0FH:工作寄存器区1(R0~R7)


10H~17H:工作寄存器区2(R0~R7)


18H~1FH:工作寄存器区3(R0~R7)


位寻址区:20H~2FH,它们每一位都占据地址空间00H~7FH,用于存放程序标志、位控制信息,同样它们也可以作为一般的数据缓冲器。


堆栈和数据缓冲器:30H~7FH。进栈是,SP先加1在写入,复位后SP为07H。所以对SP初始化时SP=6FH。


(3)特殊功能寄存器(地址空间80H~FFH)


复位时寄存器的状态如下:PC(0),PSW(0),SP(07H),P0~P3(FFH),SBUF(未知)…


(4)外部RAM和I/O口


MSC-51可以扩展64KB的RAM和I/O口,它们是统一编址的。


8051中断系统

8051中断系统结构图

5个中断源:INT0(P3.2),INT1(P3.3)外部中断源;TF0(定时器0),TF1(定时器1),RI/TI(串口输入输出中断)三个内部中断源。


2级的中断优先级(如图所示)


与中断有关的寄存器:


TCON

image.png?imageView2/2/w/550

IT0:外部中断INT0触发方式选择(0,电平触发L;1,跳沿触发H2L),软件设置


IE0:外部中断INT0请求标志位,CPU响应中断后硬件清零


IT1:外部中断INT0触发方式选择,与IT0类似


IE1:外部中断INT0请求标志位,,与IE0类似


TR0:与TR1类似


TF0:T0溢出请求标志位,CPU响应中断后清零,查询方式下由软件清零


TR1:T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。


TF1:T1溢出请求标志位,与TF0类似


SCON

image.png?imageView2/2/w/550

TI:串口发送中断请求标志位,硬件自动置位,在中断服务程序中软件清零


RI:串口接受中断请求标志位,硬件自动置位,在中断服务程序中软件清零


IE

image.png?imageView2/2/w/550

EA:中断允许控制位,1-开中断 0-关中断


ES:串口输入输出中断控制位,1-允许中断 0-禁止中断


ET1:T1中断控制位,1-允许中断 0-禁止中断


EX1:INT1中断控制位,1-允许中断 0-禁止中断


ET0:T0中断控制位,1-允许中断 0-禁止中断


EX0:INT0中断控制位,1-允许中断 0-禁止中断


IP

image.png?imageView2/2/w/550

PS:串口输入输出中断优先级控制位,1-高 0-低


PT1:T1中断优先级控制位,1-高 0-低


PX1:INT1中断优先级控制位,1-高 0-低


PT0:T0中断优先级控制位,1-高 0-低


PX0:INT0中断优先级控制位,1-高 0-低


推荐阅读

史海拾趣

General Dynamics SATCOM Technologies公司的发展小趣事

对于集成电路控制方式的恒水压自动控制电路,网友可能会提出多个问题,以下是一些常见问题及其回答:

1. 恒水压自动控制电路的基本工作原理是什么?

回答
恒水压自动控制电路主要利用集成电路(如单片机、微处理器等)对水压进行实时监测与控制。其基本工作原理是通过压力传感器采集水系统中的水压信号,将模拟信号转换为数字信号后送入微处理器进行处理。微处理器根据预设的水压值与实际水压值进行比较,通过控制水泵电机或其他执行机构的启停或转速来调节水流量,从而实现水压的恒定控制。

2. 如何实现精确的水压控制?

回答
实现精确的水压控制需要依赖于高精度的压力传感器和先进的控制算法。首先,选择具有高精度和良好稳定性的压力传感器是关键。其次,在控制算法上,常采用PID(比例-积分-微分)控制算法,通过不断调整比例、积分和微分系数来优化控制效果,使系统能够快速响应水压变化并保持稳定。此外,还可以引入模糊控制、神经网络控制等先进算法,以进一步提高控制系统的智能化水平和控制精度。

3. 恒水压自动控制电路中的集成电路如何选择?

回答
在选择集成电路时,需要考虑多个因素,包括控制精度、处理能力、成本、功耗以及是否易于编程等。对于恒水压自动控制电路来说,单片机或ARM等微处理器是常见的选择。这些微处理器具有较高的集成度和较强的数据处理能力,能够满足实时控制和复杂算法的需求。同时,还需要考虑其外部接口和扩展性,以便与压力传感器、电机驱动器等其他元件进行连接和通信。

4. 如何解决电路中的噪声和干扰问题?

回答
在恒水压自动控制电路中,噪声和干扰可能会影响压力传感器的测量精度和控制系统的稳定性。为了解决这些问题,可以采取以下措施:

  • 在电路设计阶段,采用合理的布局和布线方式,减少信号线之间的串扰和耦合。
  • 使用屏蔽线和滤波器来抑制高频噪声和电磁干扰。
  • 对模拟信号进行滤波处理,提高信号的信噪比。
  • 在软件层面,采用数字滤波算法进一步滤除噪声干扰。

5. 如何实现远程监控和故障诊断?

回答
为了实现恒水压自动控制电路的远程监控和故障诊断,可以将控制系统与物联网技术相结合。通过在控制系统中集成无线通信模块(如Wi-Fi、蓝牙、NB-IoT等),将实时水压数据、运行状态等信息传输到云端服务器或远程监控中心。同时,可以通过手机APP、网页等客户端远程查看和控制系统状态,及时发现并处理故障问题。此外,还可以利用大数据分析技术对历史数据进行挖掘和分析,为系统的优化和维护提供数据支持。

以上是对集成电路控制方式的恒水压自动控制电路可能遇到的问题及其回答的总结。希望这些信息能够对网友有所帮助。

EPCOS (TDK)公司的发展小趣事

在国际化布局方面,TDK-EPC公司始终保持着积极开放的态度。公司通过设立海外研发中心、生产基地和销售网络等方式,不断拓展国际市场。同时,公司还积极参与国际竞争和合作,与全球众多知名企业建立了长期稳定的合作关系。这些举措不仅提升了TDK-EPC公司的品牌影响力和市场竞争力,也为公司的长期发展提供了有力保障。

Crouzet公司的发展小趣事

Crouzet公司,这家以生产自控产品为主的跨国公司,于1921年正式成立。创立之初,Crouzet主要专注于自控产品的研发和生产,凭借其卓越的技术和创新能力,很快在市场中占据了一席之地。公司逐渐扩大生产规模,提升产品质量,赢得了客户的信赖。

GE Oil & Gas Digital Solutions公司的发展小趣事
在电子爱好者进行DIY制作时,用于快速测试电路中的电阻元件。
晨晶电子(Chenjing Electronics)公司的发展小趣事

晨晶电子自成立以来,始终坚持以技术创新为核心竞争力。公司拥有一支高素质的研发团队,致力于石英晶体元器件的研发与生产。通过不断的技术创新和产品升级,晨晶电子在行业内逐渐树立了技术领先的地位。其产品广泛应用于通信、计算机、消费电子等领域,赢得了众多客户的信赖和好评。

General Instrument公司的发展小趣事
通过稳压器等设备改善电源质量,减少电压波动。

问答坊 | AI 解惑

嵌入式电阻与电容

微过孔的出现被称为印制电路板的第三次革命。无源器件的内置——电阻和电容被置入电路板内部——是否会被称为第四次革命呢?该技术更有可能改变电路设计的面貌。微过孔电路实现了更高的密度、更轻的重量和更好的性能,但电路板本身仍是许多导线的连 ...…

查看全部问答>

应用程序如何查询中断

驱动使用DDK写的,不是DS+DDK,以前用DS+DDK的时候是应用把一个Event的HANDLE传进去,然后驱动里面用传进来的HANDLE生成一个KEVENT,应用那里启动一个线程,线程里面等待那个Event就行了,这样当发生中断时驱动的DPC就把KEVENT设置,应用的那个线程就 ...…

查看全部问答>

STM32处理器如何实现关所有中断功能

                                 我一直没发现STM32有关所有中断的功能,想问一下大家是不是它不能实现。或者有什么办法来实现这个功能。一个个的关 ...…

查看全部问答>

麻烦高手帮我分析一下晶振的问题

初学DSP,用了一片TMS320VC5409和10M无源晶振,板子做起来以后不能用,测量时钟信号发现X1管脚的信号是一个比较畸形的正弦波,X2管脚的波形是一个规则的正弦波;但是时钟输出CLKOUT的波形则是在高低电平两个位置剧烈震荡。由于对晶振和时钟信号不熟 ...…

查看全部问答>

连续小线段前瞻插补算法

小弟在做连续小线段前瞻插补算法 想请问下 在测试前瞻性算法的时候有什么好的仿真方法呢? 用什么软件仿真?…

查看全部问答>

430单片机12位AD一路采集温度一路采集电压程序该如何配置和处理

我用的是MSP430F149单片机想用12位的AD来采两个外部传感器的电压但是。其中用到P6.0和P6.1,我还未链接外部传感器P6.0和P6.1就已经有电压;而且两个显示的都不一样分别为1.86     1.97,用万用表去测量时P6.0和P6.1分别是3.35& ...…

查看全部问答>

山东省电子设计大赛来了

2012TI杯山东省大学生电子设计竞赛                基本仪器和主要元器件清单 1、基本仪器清单 数字电桥 直流稳压电源 量角器 米尺  四位半数字万用表  0~200℃温度 ...…

查看全部问答>

元芳,你对此电路有何看法?(7-终结)

元芳:大人,听说玉渊潭的樱花开的正好,不知大人要不要带我等同去观玩一番?狄:元芳,还是先把前日问题说完。樱花明年还会带开,先练就一身本领,明年樱花更艳……元芳:大人……狄:照数据手册推荐,高于500Hz使用III型反馈网络,即反馈电阻高端 ...…

查看全部问答>

51单片机1602液晶红外解码+波形

51单片机1602液晶红外解码+波形显示…

查看全部问答>

dsp的PWM波的基础知识

本人刚接触DSP,想问一下ACTRA设置的问题。 比如cmp6的输出方式设置为11(强制高),为什么用示波器测不出来高电平信号…

查看全部问答>