‘壹’ 单片机c语言中如何替换定义好的引脚
因为同一个程序不能出现两次#define定义同一个标识符,而且它定义的是常量不是变量,所以LAUNCH可以是变量,但不能是常量。
一般对端口操作的时候,另外做判断;你上面的switch判断可以设置flag标记,或者变量存入端口索引号,在具体操作的时候还需判断,或者用索引代替。
‘贰’ c语言函数的使用,定义一个交换函数 实现2个数字的交换。
void Swap(int&x,int&y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
int main()
{
int a=1;
int b=2;
Swap(a,b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
system("pause");
return 0;
}
运行结果:
(2)c语言用函数调换引脚扩展阅读:
用指针交换:
void Swap(int*x,int*y)
{
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int x=1;
int y=2;
Swap(&x,&y);
printf("x=%d,y=%d ",x,y);
system("pause");
return 0;
}
运行结果:
X=2;Y=1
‘叁’ 单片机C语言中如何替换定义好的引脚
1.
位地址在汇编语言中,只能直接寻址,不支持间接寻址。那么,在
c
语言中,也就不能用指针来操作。所以不能定义单片机的寄存器。
2.
访问寄存器可以通过直接地址引用来完成。
例如52单片机的寄存器有4组,分别为00h-07h,08h-0fh,10h-17h,18h-1fh,各组均8字节,要结合程序状态字寄存器psw(d0h)中的rs0,rs1的组合来确定是哪一组。
可以定义一个访问rn的函数
typedef unsigned char uchar;
uchar dacrn(uchar n) //n=[0..7]
{
uchar data *p;
n += (psw & 0x18); //psw 7:cy 6:ac 5:f0 4:rs1 3:rs0 2:ov 1:f1 0:p
//本来要右移三位变为0-3,但由于是8个一组要乘以8(左移3位),所以直接加上寄存器编号就可以了
return *(uchar data *)n;
}
‘肆’ C语言用函数如何实现两个数交换
#include"stdio.h"int swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}
main(){int x,y;printf("请输入x与y的值,用空格隔开 ");scanf("%d%d",&x,&y);printf("x=%d,y=%d ",x,y);swap(&x,&y);printf("交换后 x=%d,y=%d ",x,y);}
(4)c语言用函数调换引脚扩展阅读:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
‘伍’ c语言用函数将数组调换行和列
如果直接就x[j][i]=x[i][j],这个x[j][i]数据会被冲掉,下次运行到j,i的时候这个数据没法取出来换了
‘陆’ 用单片机的一个引脚作为A/d转换,求死循环主函数c语言,Adc_flag清0特别不懂,求解释
对于AD转换的一般性流程是这样的:
1,首先初始化配置,将IO口配置为模拟输入
2,启动AD转换并延时
3,等待转换结束、对转换标志位清零
4,读取数据并发送数据
5,重新回到第二步。
‘柒’ 求单片机 c语言 控制引脚
ACC 是累加器啊,是会自动计数的,在C语言中还敢这么用?
需要另外定义一个变量!
void IOMOD(unsigned char 位置,unsigned char 值)
{
unsigned char i, var_P1;
var_P1 = P1;
for(i=8; i>0; i--)
{
if (i==位置) var_P1 = 值;
var_P1 = var_P1 >> 1;
}
P1 = var_P1;//这个是不是应该放到for循环里面?不知道要求所以只是提醒一下
}
按照你的要求,是改变P1.x端口对应x的输出值(友情提醒一下,这也是危险的。因为P1不是一个变量,读取P1是指P1外部电路的情况,如果外部电路为低电平,但是这时候P1对应位输出高电平的话就会有电流输出,当然如果加好电阻的就没事。)
void IOMOD(unsigned char 位置,unsigned char 值)
{
unsigned char i, var_P1;
if (值 == 1)
var_P1 = var_P1 | (1 << 位置); //对应位置1
else
var_P1 = var_P1 & ~(1 << 位置); //对应清0
P1 = var_P1;//重新输出即可
}
‘捌’ C语言用指针和函数调换两个整数 帮忙修改
#include
void swap(int *p1,int *p2);
int main()
{
int a,b,*pa,*pb;
scanf("%d%d",&a,&b);
pa=&a;
/*指针pa指向整数a*/
pb=&b;
/*指针pb指向整数b*/
printf("a=%d,b=%d\n",a,b);
swap(pa,pb);
/*调用函数swap,实参为指针*/
printf("a=%d,b=%d\n",a,b); }
void swap(int *p1,int *p2)
{
int t;
t=*p1;*p1=*p2;*p2=t;
}错误的地方还真不少。。。。
‘玖’ 如何用C语言定义一个单片机的引脚为按键
这是一个按键子函数:
sbit k1=P2^1; //在主函数前面要声明的部分
void keyscan() //按键识别子函数,P2.1脚
{
int a=1;
while(a)
{
if(k1==0) //循环检测按键动作
{
delay1(15); //延时消抖
if(k1==0)
while(!k1) //等待按键释放
a=0; //跳出子函数
}
}
}
void delay1(int h) //延时子函数
{
int i,j;
for(i=h;i>0;i--)
for(j=110;j>0;j--);
}
哥们,回答的够详细了吧!记得加分咯