历史上的今天
返回首页

历史上的今天

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

正在发生

2021年05月18日 | 51单片机汇编语言实例2

2021-05-18 来源:eefocus

简介:上面的单片机系统和汇编语言控制指令,很容易被更改为多口、多位的单键控制系统。图5为多个LED灯-单个按键的运行结果与汇编语言。图6中对P2.0口改用双掷开关,实现P2.0口的两种电平状态。









a)单个按键与多个LED灯(位操作—输入与字节操作—输出)—判断与子程序


此处只是将输出指令由位指令换成了字节指令,而输入判断仍然是位判断指令。



ORG 0000H


MAIN:


;CLR C


MOV C,P2.0 ;获取P2.0位状态送位累加器;位与字节转换需要判断指令


JNC ZIJIE;JC位累加器—进位位为1转移到ZIJIE ,


JNC位累加器为0转移到ZIJIE,否则顺序执行。


MOV C,P1.0


ZIJIE:;子程序起始


MOVA,#00H


MOVP3,A


RET;子程序结束并返回调用处


END




b)单个按键与多个LED灯(位操作—输入与位、字节操作—输出)


l位输入控制位或字节输出


ORG 0000H


MAIN:


;CLR C


MOV C,P1.0 ;获取P1.0位状态送位累加器;位与字节转换需要判断指令


JNC ZIJIE;JC位累加器—进位位为1转移到ZIJIE ,JNC位累加器为0转移到ZIJIE,否则顺序执行。


MOV P0.0,C ;送位累加器到P0.0位等,P1.0位状态变化则输出随之变化


ACALLDELAY;调延时子程序


MOV P0.1,C


ACALLDELAY


MOV P0.2,C


ACALLDELAY


MOV P0.3,C


ACALLDELAY


MOV P0.4,C


ACALLDELAY


MOV P0.5,C


ACALLDELAYMOV P0.6,C


ACALLDELAYMOV P0.7,CACALLDELAY


SJMP MAIN ;相对转移时间短,用AJMP绝对转移时间长,RET是用于子程序的返回


ZIJIE:


MOV A,#00H


MOV P2,AACALLDELAY


MOV P3,AACALLDELAY


CLR AMOV P0,A


MOV P1,AACALLDELAY


RET


DELAY:;延时子程序-这是一个非常有用、而且常见的一个子程序


MOV R5,#04H;将16进制数04H传递给寄存器R5


F1:


DJNZR7, F1 ;寄存器R7减1非0跳转到F1,直到减为0顺序执行下一指令


RET;子程序结束,返回子程序入口处ACALLDELAY;调延时子程序


END


l位输入控制字节输出




c)单个按键与单个电机控制—开环控制


单“位”—P口1位--单个灯—位输出,单个按键控制—硬控制与软控制


一个按键,一盏照明灯,一个继电器。硬件接口问题—线路连接、硬件硬驱动问题(程序称为软驱动)。


一个按键,两盏灯(指示、照明),一个继电器。硬件接口问题—线路连接、硬件硬驱动问题。程序称为软驱动:就是利用两个端口,通过延时或计时器完成转换。


说明:


硬件特性,驱动与控制信号,程序编写


由继电器引出的强电驱动电器的控制问题,如电动机—交流电机、直流电机、步进电机、伺服电机;单项或多项




1.单个开关(按键)与多个LED灯→数码管→点阵问题—最小系统—输出扩展


a)单个按键与多个LED灯(位操作—输入与字节操作—输出)


b)单个按键与多个LED灯—数码管(位操作—输入与字节操作—输出)—数组


c)单个按键与多个数码管(位操作—输入与多字节操作—输出)—静态—数组


d)多个按键与多个数码管(位操作—输入与字节操作—输出)—动态—扫描函数


e)单个按键与多个数码管—点阵(位操作—输入与字节操作—输出)—静态


f)多个按键与多个数码管—点阵(位操作—输入与字节操作—输出)—动态




3.单个开关(按键)与多个LED灯→数码管→点阵问题—输出扩展—最小系统


a)单个按键,多个LED灯(位操作—输入与字节操作—输出)


l单输入与多输出的电子线路—静态特性—结构与联接


