单片机c语言常用语句,单片机编程入门基础知识
很多朋友对于单片机c语言常用语句和单片机编程入门基础知识不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
51单片机C语言程序
//你原来的b2,b2都是死循环,这是不行的,只有主函数才可以死循环。
//你的主函数结构也有问题。
//为你增加了一个按键检测的函数。
//下列程序通过了实验测试。
//b1输出的周期大约0.9s。
//b2输出的周期大约0.6s。
//K为触动开关,reg为红灯,bice为绿灯,b1、b2各为一个方波,
//按第一次触动开关时红灯亮、b1输出,
//按第二次绿灯亮、为b2输出,
//按第三次都关闭.
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint a;
void b1();
void b2();
sbit t= P1^0;
sbit k= P3^5;
sbit reg= P3^3;
sbit bice= P3^2;
void delay(uchar z)
{
uint x,y;
for(x= z; x> 0; x--) for(y= 110; y> 0; y--);
}
bit key()
{
bit kkk;
kkk= k;//读入按键.
if(kkk== 1) return 0;//没有按下.
delay(5);//延时.
if(k== kkk) return 1;//两次相等.
return 0;
}
void main()
{
while(1){
P3= 0xff;
while(!key());//静等按下第一次.
reg= 0;
bice= 1;
while(!key()) b1();//没有按下第二次就循环等待.
reg= 1;
bice= 0;
while(!key()) b2();//没有按下第三次就循环等待.
}
}
void b1()
{
P1= 0xfe; a= 50000; while(a--);
P1= 0xff; a= 50000; while(a--);
}
void b2()
{
P1= 0xfe; a= 30000; while(a--);
P1= 0xff; a= 30000; while(a--);
}
一段单片机C语言,求大神逐句翻译一下。
#include<REGX51.H>//头文件
#define uchar unsigned char//变量关键字更改
#include<intrins.h>//头文件
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xC0};
//字符数组定义
void delay()//子函数定义
{ uchar i,j;//变量定义
for(i=0;i<15;i++)//for语句,执行15次
for(j=0;j<250;j++)//执行250次
{_nop_();}//共执行250*15次空函数,延时操作
}
uchar seg7(uchar a)//子函数定义
{return tab[a];}//返回tab数组内第a个变量的值
void main(void)//主函数
{ uchar i,j,k,x,y;//变量定义
P1=0xff;//port1全部置位
P0=0xff;//port0全部置位
y=0;//y赋0
while(1)//无限循环
{ j=0xf7;//j赋11110111
k=y;//y赋给k
for(i=0;i<4;i++)//4次循环
{
P0=seg7(k);//P0=第K个元素的值
k++;//k=k+1
P1=_cror_(j,i);//P1口带返回的移位操作
delay();//延时
P1=0xff;//P1全部置高
}
x++;//x=x+1
if(x==15){x=0;y++;}//如果15次,x=0,y=y+1
if(y==8)y=0;//8*15次,y=0,重新开始循环
}
}
请教一句单片机C语言
PORTC&=~(1<<6);
其中(1<<6)就是bit6为1其余位都是0的一个代码,也就是二进制的01000000。
~(1<<6)就是将此代码取反,即:除了bit6为0其余位都是1的一个代码。
PORTC与这个代码作“与”的操作,即:将PORTC中的bit6清零,其余位不变。
类似道理:
PORTX&=~((1<<7)|(1<<2));/*将PORTX中的bit7、bit2清零,其余位不变。*/
PORTY|=(1<<5)|(1<<3);/*将PORTY中的bit5、bit3置1,其余位不变。*/
这种写法的好处是:
(1)其位号直接写成数了,比写成01000000这类形式再换成十进制容易查错(不用数位数,不用换算),减少笔误。
(2)可以用宏定义给位号取个容易理解的名字,便于读者理解程序。
例如,如果其中的bit6是一个QF标志,那么,可以先定义
#define QF 6
然后,这里再将
PORTC&=~(1<<6);
直接写成:
PORTC&=~(1<<QF);/*将QF标志清零*/
程序的含义就很清楚了。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!