历史上的今天
返回首页

历史上的今天

今天是:2025年05月18日(星期日)

正在发生

2021年05月18日 | 两种MCU间的串行通信协议设计

2021-05-18 来源:eefocus

ANLA,Rn;A与Rn中的值按位'与',结果送入A中


ANLA,direct;A与direct中的值按位'与',结果送入A中


ANLA,@Ri;A与间址寻址单元@Ri中的值按位'与',结果送入A中


ANLA,#data;A与立即数data按位'与',结果送入A中


ANLdirect,A;direct中值与A中的值按位'与',结果送入direct中


ANLdirect,#data;direct中的值与立即数data按位'与',结果送入direct中。


这几条指令的关键是知道什么是逻辑与。这里的逻辑与是指按位与


例:71H和56H相与则将两数写成二进制形式:


(71H)01110001


(56H)00100110


结果00100000即20H,从上面的式子可以看出,两个参与运算的值只要其中有一个位上是0,则这位的结果就是0,两个同是1,结果才是1。


理解了逻辑与的运算规则,结果自然就出来了。看每条指令后面的注释


下面再举一些例子来看。


MOVA,#45H;(A)=45H


MOVR1,#25H;(R1)=25H


MOV25H,#79H;(25H)=79H


ANLA,@R1;45H与79H按位与,结果送入A中为41H(A)=41H


ANL25H,#15H;25H中的值(79H)与15H相与结果为(25H)=11H)


ANL25H,A;25H中的值(11H)与A中的值(41H)相与,结果为(25H)=11H


在知道了逻辑与指令的功能后,逻辑或和逻辑异或的功能就很简单了。逻辑或是按位“或”,即有“1”为1,全“0”为0。例:


10011000


或01100001


结果11111001


而异或则是按位“异或”,相同为“0”,相异为“1”。例:


10011000


异或01100001


结果11111001


而所有的或指令,就是将与指仿中的ANL换成ORL,而异或指令则是将ANL换成XRL。即


或指令:


ORLA,Rn;A和Rn中的值按位'或',结果送入A中


ORLA,direct;A和与间址寻址单元@Ri中的值按位'或',结果送入A中


ORLA,#data;A和立direct中的值按位'或',结果送入A中


ORLA,@Ri;A和即数data按位'或',结果送入A中


ORLdirect,A;direct中值和A中的值按位'或',结果送入direct中


ORLdirect,#data;direct中的值和立即数data按位'或',结果送入direct中。


异或指令:


XRLA,Rn;A和Rn中的值按位'异或',结果送入A中


XRLA,direct;A和direct中的值按位'异或',结果送入A中


XRLA,@Ri;A和间址寻址单元@Ri中的值按位'异或',结果送入A中


XRLA,#data;A和立即数data按位'异或',结果送入A中


XRLdirect,A;direct中值和A中的值按位'异或',结果送入direct中


XRLdirect,#data;direct中的值和立即数data按位'异或',结果送入direct中。


练习:


MOVA,#24H


MOVR0,#37H


ORLA,R0


XRLA,#29H


MOV35H,#10H


ORL35H,#29H


MOVR0,#35H


ANLA,@R0


四、控制转移类指令


无条件转移类指令


短转移类指令


AJMPaddr11


长转移类指令


LJMPaddr16


相对转移指令


SJMPrel


上面的三条指令,如果要仔细分析的话,区别较大,但初学时,可不理会这么多,统统理解成:JMP标号,也就是跳转到一个标号处。事实上,LJMP标号,在前面的例程中我们已接触过,并且也知道如何来使用了。而AJMP和SJMP也是一样。那么他们的区别何在呢?在于跳转的范围不一样。好比跳远,LJMP一下就能跳64K这么远(当然近了更没关系了)。而AJMP最多只能跳2K距离,而SJMP则最多只能跳256这么远。原则上,所有用SJMP或AJMP的地方都可以用LJMP来替代。因此在初学时,需要跳转时可以全用LJMP,除了一个场合。什么场合呢?先了解一下AJMP,AJMP是一条双字节指令,也就说这条指令本身占用存储器(ROM)的两个单元。而LJMP则是三字节指令,即这条指令占用存储器(ROM)的三个单元。下面是第四条跳转指令。


间接转移指令


JMP@A+DPTR


这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。让我们从一个实际的例子入手吧。


MOVDPTR,#TAB;将TAB所代表的地址送入DPTR


MOVA,R0;从R0中取数(详见下面说明)


MOVB,#2


MULA,B;A中的值乘2(详见下面的说明)


JMPA,@A+DPTR;跳转


TAB:AJMPS1;跳转表格


AJMPS2


AJMPS3


图2


图3


