救急!请问单片机C语言IO口如何定义啊

作者&投稿:父谦 (若有异议请与网页底部的电邮联系)
单片机c语言如何用sbit定义多个io口~

不大清楚你的意思,51里面我常用的方法是这样:

【例子1】
sbit Key_1 = P1^0;
sbit Key_2=P0^3;
然后下文直接使用KEY_1和Key_2就行了
如果是需要IO口太多,又是同一组的,就用sfr

1、每一次调用移位子函数,数码管变化子函数,子函数只做一次变化,即子函数只操作p0,p2口一次;
2、变量放在子函数外;
3、子函数中不要有延时,p0,p2口操作后使用;
4、移位子函数是8次一轮回,数码管变化子函数是16次一轮回,所以“移位”2回“变化”一回;
5、只要应用好调用与延时,就可有多种变化显示;
6、p0;
p2;
延时1;
p2;
延时1;一轮回8次,同时完成。

首先要有这个头文件: #include <AT89X52.H> //根据你用的单片机类型而定
这个头文件已经有了端口的定义,不过用的时候不能写 P1.1,而应该是P1_1(注意:P要大写)

如果要自己重新定义的话:打开这个头文件,修改就行了(里面的内容很简单的,一看就可以明白它是怎样定义的)

也可以调用头文件后在程序里重新给它命名,但没有什么必要。

(对了,我用的软件是keil)

/**-------------------------------------------------------------------------------
〖说明〗配置文件
〖文件〗d:\user\BCB\C51BBS 仿真器\编程器\config.h @2002.07.05
〖作者〗新太科技 开发八部 张晓龙 E-mail: c51bbs@vip.163.com
〖修改〗 改为PICC用 叶存树 E-mail: ycs_5968@163.com
〖版本〗V1.00A Build 0705
---------------------------------------------------------------------------------*/
typedef unsigned char BYTE; //注意:有分号
typedef unsigned int WORD;
typedef unsigned long DWORD;

#define Byte unsigned char //注意:无分号
#define Word unsigned int
#define DWord unsigned long

#define bool bit
#define true 1
#define false 0
/**********************
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;

sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6;
sbit P1_7 = P1^7;

sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit P2_4 = P2^4;
sbit P2_5 = P2^5;
sbit P2_6 = P2^6;
sbit P2_7 = P2^7;

sbit P3_0 = P3^0;
sbit P3_1 = P3^1;
sbit P3_2 = P3^2;
sbit P3_3 = P3^3;
sbit P3_4 = P3^4;
sbit P3_5 = P3^5;
sbit P3_6 = P3^6;
sbit P3_7 = P3^7;
********************************/
//以下是二进制输入宏
#define B0000_0000 0x00
#define B0000_0001 0x01
#define B0000_0010 0x02
#define B0000_0011 0x03
#define B0000_0100 0x04
#define B0000_0101 0x05
#define B0000_0110 0x06
#define B0000_0111 0x07
#define B0000_1000 0x08
#define B0000_1001 0x09
#define B0000_1010 0x0A
#define B0000_1011 0x0B
#define B0000_1100 0x0C
#define B0000_1101 0x0D
#define B0000_1110 0x0E
#define B0000_1111 0x0F

#define B0001_0000 0x10
#define B0001_0001 0x11
#define B0001_0010 0x12
#define B0001_0011 0x13
#define B0001_0100 0x14
#define B0001_0101 0x15
#define B0001_0110 0x16
#define B0001_0111 0x17
#define B0001_1000 0x18
#define B0001_1001 0x19
#define B0001_1010 0x1A
#define B0001_1011 0x1B
#define B0001_1100 0x1C
#define B0001_1101 0x1D
#define B0001_1110 0x1E
#define B0001_1111 0x1F

#define B0010_0000 0x20
#define B0010_0001 0x21
#define B0010_0010 0x22
#define B0010_0011 0x23
#define B0010_0100 0x24
#define B0010_0101 0x25
#define B0010_0110 0x26
#define B0010_0111 0x27
#define B0010_1000 0x28
#define B0010_1001 0x29
#define B0010_1010 0x2A
#define B0010_1011 0x2B
#define B0010_1100 0x2C
#define B0010_1101 0x2D
#define B0010_1110 0x2E
#define B0010_1111 0x2F

#define B0011_0000 0x30
#define B0011_0001 0x31
#define B0011_0010 0x32
#define B0011_0011 0x33
#define B0011_0100 0x34
#define B0011_0101 0x35
#define B0011_0110 0x36
#define B0011_0111 0x37
#define B0011_1000 0x38
#define B0011_1001 0x39
#define B0011_1010 0x3A
#define B0011_1011 0x3B
#define B0011_1100 0x3C
#define B0011_1101 0x3D
#define B0011_1110 0x3E
#define B0011_1111 0x3F

