微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第55节:指针作为数组在函数中的输出接口

第55节:指针作为数组在函数中的输出接口

时间:11-22 来源:互联网 点击:

TR0=1; //开中断

}

void usart_receive(void) interrupt 4 //串口接收数据中断

{

if(RI==1)

{

RI = 0;

++uiRcregTotal;

if(uiRcregTotal>const_rc_size) //超过缓冲区

{

uiRcregTotal=const_rc_size;

}

ucRcregBuf[uiRcregTotal-1]=SBUF; //将串口接收到的数据缓存到接收缓冲区里

uiSendCnt=0; //及时喂狗,虽然main函数那边不断在累加,但是只要串口的数据还没发送完毕,那么它永远也长不大,因为每个中断都被清零。

}

else //发送中断,及时把发送中断标志位清零

{

TI = 0;

}

}

void delay_long(unsigned int uiDelayLong)

{

unsigned int i;

unsigned int j;

for(i=0;i

{

for(j=0;j<500;j++) //内嵌循环的空指令数量

{

; //一个分号相当于执行一条空语句

}

}

}

void delay_short(unsigned int uiDelayShort)

{

unsigned int i;

for(i=0;i

{

; //一个分号相当于执行一条空语句

}

}

void initial_myself(void) //第一区 初始化单片机

{

beep_dr=1; //用PNP三极管控制蜂鸣器,输出高电平时不叫。

//配置定时器

TMOD=0x01; //设置定时器0为工作方式1

TH0=0xfe; //重装初始值(65535-500)=65035=0xfe0b

TL0=0x0b;

//配置串口

SCON=0x50;

TMOD=0X21;

TH1=TL1=-(11059200L/12/32/9600); //这段配置代码具体是什么意思,我也不太清楚,反正是跟串口波特率有关。

TR1=1;

}

void initial_peripheral(void) //第二区 初始化外围

{

EA=1; //开总中断

ES=1; //允许串口中断

ET0=1; //允许定时中断

TR0=1; //启动定时中断

}

总结陈词:

通过本节程序的讲解,一部分细心的读者可能会发现一个规律,其实所谓指针作为数组在函数中的输入接口和输出接口,输入接口的指针跟输出接口的指针在语法上没有任何区别,我没有用到C语言中专门的关键词去限定某个指针是输入,某个指针是输出,因此,这个告诉我们什么道理?指针在函数的接口中,天生就是既可以做输入,也可以是做输出,它是双向性的,不像普通的函数变量形参只能做输入。发现了这个秘密,我们可不可以把本节程序中的输入接口和输出接口合并成一个输入输出接口?当然可以。欲知详情,请听下回分解-----指针的第四大好处,指针作为数组在函数中的输入输出接口。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top