应用背景介绍:在单片机开发中,经常要用到键盘,见上面的9个按键的键盘。我们的要求是:当按下功能键A………..G时去完成不同的功能。这用程序设计的语言来表达的话,就是:按下不同的键去执行不同的程序段,以完成不同的功能。怎么样来实现呢?




看图2,前面的程序读入的是按键的值,如按下'A'键后获得的键值是0,按下'B'键后获得的值是'1'等等,然后根据不同的值进行跳转,如键值为0就转到S1执行,为1就转到S2执行。。。。如何来实现这一功能呢?




先从程序的下面看起,是若干个AJMP语句,这若干个AJMP语句最后在存储器中是这样存放的(见图3),也就是每个AJMP语句都占用了两个存储器的空间,并且是连续存放的。而AJMPS1存放的地址是TAB,到底TAB等于多少,我们不需要知道,把它留给汇编程序来算好了。




下面我们来看这段程序的执行过程:第一句MOVDPTR,#TAB执行完了之后,DPTR中的值就是TAB,第二句是MOVA,R0,我们假设R0是由按键处理程序获得的键值,比如按下A键,R0中的值是0,按下B键,R0中的值是1,以此类推,现在我们假设按下的是B键,则执行完第二条指令后,A中的值就是1。并且按我们的分析,按下B后应当执行S2这段程序,让我们来看一看是否是这样呢?第三条、第四条指令是将A中的值乘2,即执行完第4条指令后A中的值是2。下面就执行JMP@A+DPTR了,现在DPTR中的值是TAB,而A+DPTR后就是TAB+2,因此,执行此句程序后,将会跳到TAB+2这个地址继续执行。看一看在TAB+2这个地址里面放的是什么?就是AJMPS2这条指令。因此,马上又执行AJMPS2指令,程序将跳到S2处往下执行,这与我们的要求相符合。




请大家自行分析按下键“A”、“C”、“D”……之后的情况。




这样我们用JMP@A+DPTR就实现了按下一键跳到相应的程序段去执行的这样一个要求。


推荐阅读

史海拾趣

FSP [FSP TECHNOLOGY INC.]公司的发展小趣事

FSP TECHNOLOGY INC. 发展故事集

故事一:创立与初期发展

FSP Technology Inc.(全汉企业股份有限公司)成立于1993年,总部位于台湾。在创立之初,公司便专注于电源供应器的研发与生产,凭借其专业的技术团队和敏锐的市场洞察力,迅速在行业中崭露头角。当时,随着计算机技术的飞速发展,对稳定、高效的电源需求日益增长,FSP抓住了这一机遇,专注于提供高品质的电源产品,赢得了市场的初步认可。公司通过不断优化产品设计和提升生产效率,逐渐建立起一定的市场份额和品牌影响力。

故事二:技术创新与品牌拓展

进入21世纪后,FSP Technology加大了技术创新的投入,致力于研发更加高效、环保的电源解决方案。公司先后推出了多款符合国际能效标准的产品,如80 PLUS认证系列电源,这些产品凭借其出色的性能和稳定的品质,在市场上获得了广泛好评。同时,FSP也积极拓展国际市场,通过参加国际展会、建立海外销售网络等方式,将品牌和产品推向全球。这一时期,FSP的品牌知名度和市场占有率均实现了显著提升。

故事三:ODM/OEM业务的蓬勃发展

随着全球电子产业链的分工日益细化,FSP Technology积极调整业务结构,大力发展ODM/OEM业务。公司凭借强大的研发实力和灵活的生产能力,为众多国际知名品牌提供定制化的电源解决方案。这些合作不仅丰富了FSP的产品线,也进一步提升了公司的技术水平和市场竞争力。同时,通过与国际品牌的深度合作,FSP的品牌影响力也得到了进一步扩大。

故事四:绿色能源解决方案的推广

近年来,随着全球对环保和可持续发展的重视,FSP Technology积极响应时代号召,致力于推广绿色能源解决方案。公司结合自身的技术优势,开发了一系列高效、节能的电源产品,广泛应用于数据中心、通信基站、智能家居等领域。这些产品不仅降低了客户的运营成本,也为全球节能减排事业做出了积极贡献。FSP的绿色能源解决方案得到了市场的广泛认可,进一步巩固了其在行业中的领先地位。

故事五:持续研发与未来展望

面对日益激烈的市场竞争和不断变化的客户需求,FSP Technology始终保持对技术创新的热情与追求。公司不断加大研发投入,积极探索新的技术和应用领域,如边缘计算、5G通信、工业互联网等。同时,FSP也密切关注行业动态和市场趋势,灵活调整战略方向,确保在未来的发展中始终保持领先地位。展望未来,FSP将继续秉承“服务、专业、创新”的经营理念,为全球客户提供更加优质、高效的电源解决方案。

