历史上的今天
返回首页

历史上的今天

今天是:2025年03月08日(星期六)

2018年03月08日 | 如何在KEIL中实现C语言嵌套汇编语言

2018-03-08 来源:eefocus

    一、讲解背景

    在单片机学习的过程中,掌握一点汇编语言是非常有必有的,作为低级语言汇编语言在单片机开发中有它不可取代的作用,比如每条指令可以精确的确定延时时间,便于理解非常适合硬件工程师学习。但是要提高单片机技能,必须掌握C 语言编程,因为C 语言有强大的模块化管理思想。我想在很多人学习的过程中即学了汇编语言,又学习了C  语言,那么一个问题便随之而产生,如果将C  语言与汇编语言相互结合,达到更好的编程效果,本次讲解就是基于这个问题而生成的。

 

    二、操作步骤

    第一步:

    在KEIL 中新建工程及文件并复制以下程序并保存为C 文件:

    /*

    功能:C 语言里嵌套汇编语言,起到抛砖引玉的作用

    */

    #include

    delay()

    {

    int i,j;

    for(i=0;i<1000;i++)

    for(j=0;j<120;j++); //12M 晶振下延时1MS

    }

    main()

    {

    P2=0x00; //控制8 个LED 亮

    delay(); //延时1S

    #pragma ASM//汇编嵌套开始

    MOV P2,#0FFH  //汇编嵌套结束

    #pragma ENDASM//汇编嵌套开始

    while(1); //C 程序结束

    }

    第二步:

    选中 Project  窗口中的C  文件,比如CX1.C,并右键,选择“Options  for  ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使复选框的打钩由灰色变成黑色状态(双击即可);

 

    第三步:

    将相应的库文件(如 Small        模式时,是 KeilC51LibC51S.Lib)加入工程中,      该文件必须作为工程的最后文件 (将该文件像头文件一样加载到工程中);

    第四步:

    在KEIL 中编译生成HEX 文件,并按如下图设计仿真图,在仿真中查看效果。

    三、演示效果

    如下图,如果你在你自己的仿真软件PROTEUS 上看到单片机P2  口控制的8 个LED 先亮延时1S 左右自动熄灭的效果。那说明你已经完全掌握C 语言里嵌套汇编语言的方法了。

    12.jpg?imageView2/2/w/550

推荐阅读

史海拾趣

德旭电子(DEXU)公司的发展小趣事

在德旭电子的发展历程中,供应链管理和成本控制一直是公司关注的重点。为了降低生产成本和提高产品质量,公司不断优化供应链管理流程和技术手段。

德旭电子与多家优质供应商建立了长期稳定的合作关系,并通过引入先进的供应链管理软件和系统实现了供应链的数字化和信息化管理。这些措施有效提高了供应链的响应速度和灵活性,降低了库存和运营成本。

在成本控制方面,德旭电子注重精细化管理和持续改进。公司通过优化生产流程、提高生产效率、降低能耗和原材料成本等措施不断降低生产成本。同时,公司还建立了完善的成本管理体系和考核机制确保成本控制工作的有效实施。

Ametherm公司的发展小趣事

Ametherm公司成立于XXXX年,由一群热衷于电子技术的工程师创立。他们看到了功率热敏电阻在电子行业中的巨大潜力,并决定专注于此领域的发展。在创立初期,公司面临着资金短缺、市场竞争激烈等挑战,但创始人们凭借着对技术的热情和坚持,逐步攻克了技术难关,开发出了具有竞争力的产品。

FEMA Electronics Corporation公司的发展小趣事

随着科技的不断发展,FEMA意识到只有不断创新才能在竞争激烈的市场中立于不败之地。因此,公司加大了研发投入,不断推出具有自主知识产权的新产品。其中,一款高性能的集成电路芯片在市场上引起了广泛关注。这款芯片不仅性能卓越,而且具有极高的性价比,迅速赢得了客户的青睐。FEMA凭借这一产品,成功打开了新的市场领域,实现了业务的快速增长。

FDK AMERICA公司的发展小趣事

在电子行业的早期,FDK AMERICA公司凭借其卓越的技术研发能力,成功开发出一款高性能的集成电路产品。这款产品在市场上迅速获得了认可,并为公司带来了可观的利润。随后,公司继续加大研发投入,不断推出创新产品,逐步确立了其在电子行业的领先地位。