#define B0100_0000 0x40
#define B0100_0001 0x41
#define B0100_0010 0x42
#define B0100_0011 0x43
#define B0100_0100 0x44
#define B0100_0101 0x45
#define B0100_0110 0x46
#define B0100_0111 0x47
#define B0100_1000 0x48
#define B0100_1001 0x49
#define B0100_1010 0x4A
#define B0100_1011 0x4B
#define B0100_1100 0x4C
#define B0100_1101 0x4D
#define B0100_1110 0x4E
#define B0100_1111 0x4F

#define B0101_0000 0x50
#define B0101_0001 0x51
#define B0101_0010 0x52
#define B0101_0011 0x53
#define B0101_0100 0x54
#define B0101_0101 0x55
#define B0101_0110 0x56
#define B0101_0111 0x57
#define B0101_1000 0x58
#define B0101_1001 0x59
#define B0101_1010 0x5A
#define B0101_1011 0x5B
#define B0101_1100 0x5C
#define B0101_1101 0x5D
#define B0101_1110 0x5E
#define B0101_1111 0x5F

#define B0110_0000 0x60
#define B0110_0001 0x61
#define B0110_0010 0x62
#define B0110_0011 0x63
#define B0110_0100 0x64
#define B0110_0101 0x65
#define B0110_0110 0x66
#define B0110_0111 0x67
#define B0110_1000 0x68
#define B0110_1001 0x69
#define B0110_1010 0x6A
#define B0110_1011 0x6B
#define B0110_1100 0x6C
#define B0110_1101 0x6D
#define B0110_1110 0x6E
#define B0110_1111 0x6F

#define B0111_0000 0x70
#define B0111_0001 0x71
#define B0111_0010 0x72
#define B0111_0011 0x73
#define B0111_0100 0x74
#define B0111_0101 0x75
#define B0111_0110 0x76
#define B0111_0111 0x77
#define B0111_1000 0x78
#define B0111_1001 0x79
#define B0111_1010 0x7A
#define B0111_1011 0x7B
#define B0111_1100 0x7C
#define B0111_1101 0x7D
#define B0111_1110 0x7E
#define B0111_1111 0x7F

#define B1000_0000 0x80
#define B1000_0001 0x81
#define B1000_0010 0x82
#define B1000_0011 0x83
#define B1000_0100 0x84
#define B1000_0101 0x85
#define B1000_0110 0x86
#define B1000_0111 0x87
#define B1000_1000 0x88
#define B1000_1001 0x89
#define B1000_1010 0x8A
#define B1000_1011 0x8B
#define B1000_1100 0x8C
#define B1000_1101 0x8D
#define B1000_1110 0x8E
#define B1000_1111 0x8F

#define B1001_0000 0x90
#define B1001_0001 0x91
#define B1001_0010 0x92
#define B1001_0011 0x93
#define B1001_0100 0x94
#define B1001_0101 0x95
#define B1001_0110 0x96
#define B1001_0111 0x97
#define B1001_1000 0x98
#define B1001_1001 0x99
#define B1001_1010 0x9A
#define B1001_1011 0x9B
#define B1001_1100 0x9C
#define B1001_1101 0x9D
#define B1001_1110 0x9E
#define B1001_1111 0x9F

#define B1010_0000 0xA0
#define B1010_0001 0xA1
#define B1010_0010 0xA2
#define B1010_0011 0xA3
#define B1010_0100 0xA4
#define B1010_0101 0xA5
#define B1010_0110 0xA6
#define B1010_0111 0xA7
#define B1010_1000 0xA8
#define B1010_1001 0xA9
#define B1010_1010 0xAA
#define B1010_1011 0xAB
#define B1010_1100 0xAC
#define B1010_1101 0xAD
#define B1010_1110 0xAE
#define B1010_1111 0xAF

#define B1011_0000 0xB0
#define B1011_0001 0xB1
#define B1011_0010 0xB2
#define B1011_0011 0xB3
#define B1011_0100 0xB4
#define B1011_0101 0xB5
#define B1011_0110 0xB6
#define B1011_0111 0xB7
#define B1011_1000 0xB8
#define B1011_1001 0xB9
#define B1011_1010 0xBA
#define B1011_1011 0xBB
#define B1011_1100 0xBC
#define B1011_1101 0xBD
#define B1011_1110 0xBE
#define B1011_1111 0xBF

#define B1100_0000 0xC0
#define B1100_0001 0xC1
#define B1100_0010 0xC2
#define B1100_0011 0xC3
#define B1100_0100 0xC4
#define B1100_0101 0xC5
#define B1100_0110 0xC6
#define B1100_0111 0xC7
#define B1100_1000 0xC8
#define B1100_1001 0xC9
#define B1100_1010 0xCA
#define B1100_1011 0xCB
#define B1100_1100 0xCC
#define B1100_1101 0xCD
#define B1100_1110 0xCE
#define B1100_1111 0xCF

