历史上的今天
今天是:2024年10月17日(星期四)
2018年10月17日 | Keil 51 Asm & C 混搭
2018-10-17 来源:eefocus
对应的文件选中“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 一周期指令的芯片上基本可以忽略。
原 红外逻辑分析仪 界面

#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){ }
}
史海拾趣
|
如果用ads开发 是不是每个程序都要用到44b0的启动代码 不同程序启动代码都一样吗 我听说用iar开发不用启动代码 和用keil一样 44b0+iar+jtag 可以吗… 查看全部问答> |
|
一. 波特率 并行通信中,传输速率是以每秒传送多少字节(B / S)来表示。而串行通信中,传输速率在基波传输的情况下(不加调制,以其固有的频率传送)是用每秒钟传送的位数(bit/s)即波特率来表示。因此,1波特=1位/秒。 最常用的标 ...… 查看全部问答> |
|
在研究高砂的电路的时候你不会有太多先进的感觉,也许是十多年前的设计缘故。似乎觉得他的模拟电路设计没有什么过人之处,与EX-375所达到性能形成了另一种对比,既土土的设计也有好的性能,这大概是模拟应用设计的另一种辩证法。这个辩证法的核心既 ...… 查看全部问答> |
|
受两位大美女的邀请,来eew做客啦,大家有什么关于PCB的问题可以发帖,一般我半天内就能回答了的,关于本人的特性可以到网上找一下,riverpeak可以找到我写过的几篇文章,看完后就了解我啦。 本人不爱研究Protel,所以看到Protel相关的帖子我一般 ...… 查看全部问答> |
|
MSP430 LanchPAD收到了,上靓照,包括一个大的评估板,一个触摸板,额外还有一个单片机和一根USB线,图片手机拍的,大家凑合看吧: 这是包装盒,TI原厂的哦: 下面是开盒照: 下面的算是全家福吧 这是评估板的母板: 下面的是触摸板 ...… 查看全部问答> |
|
因为要检测岩石中的震动 需要比较快的检测频率 打算在程序中连续联测8个数据.保存下来再处理.于是想查一下手册.看看AD最高速率.结果手册有点看不懂.. 手册上面说转换一位的时间是Tad.10位需要12个Tad.分频器可以讲AD时钟32分频到20Mhz.也不知道这 ...… 查看全部问答> |