Flexxon Pte Ltd公司的发展小趣事

在电子行业日新月异的背景下,Flextronics(Flexxon Pte Ltd)始终将技术创新视为企业发展的核心动力。公司投入巨资于自动化生产线、智能制造系统和物联网技术的研发,实现了生产过程的智能化和数字化。这一举措不仅提升了生产效率,还使得Flextronics在定制化生产、快速响应市场变化方面具备了显著优势。随着5G、物联网等新兴技术的兴起,Flextronics更是积极拥抱变革,与多家科技公司合作,共同推动电子产品的创新与发展。

Electronic公司的发展小趣事

华为,作为中国的科技巨头,其在电子行业的发展历程中展现出了强大的技术实力和全球视野。华为在通信领域取得了多项技术突破,如5G技术的领先和智能手机拍照技术的创新。同时,华为还积极拓展全球市场,与全球运营商建立了广泛的合作关系。然而,面对国际市场的复杂环境和竞争压力,华为也面临着诸多挑战和不确定性。

问答坊 | AI 解惑

打上yaffs2补丁了,内核配置时还是没有yaffs2选项。

我的内核是Linux 2.6.14.1, 官网下载了yaffs2补丁,解压后运行 patch-ker.sh c /home/my2410/linux2.6.14.1,,提示: [root@Lanry yaffs2]# ./patch-ker.sh c /home/my2410/kernel/linux-2.6.14.1 Updating /home/my2410/kernel/linux-2.6.14.1/f ...…

查看全部问答>

有什么方法可以判断某仪器的空间位置.

比如一个仪器,在一个房间里移动,需要什么技术得对这个仪器对房间的空间坐标.…

查看全部问答>

新手求助,ld命令的问题.

我建立了一个工程,生成目标文件mutex.o.启动vxsim目标服务器,名称为vism@zxj. 在shell里面输入ld vism@zxj mutex.提示mutex未定义符号?要怎么输入呢? 刚开始学一天,问这个白痴问题,请大家不要见笑.…

查看全部问答>

庆祝一下有人倒分被抓!SF

以后要加小心了,呵呵。…

查看全部问答>

求助!FC7上的minicom读不到串口信息……

我在新装的fedora 7下用minicom看2410的串口信息!可是没有任何显示!我在redhat9的minicom和xp的dnw上是可以显示的。 串口的设置serial device:/dev/ttyS0                   &nbs ...…

查看全部问答>

用IAR建立工程不成功,请大家帮助。

用IAR自己建立一STM32工程,编译提示找不到*.h文件。自己觉得可能是c/c++ compiler下Proprocess处设置的原因,目前是参考万利的设置: $PROJ_DIR$.. $PROJ_DIR$....Libraryinc 不成功,烦请高手指点下。 工程在此: ...…

查看全部问答>

DSP不停复位,求助!

我现在的板子,JTAG可以烧写程序,可以调试。复位芯片用的MAX708R,用JTAG仿真,F5运行, / RESET 引脚上常为高,DSP2812正常工作,但是拔掉仿真器,断电后,用示波器检测/RESET(MAX708R) 检测到有200HZ的复位信号,。XCLKOUT 输出为3.75M,奇怪了 ...…

查看全部问答>

设计一个定时中断程序

急急急,帮忙设计一个10ms定时中断程序!!!跪谢!!!…

查看全部问答>

低电平测量的三同轴电缆和保护连接

如前所述,当我们把保护电压连到同轴电缆[1]的屏蔽时,如果该保护电压大于30V有效值,就可能出现安全风险。三同轴电缆用连至大地或LO端的外层屏蔽将保护屏蔽包围起来,从而避免了这种危险。 当静电计按无保护方式工作时,三同轴电缆的连接方法 ...…

查看全部问答>

MSP430下一代产品wolverine

TI发布MSP430下一代微处理器平台wolverine(金刚狼),功耗降低50%。wolverine 的超低功耗得益于三个方面:一、超低漏电 (ULL) 工艺技术。独特的混合信号超低漏电流工艺技术可实现众多的新型低功耗外设,在任何温度下均始终如一地保持低功耗特 ...…

查看全部问答>