c语言写单片机程序?51单片机如何写程序
大家好,关于c语言写单片机程序很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于51单片机如何写程序的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
C语言怎么写进单片机
1:先把写好的C语言进行编译,生成*.hex或*.bin文件,推荐用keil C。
然后:
1:根据你单片机的型号买一个烧录器,与PC连接好后,把单片机放在烧录器的插座上(看你的单片机封装,新手尽量用DIP的),根据烧录器软件提示把上述文件烧到单片机里,缺点:价格较高
2:用下载线,用法与烧录器差不多,缺点:比较麻烦,要有一定经验。
3:用学习板,一般学习板上面的单片机可以直接在线烧录(如STC,SST系列的单片机),也就是说单片机不用拆下来,板子上做好了烧录电路,可以在板子上烧录,然后就可以直接验证了。
4:自已做一个,用STC的单片机,只要用一个RS232的转换电路(一片232IC,几个电解电容就行了),STC的单片机可以通过串口烧录程序,具体参见STC官网或其DATASHEET,有详细介绍。缺点:要一定动手能力
推荐新手用第3方法,可以很快上手。
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语言),新手不会写
/*
把P0.0定义K1,P0.1定义K2, P0.3定义K4,P1.0定义Y0,P1.1定义Y1,单片机低电平有效。
K1光电开关(为触发开关)检测到物体时输出低电平,K2(检测开关)检测到物体时高电平,K4(检测开关)检测到物体时是低电平,Y0外接电机,Y1外接继电器。
1、在开机状态下,K1没有检测到物体(没有触发),K2没有检测到物体,K4没有检测到物体,Y0为高电平,Y1为高电平。
2、 K1没有检测到物体为高电平,K2没有检测到物体为低电平,K4检测到物体为低电平。
Y0为高电平,Y1为低电平
3、 K1检测到物体(触发)为低电平,K2没有检测到物体为低电平,K4检测到物体为低电平,Y0为输出低电平,Y1输出高电平。
4、 K1没有检测到物体(没有触发)为高电平,K4检测到物体为低电平,当K2检测到物体为高电平,当K2从高电平变成低电平时,Y0输出为高电平,Y1输出为低电平。
5、当K4没有检测到物体时,Y0延时3秒变为高电平,Y1为高电平。
*/
#include<reg52.h>
sbit K1= P0^0;// 0
sbit K2= P0^1;// 1
sbit K4= P0^3;// O
sbit Y0= P1^0;// MOTOR
sbit Y1= P1^1;// SWITH
bit flag_have_K4= 0;
bit falg_have_K2= 0;
void delayms(int tms)
{
char i;
while(tms--)
{
i= 110;
while(i--);
}
}
void main(void){
unsigned char Y_status= 0;
Y0= 1;
Y1= 1;
while(1){
if(!K4)//测到
{
flag_have_K4= 1;
if(K1)////4 011--> 2 001
{
//Y0= 1;
//Y1= 0;
if(K2)
{
falg_have_K2= 1;
}
if(!K2&&falg_have_K2)
{
falg_have_K2= 0;
Y_status= 2;
}
}
if(!K1&&!K2)//3 101
{
//Y0= 0;
//Y1= 1;
Y_status= 3;
}
}
else
{
if(K1&&!K2)//1 000
{
Y_status= 1;
}
if(flag_have_K4)
{
flag_have_K4= 0;
Y_status=4;
}
}
if(1== Y_status)
{
Y0= 1;
Y1= 1;
Y_status= 0;
}
else if(2== Y_status)
{
Y0= 1;
Y1= 0;
Y_status= 0;
}
else if(3== Y_status)
{
Y0= 0;
Y1= 1;
Y_status= 0;
}
else if(4== Y_status)
{
delayms(3000);
Y0= 1;
Y1= 1;
Y_status= 0;
}
else
{
Y_status= 0;
}
}
}
c语言写单片机程序和51单片机如何写程序的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!