Keil 51 Asm & C 混搭

发布者:WhisperingHeart最新更新时间:2018-10-17 来源: eefocus关键字:Keil  Asm 手机看文章 扫描二维码
随时随地手机看文章

对应的文件选中“Generate Assembler SRC File”和“Assemble SRC File”选项,注意源先这两项是灰色选中,鼠标点击后将其确认为黑色选中状态。


(可选)同时编译的时候确保相应的库在Source Group下,如small模式,则加入C51S.lib到项目下。


Keil在DEBUG模式下,右键菜单“Load Hex or Object file ...”可有反汇编外部二进制模块的功能。其实IDA5.x/6.x的对单片机的支持相当不错了,没有误码。其他的反汇编工具多少都有错误的代码译出,IDA对付花指令相当有效。


以下混编例程是一款 红外逻辑分析仪的反汇编整理后的程序。原程序只有HEX码,反编译后加入了C结构,原ASM码的效率高些,但在STC 一周期指令的芯片上基本可以忽略。


原 红外逻辑分析仪 界面

Keil <wbr>51 <wbr>Asm <wbr>& <wbr>C <wbr>混搭

#include


//汇编改写定时器0中断,编译会有CodeOverlay的警告信息,可以忽略,C结构的main入口由STARTUP.A51定义

#pragma ASM

ORG 000BH

LJMP TIMER0

#pragma ENDASM


#define FOSC 22118400L


sbit LED_FLASH=P1^3;


//可以部署在DATA,IDATA数据区

unsigned int ms_count=1000;


void i_exint0() interrupt 0 using 0{ //使用寄存器组,可以实现快速的压/出栈

#pragma ASM

SETB    TR0

CLR    0x90.2

CLR    TI

SETB    ES


MOV    SBUF,0x20

MOV    0x20,#0x00

SETB    0x21.7

JNB    INT0,$

CLR    TI

SETB    ES

MOV    SBUF,0x20

MOV    0x20,#0x00

#pragma ENDASM  

}


void i_serial() interrupt 4 using 0{

#pragma ASM

CLR     TI

CLR     ES

MOV     SBUF,0x21

MOV     0x21,#0x00

#pragma ENDASM  

}


#pragma ASM

TIMER0:      

MOV    A,0x20

ADD    A,#0x01

MOV    0x20,A

MOV    A,0x21

ADDC    A,#0x00

MOV    0x21,A


JNB    0x21.5,_TIMER0_RET

CLR    TR0

SETB    0x90.2

MOV    0x20,#0x00

MOV    0x21,#0x00

_TIMER0_RET:   

RETI

#pragma ENDASM    


void main(void){

    

SCON=0x40;
    

TMOD=0x22;
    

TH1=0xff;
    

TL1=0xff;
    

TH0=0xdb;
    

TL0=0xdb;
    

PCON=0x80;

#pragma ASM //bdata 数据区
    

MOV 0x20,#0x00
    

MOV 0x21,#0x80

#pragma ENDASM  
    

EA=1;
    

EX0=1;
    

IT0=0;
    

ET0=1;
    

TR1=1;
    

PS=1;
    

PT0=1;
    

INT0=1;
    

TR0=1;
    

while(1){   }

}


关键字:Keil  Asm 引用地址:Keil 51 Asm & C 混搭

上一篇:51单片机寄存器配置小技巧
下一篇:用单片机玩PID控制—从理想PID控制至先进PID控制_1

推荐阅读最新更新时间:2024-03-16 16:16

