最近,在用keil 写一个小程序时,想实践一下从汇编调用 C语言函数,我们都知道C语言调用汇编函数讨论得较多,但反过来,从汇编中调用C语言的函数未见深入分析;在开始的时候,还是忽视了一个问题,就是对现场的保护和还原,以导于程序跑飞。
下面的一个小的测试用例,主要作用是:从C语言程序中调用一个用汇编写的名为int LEDFLASH(int a, int b)。并从该汇编函数中,反过来调言用C语言实现的delay()延时程序。最后的结果是:由P2口控制的LED灯出现闪烁的现象。
C语言源程序所在文件名为:user.c,C语言源程序如下:
#include
void delay(int,int);
int LEDFLASH(int a,int b);
void test();
void main()
{
P2 = 0xff;
while(1)
LEDFLASH(0xff00,0x0007);
}
void delay(int a,int b)
{
int i,j;
关键字:keil c51 汇编 c语言函数
引用地址:keil or c51 汇编调用c语言函数 容易忽视的问题
上一篇:模数转换IC ADC0809的使用制做之一……基础知识
下一篇:单片机片上EEPROM读写例程
推荐阅读最新更新时间:2024-03-16 15:20
【STM32F0】Keil 查看局部变量显示
现象: 在进行STM32F0开发的时候出现了,调试代码,添加变量Watch时,显示not in scope。 处理方式: 因为代码开了优化的处理,把优化改到Level0,就可以解决问题。
[单片机]
单片机电子密码锁程序设计(汇编语言)显示*号
制作出来的电子密码锁实物图如下: 电路原理图如下: (1)本设计为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号。 (2)设计开锁密码位六位密码的电子密码锁。 (3)能够LCD显示在密码正确时显示PASSWORD OK,密码错误时显示PASSWORD ERROR,输入密码时显示INPUT PASSWORD。 (4)实现输入密码错误超过限定的三次电子密码锁定。 (5)4×4的矩阵键盘其中包括0-9的数字键和A-F的功能键 (6)本产品具备报警功能,当输入密码错误时蜂鸣器响并且LED灯亮。 (7)密码可以由用户自己修改设定(只支持6位密码),修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。 单
[单片机]
Hirose IX Industrial系列I/O连接器在贸泽开售
2018年2月7日 – 最新半导体和电子元件的全球授权分销商贸泽电子 (Mouser Electronics) 即日起开始备货Hirose Electric Company的IX Industrial系列I/O 连接器。尺寸小巧、坚固耐用以及高数据传输速率的特性,可推动工厂自动化、数据中心、安全系统、可编程逻辑控制器以及交通运输应用的发展。 贸泽备货的Hirose IX Industrial系列 I/O连接器兼容IEC PAS 61076-3-124,其插头和插座均支持CAT5e和CAT6a电缆。IX Industrial系列拥有连续的360°防电磁干扰 (EMI) 和静电放电 (ESD) 保护,并支持高达10 Gbps的安全
[半导体设计/制造]
51 单片机汇编语言--矩阵键盘的驱动
用这个矩阵键盘做单片机输入,插 P1 口的 P1.0~P1.6。 想问的是,当: 按下 1 键 P0 口的 P0.0 输出高电平; 按下 2 键 P0.1 输出高电平; …… 一直到 8 键就可以了。 还有一个要求,当按下一个键时延时5秒并锁住其它按键,5秒之后回到起点。用汇编语言 ;===================================================== ;如下即可: ORG 0000H START: MOV P0, #255 MOV P1, #255 CLR P1.0 NOP JNB P1.4, K1 JNB P1.5
[单片机]
STM32笔记之九:打断它来为我办事,EXIT (外部I/O中断)应用
a) 目的:跟串口输入类似,不使用中断进行的IO输入效率也很低,而且可以通过EXTI插入按钮事件,本节联系EXTI中断。 b) 初始化函数定义: void EXTI_Configuration(void); //定义IO中断初始化函数 c) 初始化函数调用: EXTI_Configuration();//IO中断初始化函数调用简单应用: d) 初始化函数: void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; //EXTI初始化结构定义 EXTI_ClearITP
[单片机]
89c51 汇编 串口接受数据
ORG 00H START: MOV SCON,#50H //串口方式1,允许接受 MOV TMOD,#20H MOV TH1, #0F3H //波特率为2400B/s MOV TL1, #0F3H SETB TR1 WAIT: JBC RI, DISPLAY JMP WAIT DISPLAY: MOV A, SBUF MOV P1, A //将接受的数据显示在P1口 J
[单片机]
C51进行I²C通信
I²C(Inter IC Bus)是由 Philips 推出的数据总线协议。 #include reg52.h void display(unsigned int n) { unsigned char i; char table ={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; P2 = 0 2; P0 = table ; for (i=0;i 25;i++); P0 = 0; P2 = 1 2; P0 = table ; for (i=0;i 25;i++); P
[单片机]
谷歌I/O大会回归本源:重新聚焦开发者
2013年谷歌I/O开发者大会主题演讲议程以谷歌CEO拉里-佩奇(LarryPage)出场,并回答开发者提问结束。在3个多小时的时间里,谷歌发布了一些新的服务和产品更新,并没有令人惊喜的新硬件。 大多数普通消费者可能感到失望,因为在此之前,他们对于谷歌眼镜、传说中的XPhone等硬件产品充满期待。不过,对于一直耕耘于Android平台的开发者而言,他们应该对谷歌报以热烈的掌声,因为谷歌本次大会真正做到了以他们为中心。 与硬件无关 普通消费者一定会对谷歌去年的I/O开发者大会记忆犹新,在那次大会上,谷歌发布了最新的Android系统,并且推出了让人眼前一亮的谷歌眼镜、Nexus 7、Nexus Q等硬件产品。整个大
[手机便携]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
厂商技术中心