单片机I/O口,C语言怎么设置输入?
#include"REG8051.h"#include<stdio.h>#include<intrins.h>sbita=P1^4;voidmain(){PCON|=0x...
#include "REG8051.h"
#include <stdio.h>
#include <intrins.h>
sbit a=P1^4;
void main()
{
PCON|=0x02;
PCR0=0xFF;
PUCR0=0xFF;
PCR1=0x00;
P0^7=a;
}
我想把p1^4的之数值,给p0^7可是这样是错的
提示我TEST.C(34): error C141: syntax error near '='
请问怎么解决。谢谢 展开
#include <stdio.h>
#include <intrins.h>
sbit a=P1^4;
void main()
{
PCON|=0x02;
PCR0=0xFF;
PUCR0=0xFF;
PCR1=0x00;
P0^7=a;
}
我想把p1^4的之数值,给p0^7可是这样是错的
提示我TEST.C(34): error C141: syntax error near '='
请问怎么解决。谢谢 展开
7个回答
展开全部
单片机的IO口,如51单片机的IO口,直接是双向IO口,不需要设置即可用作输入或者输出。
如P0=0x40;这里是设置为输出;Temp=P2;这是将P2口作为输入读取数据
有些单片机如STM32单片机的IO口是多功能复用IO口,只需要指定IO口的模式即可
如STM32的LED驱动IO口设置初始化程序如下:
void LED_Config(void)
{
GPIO_InitTypeDef GPIO_Structure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//PC10-LED(指示灯)
GPIO_Structure.GPIO_Pin = GPIO_Pin_10;
GPIO_Structure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_Structure); //LED
}
如P0=0x40;这里是设置为输出;Temp=P2;这是将P2口作为输入读取数据
有些单片机如STM32单片机的IO口是多功能复用IO口,只需要指定IO口的模式即可
如STM32的LED驱动IO口设置初始化程序如下:
void LED_Config(void)
{
GPIO_InitTypeDef GPIO_Structure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//PC10-LED(指示灯)
GPIO_Structure.GPIO_Pin = GPIO_Pin_10;
GPIO_Structure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_Structure); //LED
}
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
这个问题和编译器有关系的,单片机C编程中位定义有两种形式:
sbit 变量名=P1^2;第一种
P1_2=变量名;第二种
有的编译器中两种通用,有的就是只有一种能用,
第一种用于位声明,第二种用于位赋值
sbit 变量名=P1^2;第一种
P1_2=变量名;第二种
有的编译器中两种通用,有的就是只有一种能用,
第一种用于位声明,第二种用于位赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、单片机的IO口缺省时一般都是双向,既可以是输入又可以是输出,C语言中判断这个口是输入还是输出要看表达式的形式,比如:
sbit key=P1^0;
if(key==1).....这里是作为输入的,因为是读入,再判断值
key=1;这里是作为输出,因为直接给其赋值。
2、例程:
P3M0=0;
P3M1=127;//0-6推挽输出
P1M0=0;
P1M1=255; //all 推挽输出
而51单片机的所有IO引脚,在启动后默认都是1。因此,如之前没有对此引脚进行过置0操作的话,可以直接读该引脚。但为了保险起见,也为了使程序通用、可移植,最好在读取之前对此引脚置1。
sbit key=P1^0;
if(key==1).....这里是作为输入的,因为是读入,再判断值
key=1;这里是作为输出,因为直接给其赋值。
2、例程:
P3M0=0;
P3M1=127;//0-6推挽输出
P1M0=0;
P1M1=255; //all 推挽输出
而51单片机的所有IO引脚,在启动后默认都是1。因此,如之前没有对此引脚进行过置0操作的话,可以直接读该引脚。但为了保险起见,也为了使程序通用、可移植,最好在读取之前对此引脚置1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把P^4和P^7在前面申明个位定义
sbit a = P^4;
sbit b = P^7;
sbit a = P^4;
sbit b = P^7;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把 P0^7=a; 换成
P0_7=a;
就可以了
P0_7=a;
就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询