#define B1101_0000 0xD0
#define B1101_0001 0xD1
#define B1101_0010 0xD2
#define B1101_0011 0xD3
#define B1101_0100 0xD4
#define B1101_0101 0xD5
#define B1101_0110 0xD6
#define B1101_0111 0xD7
#define B1101_1000 0xD8
#define B1101_1001 0xD9
#define B1101_1010 0xDA
#define B1101_1011 0xDB
#define B1101_1100 0xDC
#define B1101_1101 0xDD
#define B1101_1110 0xDE
#define B1101_1111 0xDF

#define B1110_0000 0xE0
#define B1110_0001 0xE1
#define B1110_0010 0xE2
#define B1110_0011 0xE3
#define B1110_0100 0xE4
#define B1110_0101 0xE5
#define B1110_0110 0xE6
#define B1110_0111 0xE7
#define B1110_1000 0xE8
#define B1110_1001 0xE9
#define B1110_1010 0xEA
#define B1110_1011 0xEB
#define B1110_1100 0xEC
#define B1110_1101 0xED
#define B1110_1110 0xEE
#define B1110_1111 0xEF

#define B1111_0000 0xF0
#define B1111_0001 0xF1
#define B1111_0010 0xF2
#define B1111_0011 0xF3
#define B1111_0100 0xF4
#define B1111_0101 0xF5
#define B1111_0110 0xF6
#define B1111_0111 0xF7
#define B1111_1000 0xF8
#define B1111_1001 0xF9
#define B1111_1010 0xFA
#define B1111_1011 0xFB
#define B1111_1100 0xFC
#define B1111_1101 0xFD
#define B1111_1110 0xFE
#define B1111_1111 0xFF


单片机的c语言容易吗
简单的制作,编程比你想象的还要简单!复杂一些的主要是逻辑上复杂一些!在单片机编程中,C语言就是一个工具,你需要的是用它实现想要的功能!另外单片机C语言编程,不仅仅需要遵循C语言的语法规范,还要遵循相应编译器的语法规则!要对自己有信心,从51单片机C语言开始,很快就能入门的!

学单片机是先学汇编语言还是C语言?
先C语言,然后汇编。- -0,这么言简意赅鞭辟入里竟然还不采纳,卧槽。

单片机C语言程序
define uint unsigned int\/\/是宏定义,这样定义以后,在接下来的程序当中就能用uint 代替unsigned int了,void DelayMS(uint x)\/\/是一个子函数,当调用时,就直接执行大括号里面的语句,while(x--)\/\/是循环语句,当X--=0时,就不满足条件,跳出循环。它整个的功能就是一个延时,等待单片机处理完其它任务...

单片机C语
在对51单片机进行C语言编程时,首要步骤是在计算机上启动Keil软件,这是最常用的开发工具。接着,你需要在软件中编写程序代码,确保代码逻辑清晰,功能明确。编写完毕后,紧接着是至关重要的编译环节,目的是检查代码中可能存在的错误,并生成HEX文件,这是后续烧写程序的基础。记得保存你的工作,以备后续...

高手帮我解答下单片机C语言每个语句的意思
include "reg51.h" \/\/调用头文件reg51.h(内含有关单片机寄存器,端口的定义)define uchar unsigned char \/\/宏定义 uchar表示unsigned char define uint unsigned int \/\/宏定义 uint 表示unsigned int uchar bai,shi,ge,n,temp=120; \/\/定义 bai,shi,ge,n,temp 5个无符号字符型变量,初始值为...

单片机c语言编程时会用到哪些常用的C语
关键字 用 途 说 明 auto 存储种类说明 用以说明局部变量,缺省值为此 break 程序语句 退出最内层循环 case 程序语句 Switch语句中的选择项 char 数据类型说明 单字节整型数或字符型数据 const 存储类型说明 在程序执行过程中不可更改的常量值 continue 程序语句 转向下一次循环 default 程序语句 Switch...

单片机c语言TMOD 设置
1.system_ini()为定时器t0初始化子程序,功能是设置定时器工作方式为方式1,th0=0xdc--寄存器th0初值为220,tl0=0x00--寄存器tl0初值为0,ie = 0x8a--允许外部中断1和定时器t0中断,tr0=1--定时器t0启动,晶振频率为11.0592mhz;2.tzd()为定时器t0中断服务子程序,当定时器t0溢出时,进入...

单片机C语言问题
首先:u8其实为 define u8 unsigned char \/\/用u8代替unsigned char(无符号8位二进制数)其次 KEY_Scan 为函数名;接下来 (u8 mode) 为参数;所以,该程序为一个函数

