STC系列单片机-定义IO口的工作状态
答案:7 悬赏:70 手机版
解决时间 2021-11-28 03:30
- 提问者网友:雪舞兮
- 2021-11-27 07:49
STC系列单片机-定义IO口的工作状态
最佳答案
- 五星知识达人网友:枭雄戏美人
- 2021-11-27 08:08
PnM0=0,PnM1=0是设为了 准双向口(即芯片内部有弱上拉电阻,即可作为读又可写出(也叫传统51模式))
可以设置某一位的模式,例如:
P3M1=10100000B
P3M0=11 000000B
既是设置 P3.7为开漏(11),P3.6为强推挽输出(01),P3.5为高阻输入(10),P3.4/P3.3/P3.2/P3.1/P3.0为准双向口/弱上拉(00)
可以设置某一位的模式,例如:
P3M1=10100000B
P3M0=11 000000B
既是设置 P3.7为开漏(11),P3.6为强推挽输出(01),P3.5为高阻输入(10),P3.4/P3.3/P3.2/P3.1/P3.0为准双向口/弱上拉(00)
全部回答
- 1楼网友:长青诗
- 2021-11-27 13:03
当然可以啊,只要对应的位按照你的设置来写寄存器,那相应的端口就是你需要的状态了。
- 2楼网友:像个废品
- 2021-11-27 12:14
与51单片机一样,只不过STC是国产的
- 3楼网友:神也偏爱
- 2021-11-27 11:50
P3M0、P3M1的位7~0 对应 P3的位7~0(即P3.7~P3.0),你想设置哪个IO就配置P3M0、P3M1对应的位就可以,比如:
P3M1=0x01;
P3M0=0x01;
则 P3.7~P3.1是准双向口,P3.0是高阻
为了方便,可以弄个宏定义头文件,头文件内容如:
……
#define BP3(x) P3M0 &= ~(1< #define PP3(x) P3M0 |= (1< #define OP3(x) P3M0 &= ~(1< #define RP3(x) P3M0 |= (1< ……
RP3(0) ; //P3.0高阻
PP3(1) ; //P3.1推挽
P3M1=0x01;
P3M0=0x01;
则 P3.7~P3.1是准双向口,P3.0是高阻
为了方便,可以弄个宏定义头文件,头文件内容如:
……
#define BP3(x) P3M0 &= ~(1<
RP3(0) ; //P3.0高阻
PP3(1) ; //P3.1推挽
- 4楼网友:封刀令
- 2021-11-27 10:26
我这里有份很好的,资料,你看下.........我感觉蛮好的 ..................
- 5楼网友:底特律间谍
- 2021-11-27 08:50
可以的,比如P3.0定义为高阻,其余为标准
P3M0=0x00;
P3M1=0x01;
P3M0=0x00;
P3M1=0x01;
- 6楼网友:上分大魔王
- 2021-11-27 08:44
如果给P1M1赋值0x03,给P1M0赋值0x05,那么P1口各个引脚对应的模式就是:
P1M1 P1M0 IO口模式
0 0 P1.7准双向口
0 0 P1.6准双向口
0 0 P1.5准双向口
0 0 P1.4准双向口
0 0 P1.3准双向口
0 1 P1.2推挽输出
1 0 P1.1高阻
1 1 P1.0开漏
举个例子吧
P1.0为推挽输出,P1.1输入,其余为准双向。则配置成:
P1M1=0000 0010B
P1M0=0000 0001B
这样,P1M1.0=0,P1M0.0=1,推挽输出
P1M1.1=1,P1M0.1=0,输入
P1M1 P1M0 IO口模式
0 0 P1.7准双向口
0 0 P1.6准双向口
0 0 P1.5准双向口
0 0 P1.4准双向口
0 0 P1.3准双向口
0 1 P1.2推挽输出
1 0 P1.1高阻
1 1 P1.0开漏
举个例子吧
P1.0为推挽输出,P1.1输入,其余为准双向。则配置成:
P1M1=0000 0010B
P1M0=0000 0001B
这样,P1M1.0=0,P1M0.0=1,推挽输出
P1M1.1=1,P1M0.1=0,输入
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