历史上的今天
返回首页

历史上的今天

今天是:2024年10月28日(星期一)

正在发生

2020年10月28日 | 51单片机C语言调用汇编子程序的简便方法

2020-10-28 来源:51hei

1、在汇编文件中,程序前边加上如下三句话就可以:

PUBLIC   _delay, _binrlc       ;定义公用子程序名,这里定义了两个子程序(有下划线)

LUOYUAN  SEGMENT CODE  ;程序段命名,LUOYUAN,叫啥名都可以

RSEG     LUOYUAN


下边放子程序(程序名要下划线,其它标号不要下划线)


;汇编语言文件

PUBLIC  _delay, _binrlc;定义子程序名

LUOYUAN  SEGMENT CODE  ;命名LUOYUAN的程序段

RSEG     LUOYUAN


_delay:  MOV P1,#55H

             MOV R2,#30H

        DJNZ R2,$

        RET

;**********************************************;P3.2  74LS595锁存口

;P3.3  74LS595时钟口;P3.4  74LS595数据口

;P3.5  工作指示

;**********************************************

_binrlc: CLR P3.2                ;锁存

         MOV A,R7

         ;XRL A,#0FFH    ;显示要取反

         MOV R3,#8H        

binrl1: CLR  P3.3       ;时钟位下降

        RLC A           ;连同进位左移1位

            MOV P3.4,C      ;进位到直接寻址位

        SETB P3.3       ;时钟位上升

        DJNZ R3,binrl1


        SETB P3.2       ;锁存

                CPL P3.5   ;取反闪亮

        RET

END



2、在C程序中,先声明外部函数,不然编译找不到函数错误,然后就如同C程序中调用C函数一样


binrlc(SBUF);   不要下划线。

本程序89C51接收PC 串口来的数据,送到74LS595驱动的LED显示。


//89C51串口0方式驱动74LS595

// 11.0532

// P3_4控制锁存

#include "AT89X51.h"


void initUart(void)

{

TMOD|=0x20;

SCON=0x50;

PCON|=0x80;

TH1=0xfa;

TL1=0xfa;

TR1=1;

ES=1;

}

extern void binrlc(char);      //外部函数声明


void uart(void) interrupt 4

{

if(RI)

{

    RI=0;

     binrlc(SBUF);    //调用汇编子程序,方式同C子程序一样

         P1= SBUF;

}

else

    TI=0;

}

void main(void)

{

initUart();

EA=1;

while(1);

}


推荐阅读

史海拾趣

Display Engineering Services公司的发展小趣事

以下是五个电子行业里Display Engineering Services公司发展起来的相关故事:

故事一:
在科技日新月异的今天,XX公司凭借其在Display Engineering Services领域的专业技术和创新能力,逐渐崭露头角。起初,XX公司只是一家专注于显示屏研发的小型技术公司,但在市场需求的驱动下,公司意识到为客户提供定制化的显示屏解决方案具有巨大潜力。于是,XX公司开始将重心转移到Display Engineering Services上,通过深入了解客户需求,提供从设计、制造到安装的全流程服务。经过数年的努力,XX公司不仅积累了丰富的经验,还建立起一支专业的技术团队,赢得了业界的广泛认可。

故事二:
YY公司的发展历程颇具传奇色彩。该公司最初只是一家为电子产品提供显示屏配件的供应商。然而,随着市场竞争的加剧,YY公司意识到单纯提供配件已无法满足客户需求。于是,公司决定转型为Display Engineering Services提供商,致力于为客户提供显示屏的定制设计和优化服务。YY公司凭借其卓越的技术实力和敏锐的市场洞察力,成功转型,并在短时间内实现了业务的快速增长。如今,YY公司已成为行业内的佼佼者,其显示屏解决方案广泛应用于各个领域。

故事三:
ZZ公司是一家专注于Display Engineering Services的创业公司。在创立之初,公司面临着资金短缺、技术瓶颈等诸多困难。然而,创始人凭借对技术的热爱和对市场的敏锐洞察,带领团队攻克了一个又一个技术难题。同时,ZZ公司还积极寻求外部合作,与多家知名企业建立了紧密的合作关系,共同开发具有市场竞争力的显示屏产品。在团队成员的共同努力下,ZZ公司逐渐在Display Engineering Services领域崭露头角,成为了一家备受瞩目的创新型企业。

故事四:
AA公司的发展历程充满了挑战与机遇。在成立初期,公司面临着激烈的市场竞争和不断变化的客户需求。为了应对这些挑战,AA公司决定加大研发投入,不断提升自身的技术实力。同时,公司还积极拓展国际市场,与全球多家知名企业建立了合作关系。通过不断的技术创新和市场拓展,AA公司逐渐在Display Engineering Services领域树立了良好的品牌形象,赢得了客户的信赖和支持。