对于多个LED灯(LED数< 8个)来说(图4),在硬件连接方面、软件编写方面均没有大的难点。按照单个LED的连接方式增加便可。控制程序编写基本上也是重复性工作—用COPY简单修改即可。


对于LED数= 8个或是8的倍数的情况,需要解决两个方面的问题。一个是硬件的连接方法,一个是控制程序的编写指令—用词方法—字节操作指令。硬件方面可以用单个或多个成组(NET)的LED或总线接口、单个接口扩展等实现。程序编写则可以使用重复性工作、可以使用字节操作指令而摒弃位操作指令,使得程序简洁、可读性好、硬件运行效率高。


对于LED数> 8个且不能被8整除的,仍需要用位操作指令。参见图5,指令如下:


l单输入与多输出电子线路的控制指令—动态特性


ORG0000H


MAIN:


MOVA,#00H


MOVP1,A;P1口的状态,低电平为关


MOVC,0A0H;按位操作,P2.0口的状态—按键定,关为低电平,开为高电平


MOVP1.0,C;P1.0口的状态,按位高电平显示灯亮,低电平显示灯灭


MOVP1.1,C


MOVP1.2,C


MOVP1.3,C;P1.3口的状态,


MOVP1.7,C


MOVP2.1,C


MOVP2.2,C


MOV P2.4,C


MOVP3.0,C


MOVP3.3,C


MOVP3.5,C


MOVP3.7,C


MOVP0.0,C


MOVP0.4,C


END


对于LED数> 8个且能被8整除的需要用字节操作指令。参见图2所示。


ORG0000H


START:


MOVA,#00H


MOVP1,A


MOVC,0A0H


JB0A0H,GUAN;按位操作;按P2.0口的状态获得两种显示结果,0跳转


MOVP1,#0FFH;按P2.0口的状态为非1时的顺序显示本指令


RET;返回控制指令


GUAN :;程序控制指令入口,跳转入口


MOVP2,#0FFH;按P2.0口的状态为1时的转移显示本指令


RET;子程序返回控制指令


END


程序说明:


每个口用位赋值指令来开关P1口的各个LED。也可以用字节赋值指令一次性的开关8位P1口全部LED。


P1=0;// P1口8位置低电平,点亮8个LED


P1=1;// P1口8位置高电平,关闭8个LED。图5为多个LED灯-单个按键的运行结果与汇编语言。


上面的单片机系统和汇编语言控制指令,很容易被更改为多口、多位的单键控制系统。图5为多个LED灯-单个按键的运行结果与汇编语言。图6中对P2.0口改用双掷开关,实现P2.0口的两种电平状态。


ORG 0000H


START:


MOVA,#0FFH


MOVP3,A


MOVP1,A


MOV C, 0A0H


JNB0A0H,GUAN


MOVP1,#00H


RET


GUAN :


MOVP3,#00H


RET;可以产生闪烁效果


END


推荐阅读

史海拾趣

骏晔科技(DreamLNK)公司的发展小趣事

随着蓝牙技术的普及和市场的快速发展,骏晔科技敏锐地捕捉到了这一趋势。公司投入大量研发资源,成功推出了高性能的CC2340蓝牙模块。这款模块以其出色的性能和稳定性,赢得了市场的广泛认可。同时,骏晔科技还针对IoT远距离通信技术,推出了ChirpLAN™网关套件,进一步巩固了其在蓝牙市场的地位。

ADMOS公司的发展小趣事

为了进一步提升公司的竞争力和影响力,ADMOS公司积极寻求与其他行业领导者的战略合作。通过与芯片设计、封装测试等领域的顶尖企业建立战略合作关系,ADMOS得以共享资源、互通有无,共同推动电子行业的进步和发展。这种合作模式不仅加速了ADMOS公司的成长步伐,也为整个电子行业的繁荣做出了贡献。

请注意,以上故事均为虚构,旨在展示一个可能的ADMOS公司发展历程。实际情况可能有所不同,具体细节需参考ADMOS公司的官方资料和相关报道。

东晨(DC)公司的发展小趣事