MCS51单片机的滤波程序
MCS51单片机的滤波程序 ;限幅滤波程序 ;入口 :A,SDAT,DELTY ;占用资源:B ;堆栈需求:2字节 ;出口 :A JUGFILT :MOV B,A CLR C SUBB A,SDAT JNC JUGFT1 CPL A INC A JUGFT1 :SETB A SUBB A,#DELTY JNC JUGFT3 MOV A,SDAT RET JUGFT3 :MOV A,B MOV SDAT,A RET ;中位值滤波程序 ;入口 :ADDPH,ADDPL,N ;占用资源:E
[单片机]
利用51单片机统计脉冲个数,即时输出显示
;利用51单片机设计一个计数显示系统,要求8个数码管显示T1输入脉冲的个数。 ;最好用汇编语言,加注释,尽量别太复杂。尽量快些哈! ;悬赏分:30 | 解决时间:2011-7-20 19:15 | ;===================================================== ;最佳答案: ;题目要求在T1端输入脉冲,统计脉冲个数,并即时输出显示,使用8个LED数码管,显示:0000 0000~9999 9999。 ;计数、显示,很简单的。虽然要求的位数较多,但是循环一下,也就可以了。 ;程序用汇编汇编语言编写好了,指令不超过50行,太简单了。 ;题目只是要求在T1端输入脉冲,并没有指出显示电路,那么
[单片机]
利用<font color='red'>51</font>单片机统计脉冲个数,即时输出显示
S3C2440—4.时钟系统
一.S3C2440时钟体系介绍 1.总线与时钟 S3C2440有俩个总线:AHB高速总线、APB外围总线。 对应三个时钟源: ARM芯片CPU的FCLK AHB总线的HCLK APB总线的PCLK 三个时钟的工作频率: (可以看出对比STM32中72MHz的频率,ARM时钟的性能有了很大的提高) 2.时钟来源 如何得到三种时钟?系统的时钟来源是12MHz的晶振,通过PLL锁相环硬件设备可以得到高达400MHz的时钟频率,其时钟框图如下: 可以看出系统时钟来源的选择有俩种: 晶振 外部输入 (这里只讨论晶振) 3.选择时钟 通过设置OM 可以选择时钟源: 设置方法如下: 打开原理图查看
[单片机]
S3<font color='red'>C</font>2440—4.时钟系统
触屏尺寸成谜 诺基亚D1C配置全面泄露
    此前安兔兔曝光的诺基亚D1C跑分成绩引起了不少人的关注,而现在这款神秘新机又在图形测试网站GFXBench最新公布的信息中浮出水面,确认将搭载骁龙430处理器,拥有3GB RAM+16GB ROM的存储组合,但出人预料的是,该款新机的触控屏尺寸变成了13.8英寸,并且主摄像头规格也略有升级,看上去似乎是一款平板电脑。   配置全面曝光   从此次图形测试网站GFXBench公布的诺基亚D1C的相关信息来看,该机确实搭载的是骁龙430处理器,主频速度为1.4GHz, 采用了Cortex-A53八核架构和集成Adreno 505图形芯片;拥有3GB RAM+16GB ROM的存储组合,并搭载Android 7.0系统,与此前
[手机便携]
C51与汇编混合编程详解
1.在 C文件中要嵌入汇编代码片以如下方式加入汇编代码: #pragma ASM ;Assembler Code Here #pragma ENDASM   2.在 Project窗口中包含汇编代码的 C文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;   3.根据选择的编译模式,把相应的库文件(如 Small模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中,该文件必须作为工程的最后文件;   4.编译,即可生成目标代码。   来个实例吧: #includ
[单片机]
S3C2440开发板文件传输
看着教程里的各种软件,真是晕的不行,好好整理。 一、空白开发板第一步---写bootloader 类似于给电脑装系统,不装系统就是一块集成电路板,鸟用没有。bootloader就等价于bios,常用的bootloader有U-BOOT、supervivi(改进的vivi,加了一个usb下载功能而已)。工具是真的多,各种开发板制作商家都可能开发出自己的一套下载工具,五花八门,想想刚开始接触的时候,试工具都试了几天,想想也是心累,区分一下各种名词: 1、JTAG 开发板在没有写任何系统时,里面啥驱动都没有,芯片是啥都不会认的,usb、串口接了也不会有反应。还好有JTAG协议,原本是用来做芯片测试的,这里拿来写引导程序。 2、JLINK
[单片机]
步进电机加速-匀速-减速运行程序(C51源程序)
ME300系列单片机开发系统+步进电机模块演示程序 功能:步进电机以加速方式启动,转速达到程序规定的最快速度后保持一段时间匀速运转,又开始以减速 方式运行直到步进电机停止转动。由K1键控制演示程序运行。步进电机模块上D1-D4可以指示工作状态。 /******************************************************************/ /* */ /* ME300B单片机开发系统演示程序 - 步进电机加减速运行程序
[单片机]
步进电机加速-匀速-减速运行程序(<font color='red'>C</font><font color='red'>51</font>源程序)
基于8051单片机的频率测量技术
0 引言 随着无线电技术的发展与普及,"频率"已经成为广大群众所熟悉的物理量。而单片机的出现,更是对包括测频在内的各种测量技术带来了许多重大的飞跃,然而,小体积、价廉、功能强等优势也在电子领域占有非常重要的地位。为此.本文给出了一种以单片机为核心的频率测量系统的设计方法。 1 测频系统的硬件结构 测量频率的方法一般分为无源测频法、有源测频法及电子计数法三种。无源测频法(又可分为谐振法和电桥法),常用于频率粗测,精度在1%左右。有源比较法可分为拍频法和差频法,前者是利用两个信号线性叠加以产生拍频现象,再通过检测零拍现象进行测频,常用于低频测量,误差在零点几Hz;后者则利用两个非线性信号叠加来产生差频现象,然后通过检测零差现象进
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved