当前位置:首页
> 正文
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
相关推荐
- 2019山东今年高考理科报考人数多少人
- 秋名山车神是什么电影
- 什么是道指?
- 美孚速霸2000是合成油还是半合成
- 广汽传祺是日本发动机吗
- 全职高手荣耀是什么游戏
- 张艺兴在沙海中演的什么角色
- 哪个看小说的app好用而且免费
- 重阳节简短的祝福语
- 羽泉有什么好听的歌?
- 广汽传祺发动机和本田一样吗?传祺发动机是哪的技术
- 如何清洗A.O.史密斯热水器
- 国之韵铁盒1819陈皮烟哪里产
- 大叶黄杨怎么种植
- 热水器的排气阀不停的流水是怎么回事
- 捷豹xj为什么这么便宜,捷豹xj为什么停产了
- 羽泉的所有歌
- 阀门型号W41T和W44、45T有什么不同,不锈钢和铜的代号是什么
- 什么是割礼?割哪里? 割礼是干什么的?要割哪里?
- 2021款劲客上市了,搭载全新超智联系统,这个价格您觉得如何