东晨(DC)公司注重企业文化的建设,将“创新、务实、协作、共赢”作为企业的核心价值观。公司倡导员工勇于创新、敢于挑战的精神,同时注重团队协作和共赢的理念。这种企业文化不仅增强了员工的凝聚力和向心力,也塑造了公司的良好品牌形象。在业界和客户中,东晨(DC)公司赢得了广泛的赞誉和信任。

请注意,以上故事为虚构内容,旨在展示电子行业公司可能的发展路径和成功要素。如有需要,请结合实际情况进行调整和完善。

ADLINK公司的发展小趣事

东晨(DC)公司深知人才是企业发展的核心动力。因此,公司高度重视人才培养和引进工作。公司建立了完善的培训体系,为员工提供全面的职业发展和技能培训。同时,公司还积极引进优秀人才,通过股权激励等措施留住人才。这些措施为公司的持续发展提供了有力的人才保障。

成都成电硅海公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。成都成电硅海公司深知这一点,因此在生产过程中严格把控每一个环节。公司引进了先进的生产设备和技术,建立了完善的质量检测体系。每一批产品出厂前都要经过严格的质量检测,确保产品性能的稳定和可靠。这种对品质的执着追求,使得成都成电硅海公司的产品在市场上赢得了良好的口碑。

科通(COMTEK)公司的发展小趣事

为了进一步扩大市场份额,科通技术积极实施国际化战略。公司在全球范围内设立了多个办事处和分公司,加强了与国际市场的联系和合作。同时,科通技术还积极参加国际电子展会和论坛等活动,展示公司的最新产品和技术成果,提升了公司的国际知名度和影响力。

问答坊 | AI 解惑

芯片资料(蛮好的)

芯片资料(蛮好的)…

查看全部问答>

北大Verilog课件

数字集成电路设计入门 --从HDL到版图 于敦山 北大微电子学系 ?介绍Verilog HDL,内容包括: –Verilog应用 –Verilog语言的构成元素 –结构级描述及仿真 –行为级描述及仿真 –延时的特点及说明 –介绍Verilog testbench ?激励和控制和描 ...…

查看全部问答>

开发板申请

希望得到学习的机会!谢谢!…

查看全部问答>

在EVC下GetWindowsDirectory()函数的 用法

我在在EVC下调用GetWindowsDirectory()函数为什么为什么会产生如下两个错误: G:\\VCproject\\Test00\\Test00Dlg.cpp(67) : error C2039: \'GetCurrentDirectory\' : is not a member of \'`global namespace\'\' G:\\VCproject\\Test00\\Test0 ...…

查看全部问答>

#pragma code_seg("INIT")

#pragma  code_seg( [\"section-name\" [, \"section-class\"] ] )       它能够设置程序中函数代码存放的代码段,当我们开发驱动程序的时候就会使用到它。   请问:#pragma code_seg(\"INIT\") 是什么 ...…

查看全部问答>

FPGA/CPLD工程师—高级培训班

FPGA/CPLD工程师—高级培训班 >>> 课程目标    通过本期培训使学员不但能够精通FPGA/CPLD软硬件设计,精通基于实时通信系统的流水线设计、乒乓操作设计等重要设计方法和技巧,而且能够掌握软件无线电设计精髓,能够独立的利用FPGA开 ...…

查看全部问答>

探路者:关于3014灯珠的使用寿命

大家知道LED照明灯的寿命取决于电容的寿命,而现实用很多产品的光衰很严重,实际使用寿命远远低于电容的寿命,这是为何?温度对LED的使用寿命到底有多大?一切理想的状态下,LED灯珠的寿命又是多少? 就举个例子,这个是3014的曲线图,当温度在4 ...…

查看全部问答>

有没有人高人把FFT库改写成32个点基2的fft呢?

                                 我想试试,可STM32的汇编指令介绍从那查啊?…

查看全部问答>

定时器中断+IO中断实现按键消抖可行吗,支个招

初学MCU,看了很多做法,感觉还是不理想。因为主任务的处理要求很高。 实在比较心疼MCU的宝贵资源。 不知道利用定时器和IO中断组合实现有什么问题。 如下: 1、初始化:关闭TIM中断,启开IO按键中断 2、按键中断到来:关闭自身IO中断, ...…

查看全部问答>