当前位置:首页 > 正文

C51函数是如何调用

作者:烟栀发布时间:2023-02-07浏览:462


在你原来的函数基础上,加上三个参数,分别是:1 要操作的PORT口2 要进行的操作3 要操作的引脚当然,如果你的目标很明确,可以把以上三个参数裁剪掉一些,利于系统的效率提高.下面是我写的示例程序,你可能参考一下:#include<reg52.h>#define Pin0 0x01#define Pin1 0x02#define Pin2 0x04#define Pin3 0x08#define Pin4 0x10#define Pin5 0x20#define Pin6 0x40#define Pin7 0x80#define OPT_CPL 0x00 //----取反某位操作#define OPT_CLR 0x01 //----清零某位操作#define OPT_SET 0x02 //----置一某位操作void Operate(unsigned char Port_Num,unsigned char Opr_Style,unsigned char Pins){//----如果在单片机PORT口范围之内,刚读取当前PORT口的状//----如果不在范围之内,死循环//----注意,为了效率起见,这个部分可以根据实际应用进行裁剪if(Port_Num == 0){Port_Num = P0;}else if(Port_Num == 1){Port_Num = P1;}else if(Port_Num == 2){Port_Num = P2;}else if(Port_Num == 3){Port_Num = P3;}else{while(1);}//----如果是取反相应位,进行异或操作//----如果清零相应位,则位与操作//----如果置位相应位,则位或操作//----如果都不在范围之内,则死循环//----这段代码也根据实际情况裁剪if(Opr_Style == OPT_CPL){Port_Num ^= Pins;}else if(Opr_Style == OPT_CLR){Port_Num &= ~Pins;}else if(Opr_Style == OPT_SET){Port_Num |= Pins;}else{while(1);}//----如果在单片机PORT口范围之内,刚读取当前PORT口的状//----如果不在范围之内,死循环//----注意,为了效率起见,这个部分可以根据实际应用进行裁剪if(Port_Num == 0){P0 = Port_Num;}else if(Port_Num == 1){P1 = Port_Num;}else if(Port_Num == 2){P2 = Port_Num;}else if(Port_Num == 3){P3 = Port_Num;}else{while(1);}//----以上的内容,可根据实际情况进行裁剪,以实现程序最优化//----添加你的功能的其他代码---------------}void main(void){//----使用示例:函数功能的同时,置位P2口的P2.0,P2.5,P2.7Operate(2,OPT_SET,(Pin0|Pin5|Pin7));//----使用示例:函数功能的同时,清零P1口的P1.2,P1.5,P2.6 Operate(1,OPT_CLR,(Pin2|Pin5|Pin6));}


声明:部分资源转载自互联网,转载目的在于传递更多知识,并不代表本网赞同其观点和对其真实性负责。如有侵权或者知识有谬误之处,麻烦通知删除,谢谢!联系方式: zzsla2022#163.com