故事五:
BB公司是一家历史悠久的Display Engineering Services企业。多年来,公司始终坚持以客户需求为导向,不断提升服务质量和技术水平。为了保持竞争优势,BB公司不断引进先进的生产设备和技术人才,加强内部管理和质量控制。同时,公司还积极参与行业交流和合作,与国内外多家知名企业建立了良好的合作关系。在多年的发展中,BB公司积累了丰富的经验和技术优势,成为了行业内的领军企业之一。其显示屏解决方案广泛应用于各个领域,并获得了多项国内外技术专利和荣誉。

ANOVA公司的发展小趣事

ANOVA公司的全球扩张步伐迅速而稳健。在成功创立之后不久,ANOVA便通过收购ISA,进一步增强了其在全球市场的竞争力。这次收购不仅使ANOVA在全球超过70个国家拥有了监控超过70万台设备的能力,更在北美、南美、欧洲和亚太等关键地区设立了办公室,为公司的全球化战略打下了坚实的基础。ANOVA始终坚持本地化服务,无论客户身处何地,都能享受到最高级别的服务和支持。

Epistar Corp公司的发展小趣事

面对不断变化的市场需求和行业竞争格局Epistar始终保持创新精神不断探索新的技术方向和应用领域。公司加强与高校和研究机构的合作共同研发新技术、新产品;同时,Epistar还积极参与制定行业标准推动LED行业的健康发展。这些创新举措使Epistar在行业中始终保持领先地位引领着未来LED技术的发展方向。

BESTECH公司的发展小趣事

随着LED技术的不断发展,Epistar开始将目光投向国际市场。公司积极参与各类国际展会和论坛,展示其先进的LED产品和技术实力。同时,Epistar还加强了与国际知名企业的合作,共同开发新产品,拓宽销售渠道。这些努力使Epistar的品牌知名度和市场份额不断提升,公司逐渐在国际LED市场上崭露头角。

Everspin公司的发展小趣事

尽管Everspin在初期经历了亏损,但随着时间的推移,其财务状况逐渐改善。特别是在XXXX年和XXXX年,Everspin的总收入和净利润均实现了显著增长。这一财务表现证明了Everspin在MRAM领域的领先地位和持续盈利能力。

General Cable公司的发展小趣事
在编码电路中,可能需要通过调整相关元件(如电阻、电容等)的参数来精确设置时钟频率,进而实现所需的载波频率。

问答坊 | AI 解惑

5口以太网交换机原理图

哥们今天刚按照实物反推出的,主芯片为DM9081的5口以太网交换机原理图.PROTEL99SE格式. [ 本帖最后由 西门 于 2009-5-12 18:31 编辑 ]…

查看全部问答>

关于OP07

哪位可以给我讲讲这电路上面的二极管是什么作用啊,特别是为什么要在OP07反馈和输出端加上IN4148…

查看全部问答>

一种用N+1条线实现矩阵键盘的方法

键盘输入作为最常用的输入设备仍有其不可替代的作用。下面首先对传统键盘作一个简单的介绍。 (1)传统键盘的介绍键盘的结构通常有两种形式:线性键盘和矩阵键盘。在不同的场合下,这两种键盘均得到了广泛的应用。线性键盘由若干个独立的按键组成, ...…

查看全部问答>

Platform Builder 4.2中自带的S3C2410BSP可以用于S3C2440么?

Platform Builder 4.2中自带的S3C2410 BSP可以用于S3C2440么? 或者哪里有下载用于S3C2440 BSP for PB4.2的?…

查看全部问答>

我做了一块485通讯板子,帮我看看?

     专业做单片机软硬件开发                地址:哈尔滨市 南岗区 会展中心             ...…

查看全部问答>

学习之MSP430中断

中断是MSP430微处理器的一大特色,有效地利用中断可以简化程序和提高执行效率。 MS430 的中断比较多,几乎每个外围模块都能够产生中断。MSP430 可以在没有事件发生时进入低功耗状态,事件发生时,通过中断唤醒CPU ,事件处理完毕后,CPU 再次进 ...…

查看全部问答>

请教:TI的M4单片机中的自带ROM里的程序是出厂就烧制好的吗?

用户自己能不能更改这个ROM内容,或者供用户使用?…

查看全部问答>

UDA1341驱动问题

有人用FPGA驱动过UDA1341吗?UDA1341芯片的L3MODE,L3CLOCK.L3DATA三个信号引脚对AD,DA有影响吗?…

查看全部问答>

ADuC7061中断方式实现串口通信

/******************************* * name: * function: * return: ********************************/ #include \"string.h\" #include \"global.h\" #include \"function.h\" #include #include unsigned char UartDataRecevice; un ...…

查看全部问答>

有人熟悉这块单片机板子么?Inter 8086的

在大四毕业季后,俺和同学去淘学长们遗留的“废品”。得此物,一查PDF,什么上世纪70年代的PDF,板子上印的是2009年做的。茫然呀…

查看全部问答>