很急,我用keil写一个C语言子函数,去调用数组,怎么写,例如

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了很急,我用keil写一个C语言子函数,去调用数组,怎么写,例如相关的知识,希望对你有一定的参考价值。

例如
uchar dada[5]=0xFF,0xFF,0XFF,0xFF,0XFF;
void write(*prt)//子函数

uchar i;
for(i=0;i<5;i++)

prt[i];
......


main()//主函数

write(dada);//调用子函数

这样对吗?
编译的时候语法没出现错误,也没警告,可是用示波器看到输出的数据都是00
请高手指点!!!
请写个例程,给我看看。谢谢了...感激

可以这样调,你直接传入了dada数组的地址,注意,你在void write(*prt) 里只要改变了prt[i]的值,dada[i]也是会跟着变的,因为这两个指针指的都是同一块内存,这个初学者很容易犯错。你要用示波器看,要注意延时,单片机在12M晶振下,2us一条指令,很快的。追问

能不能写个例程看看?我是语言白痴来的...谢谢了

追答

uchar dada[5]=0x01,0x02,0X03,0x04,0X05;//我改小是为了不让它们相加溢出
void write(*prt)//子函数

uchar i;
uchar a=0;//////////////////////////////////////////////////////////
for(i=0;i<5;i++)

a+=prt[i];
......


main()//主函数

write(dada);//调用子函数

自己去运行,看看变量的值对不对。

追问

你能不能把邮箱或者QQ给我,我加你,我把程序发给你看一下,我按你刚刚弄的也不行,谢谢了

追答

552037158,我看看

参考技术A *prt是啥意思,我不太懂,uchar dada[5]=应该换也uchar prt[5]

Keil中C语言调用汇编函数

AT89C52 用 DS18B20 测量温度 因为C52向DS18B20读取和写入命令需要精确到1毫秒的延时 所以都是用的汇编 但C52还有其他的复杂功能比如用到了BP神经网络算法 用汇编比较麻烦 只能用C语言
怎么在Advance.c 中调用 Basic.asm 的函数 WRITE READ RESET等
回复1楼 如果我用你的方法 比如_WRITE函数
char _WRITE(void)

#pragma ASM
; Assembler Code Here
#pragma ENDASM


那么我在main函数中调用这个函数 编译器是用inline方式 还是CALL
也就是 会不会自动生成代码 消耗额外的16us周期

回复2楼 大虾真是可遇而不可求啊

参考技术A 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)加入工程中, 该文件必须作为工程的最
后文件;
参考技术B 那个人是在网上复制的,他自己也不清楚

以上是关于很急,我用keil写一个C语言子函数,去调用数组,怎么写,例如的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程问题!很急啊!

Keil C51用C写单片机程序能不能像汇编那样跳转到任意地方?

keil mdk 启动程序(汇编语言写的)仿真时没法跟踪。 怎样让它自动跟踪代码? 像C语言一样

关于c语言中数组作为函数参数的函数之间调用问题

C语言子函数如何返回一个数组,主函数如何接收?

51单片机 keil中怎么建立像这样的子函数? 新手求助。