Hoffman Engineering公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,Hoffman Engineering开始将目光投向国际市场。公司逐步在全球范围内建立销售网络,为全球客户提供优质的产品和服务。如今,Hoffman Engineering的工厂遍布世界四大洲,为全球客户提供了超过12,000种标准产品和不计其数的定制化解决方案。这一国际市场的成功开拓,使Hoffman Engineering成为国际知名的电子工程解决方案提供商。

绿索超容(GreenSource)公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,Hoffman Engineering开始将目光投向国际市场。公司逐步在全球范围内建立销售网络,为全球客户提供优质的产品和服务。如今,Hoffman Engineering的工厂遍布世界四大洲,为全球客户提供了超过12,000种标准产品和不计其数的定制化解决方案。这一国际市场的成功开拓,使Hoffman Engineering成为国际知名的电子工程解决方案提供商。

Adaptive Interconnect Electronics, Inc. [AIE]公司的发展小趣事

为了适应全球电子市场的快速发展,AIE公司积极实施全球化战略。公司在多个国家和地区设立了分支机构或办事处,以便更好地服务当地客户。同时,AIE还积极参加国际电子展会和论坛,与全球各地的合作伙伴和客户建立了广泛的联系。这些举措不仅拓展了AIE的市场份额,也提升了公司的国际影响力。

统宇电研(Coilmaster)公司的发展小趣事

面对日益激烈的市场竞争,统宇电研不断拓展市场领域,寻求新的增长点。公司积极参与国内外行业展会和论坛,加强与客户的沟通与交流,深入了解市场需求。同时,统宇电研还针对不同地区的市场特点,制定了灵活多样的销售策略和方案。这些努力使得统宇电研的市场份额不断扩大,品牌知名度也逐渐提升。

CTS公司的发展小趣事

在业务发展过程中,CTS公司还通过一系列收购来扩展其业务范围和增强竞争力。例如,CTS完成了对Alpha Ceramics的收购,这是一家为军事和航空航天市场提供传感器和换能器制造商的压电陶瓷材料供应商。这一收购使CTS能够进一步增强其在特定领域的专业能力,并为客户提供更全面的解决方案。

问答坊 | AI 解惑

酷炫悦动,两轮侧滑创吉尼斯记录

  在优酷看到的俺家小悦悦去年创下吉尼斯世界记录的视频,真炫啊,心里看得那个爽啊,哈哈!不过看到两轮立起侧滑时,我那个紧张啊(心里一直在想会不会翻车,各位别拍我,嘿嘿),最后过了,还创了新的吉尼斯世界记录,不得不赞一下开车师傅的技 ...…

查看全部问答>

欢迎s3c6410爱好者加入超级群67958848

欢迎s3c6410爱好者加入超级群67958848…

查看全部问答>

谁在C#中调用RAPI里的CeRapiInvoke()函数的吗?他参数里的函数是怎么定义的呢?以及怎么获取返回值呢?那位达人知道告诉我或贴个C#例子,非常感谢了

谁在C#中调用RAPI里的CeRapiInvoke()函数的吗?他参数里的函数是怎么定义的呢?以及怎么获取返回值呢?那位达人知道告诉我或贴个C#例子,非常感谢了,小弟在线等。。。小弟就只有11分,全给了。。。…

查看全部问答>

谁做过电容式触摸屏,如何编程

谁做过电容式触摸屏,如何编程…

查看全部问答>

招聘嵌入式软件工程

本公司招聘嵌入式工程师 熟悉Linux下C开发,熟悉SQLite及UML嵌入式开发 联系邮箱:harber.xie@gmail.com…

查看全部问答>

急!!!!

在avr里面我用sleep指令让单片机休眠,为什么单片机的功耗还是很大呢?? 用什么方面法才能使它睡眠呢,让他工作在休眠状态!使他的功耗最低?谢谢大虾们!!…

查看全部问答>

【低功耗】FPGA在便携式产品中应用的低功耗实现方法

随着90nm和65nm半导体工艺节点的到来,使得低功耗小尺寸和高度集成的医疗设备得以出现。对医疗设备制造商而言,其主要挑战是如何选择正确的半导体器件来满足便携式医疗电子产品的功率、性能和价格需求。具备大量的内部RAM和高DSP处理能力的低成本Sp ...…

查看全部问答>

BEQ.N和PC指针

我在看汇编代码的时候,看到BEQ.N不知道是什么意思?BEQ是相等跳转,后面的.N是作甚的啊? 还有, 我用单步调的时候,PC的值就是正在执行的代码的地址,不是说PC是采用指令流水线的吗?PC值并不是正在执行的指令的值。这个该如何理解。 望高手指 ...…

查看全部问答>

CCS3.3 补丁安装问题

  在安装CCS_v3.3_SR11_81.6.2时出现附件中问题2的情况;    在安装浮点库setup_C28XFPU_CSP_v3.3.1207时出现附件中问题1的情况。…

查看全部问答>