单片机c语言,这份代码我看不懂,打打注释
设晶振频率为12MHz。*\/\/***\/#include<reg52.h> \/\/52单片机头文件#include <intrins.h> \/\/包含有左右循环移位子函数的库#define uint unsigned int \/\/宏定义#define uchar unsigned char \/\/宏定义sbit beep=P2^3;\/\/应该是蜂鸣器吧采的uchar tt;\/\/自定义计数全局变量uint fre,flag;\/\/自定义...

51单片机C语言程序求助!
我来帮你 这是0~999的程序 include<reg51.h> \/\/sbit P30=P3^4;sbit P35=P3^5;sbit P36=P3^6;sbit P37=P3^7;\/\/sbit P21=P2^1;unsigned int js;static unsigned int i;unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF};void ...

丰宁满族自治县19331386492: 单片机怎么用c语言设置I/O口输入或输出 -
冷生伏络: IO口的输入输出是通过对单片机寄存器的配置来实现的.C51的单片机IO口本来就是双向的不需要设置.STM32单片机的IO口用C语言的设置方法如下:void LED_Config(void) { GPIO_InitTypeDef GPIO_Structure; RCC_APB2PeriphClockCmd(...

丰宁满族自治县19331386492: 单片机I/O口,C语言怎么设置输入? -
冷生伏络: 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.

丰宁满族自治县19331386492: 单片机中如何将不同端口的8个“io”口用c语言定义为1个端口? -
冷生伏络: 是采用 _Boot 来定义某一位.用C语言举例子如下: typedef struct{unsigned char Bit0 : 1;unsigned char Bit1 : 1;unsigned char Bit2 : 1;unsigned char Bit3 : 1;unsigned char Bit4 : 1;unsigned char Bit5 : 1;unsigned char Bit6 : 1;unsigned char Bit7 : 1;}SBitChar;

丰宁满族自治县19331386492: 单片机c语言如何用sbit定义多个io口 -
冷生伏络: 不大清楚你的意思,51里面我常用的方法是这样:【例子1】 sbit Key_1 = P1^0; sbit Key_2=P0^3; 然后下文直接使用KEY_1和Key_2就行了 如果是需要IO口太多,又是同一组的,就用sfr

丰宁满族自治县19331386492: 在C语言编程是怎么给单片机中的存储单元赋值,还有定义I O口那? -
冷生伏络: 这个要具体到单片机接口上,一般定义接口需要关键词sbit 比如定义P1^1引脚.一般可以这么写K=P1^1;关于给存储单元赋值这个跟C基本一样.

丰宁满族自治县19331386492: stc单片机如何将IO口设为强推挽输出C程序怎么设置比如我设P1.1口为强推挽输出高手指教一下 -
冷生伏络: 可通过设置PXM1:PXM0的值: PXM1:PXM0 0 0 准双向口(传统IO) 0 1 推挽输出(强上拉 ,电流可达20mA,尽量少用) 1 0 仅为输入(高阻) 1 1 开漏,如传统8051的P0口 例:C语言中直接赋值 P1M0 = 0xC0; P1M1 = 0xA0;//P1.7开漏,P1.6高阻,P1.5强推挽输出,其他准双向IO口.

丰宁满族自治县19331386492: 51(stc89C52)单片机,用io口判断外部高低电平时io口在软件、硬件上应该如何设置?谢谢! -
冷生伏络: 先从软件上讲,要判断IO口高低电平,这对于单片机来说是输入状态,所以要将IO口设置为输入状态;再从硬件上讲,电路有很多种,比较保险的作法是采用三级管方式,IO口接到三极管集电极并上拉电压,外部电平就通过电阻搭配接到三极管的基极

丰宁满族自治县19331386492: 单片机IO口的问题 -
冷生伏络: 可以,但是不能同时.作输出的原理很简单,你给它赋值0它就是0,你给它赋值1它就是1,端口上的电平随之改变 作输入的原理差不多,你给它1,这个时候按照输出来说它就是1,但是此时你可以通过电路把这个输出1的端口和地线(0电位)连接起来,此时它就变成了0,程序里去读它的值,能读出0.

丰宁满族自治县19331386492: 单片机i/o口怎么赋值 -
冷生伏络: 用未定义sbit如sbit led=P1^0;然后你就可以对led赋0或1值来控制P1^0口的电平了.led的话就像定义变量一样一个自定义的名称.

丰宁满族自治县19331386492: 怎样把单片机的8个不同管脚定义成同一个IO口?? -
冷生伏络: 编译器已经帮你定义好了 例如 keil 安装目录 下 \C51\INC Atmel 的单片机 AT89C51、AT89S51 已经定义好AT89X51.H 头几行里是/*------------------------------------------------ Byte Registers------------------------------------------------*/ sfr P0 = 0x80; sfr SP = 0x...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网