技术文档

单片机c语言程序100例 单片机c语言基础知识,c语言必背100代码有哪些?

小编 2024-11-24 技术文档 23 0

单片机c语言基础知识,c语言必背100代码有哪些?

我记得刚开始接触编程的时候,觉得太难了。

也很好奇,写代码的那些人也太厉害了吧?全是英文的,他们的英文水平一定很好吧?

他们是怎么记住这么多代码格式的?而且错了一个标点符号,整个程序都会有影响。

一个程序几千行,错一个标点符号都不行这也太难了吧?

带着新手的灵魂拷问,作为从业单片机编程10年的开发者,我来为大家拨开云雾。

看完以后你就会明白,其实他们也没那么厉害!即便你是初中文凭,也照样能编程。

对于c语言来说,要记得东西其实不多,基本就是几个常用语句加一些关键字而已。

你所看到的那些几千甚至上万行的代码,都是用这些语句和关键词来重复编写的。

只是他们逻辑功能不一样,另外的那些英文,都是程序员自己起的,比如说一些变量的名字,函数的名字。

如果你喜欢你定义成abc都可以,只不过为了程序大了以后为了方便阅读和维护,我们一般起跟要实现的功能相同的英文缩写代替。

比如说我要存储一个电压值,那你可以定义一个变量,名字叫VoltageValue,或者这两个词的缩写VoltVal。

所以,大家不要把这个想得这么神秘和高大上。

而从事单片机编程,需要的编程水平比做纯软件还要低一些,毕竟单片机的内存很有限,太大的程序也放不下。

单片机的c语言基础知识大家可以参考以下目录学习:

这个教程找无际单片机编程就可以拿到。

这是课程就是针对零基础的小伙伴学习的,先从认识单片机开始,然后再到计算机的存储和计算方式二进制、十进制。

学完这些基础,开始学习c语言的基本语法。

在学习过程中,大家一定要勤动手,多在单片机开发板上面做实验。

千万不要让知识点停留看懂的层面,看懂和自己能写出来区别还是很大的,请相信我!

如果你这些都学完了,可以在开发板上做个小实验,比如说电子时钟之类的。

这个步骤非常有必要,写的过程可以培养你的项目思维,以及代码整合能力。

如果这步直接跳过,后续学习更高级的stm32就会碰到很多问题,最大的问题就是你都学完了做项目还是无从下手。

单个功能都能实现,但整合起来就不知道怎么做了。

这就是缺少项目思维和代码整合能力导致的,不要一味地去追求学习高端的单片机,等你基础打扎实了,你会发现高端的也不过如此,就是外设多一点,资源丰富一点。

甚至说你会觉得高端的用起来比低端的单片机更加方便。

典型的就是stm32和51的对比,stm32单片机都是基于固件库开发,也就是原厂提供一套程序给你,你按照他们的函数调用就能把stm32单片机的资源用起来。

而51单片机就需要你去配置他们最底层的寄存器才能把资源用起来。

相对来说,stm32用熟了,开发效率会比51的高很多倍。

最后来聊下,有些新手说的c语言必背100个代码。

这纯粹是在瞎扯淡,c语言只是工具,不同的人用这个工具去实现同一种功能,他们的实现方法可能是不一样的,因为每个人的思维不同。

这不像我们课文靠背的,也没必要去背,看代码最重要的是理解这段代码实现功能的思路和原理。

通过功能和原理去理解代码,而不是通过代码去理解功能原理。

这个顺序搞不对,你一辈子都学不好编程。

单片机编程实例大全!

*实例 1:使用P3口流水点亮8位LED

#include<reg51.h> //包含单片机寄存器的头文件

/

函数功能:延时一段时间

/

void delay(void)

{

unsigned char i,j;

for(i=0;i<250;i++)

for(j=0;j<250;j++)

;

}

/

函数功能:主函数

/

void main(void)

{

while(1)

{

P3=0xfe; //第一个灯亮

delay(); //调用延时函数

P3=0xfd; //第二个灯亮

delay(); //调用延时函数

P3=0xfb; //第三个灯亮

delay(); //调用延时函数

P3=0xf7; //第四个灯亮

delay(); //调用延时函数

P3=0xef; //第五个灯亮

delay(); //调用延时函数

P3=0xdf; //第六个灯亮

delay(); //调用延时函数

P3=0xbf; //第七个灯亮

delay(); //调用延时函数

P3=0x7f; //第八个灯亮

delay(); //调用延时函数

}

*实例 2: 通过对P3口地址的操作流水点亮8位LED

#include<reg51.h> //包含单片机寄存器的头文件

sfr x=0xb0; //P3口在存储器中的地址是b0H, 通过sfr可定义8051内核单片机

//的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作

/

函数功能:延时一段时间

/

void delay(void)

{

unsigned char i,j;

for(i=0;i<250;i++)

for(j=0;j<250;j++)

; //利用循环等待若干机器周期,从而延时一段时间

}

/

函数功能:主函数

/

void main(void)

{

while(1)

{

x=0xfe; //第一个灯亮

delay(); //调用延时函数

x=0xfd; //第二个灯亮

delay(); //调用延时函数

x=0xfb; //第三个灯亮

delay(); //调用延时函数

x=0xf7; //第四个灯亮

delay(); //调用延时函数

x=0xef; //第五个灯亮

delay(); //调用延时函数

x=0xdf; //第六个灯亮

delay(); //调用延时函数

x=0xbf; //第七个灯亮

delay(); //调用延时函数

x=0x7f; //第八个灯亮

delay(); //调用延时函数

}

*实例3:用不同数据类型控制灯闪烁时间

#include<reg51.h> //包含单片机寄存器的头文件

/

函数功能:用整形数据延时一段时间

/

void int_delay(void) //延时一段较长的时间

{

unsigned int m; //定义无符号整形变量,双字节数据,值域为0~65535

for(m=0;m<36000;m++)

; //空操作

}

/

函数功能:用字符型数据延时一段时间

/

void char_delay(void) //延时一段较短的时间

{

unsigned char i,j; //定义无符号字符型变量,单字节数据,值域0~255

for(i=0;i<200;i++)

for(j=0;j<180;j++)

; //空操作

}

/

函数功能:主函数

/

void main(void)

{

unsigned char i;

while(1)

{

for(i=0;i<3;i++)

{

P1=0xfe; //P1.0口的灯点亮

int_delay(); //延时一段较长的时间

P1=0xff; //熄灭

int_delay(); //延时一段较长的时间

}

for(i=0;i<3;i++)

{

P1=0xef; //P1.4口的灯点亮

char_delay(); //延时一段较长的时间

*实例 4:用单片机控制第一个灯亮

#include<reg51.h> //包含51单片机寄存器定义的头文件

void main(void)

{

P1=0xfe; //P1=1111 1110B,即P1.0输出低电平

}

*实例 5:用单片机控制一个灯闪烁:认识单片机的工作频率

#include<reg51.h> //包含单片机寄存器的头文件

/

函数功能:延时一段时间

/

void delay(void) //两个void意思分别为无需返回值,没有参数传递

{

unsigned int i; //定义无符号整数,最大取值范围65535

for(i=0;i<20000;i++) //做20000次空循环

; //什么也不做,等待一个机器周期

}

/

函数功能:主函数 (C语言规定必须有也只能有1个主函数)

/

void main(void)

{

while(1) //无限循环

{

P1=0xfe; //P1=1111 1110B, P1.0输出低电平

delay(); //延时一段时间

P1=0xff; //P1=1111 1111B, P1.0输出高电平

delay(); //延时一段时间

}

}

*实例 6:将 P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能

#include<reg51.h> //包含单片机寄存器的头文件

/

函数功能:主函数 (C语言规定必须有也只能有1个主函数)

/

void main(void)

{

while(1) //无限循环

{

P1=0xff; // P1=1111 1111B,熄灭LED

P0=P1; // 将 P1口状态送入P0口

P2=P1; // 将 P1口状态送入P2口

P3=P1; // 将 P1口状态送入P3口

}

}

*实例 7:用P0口、P1 口分别显示加法和减法运算结果

#include<reg51.h>

void main(void)

{

unsigned char m,n;

m=43; //即十进制数2x16+11=43

n=60; //即十进制数3x16+12=60

P1=m+n; //P1=103=0110 0111B,结果P1.3、P1.4、P1.7 口的灯被点亮

P0=n-m; //P0=17=0001 0001B,结果P0.0、P0.4的灯被熄灭

}

*实例 8:用P0、P1口显示乘法运算结果

#include<reg51.h> //包含单片机寄存器的头文件

void main(void)

{

unsigned char m,n;

unsigned int s;

m=64;

n=71;

s=m*n; //s=64 71=4544,需要16位二进制数表示,高8位送P1口,低8位送P0口

//由于4544=17 256+192=H3 16 16 16+H2 16 16+H1 16+H0

//两边同除以256,可得17+192/256=H3 16+H2+(H1 16+H0)/256

//因此,高8位16进制数H3 16+H2必然等于17,即4544除以256的商

//低8位16进制数H1 16+H0必然等于192,即4544除以256的余数

P1=s/256; //高8位送P1口 ,P1=17=11H=0001 0001B, P1.0和P1.4口灭,其余亮

P0=s%256; //低8位送P0口 , P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7口灭,其余亮

}

*实例 9:用P1、P0口显示除法运算结果

#include<reg51.h> //包含单片机寄存器的头文件

void main(void)

{

P1=36/5; //求整数

P0=((36%5) 10)/5; //求小数

while(1)

; //无限循环防止程序“跑飞”

}

*实例 10:用自增运算控制P0口8位LED流水花样

#include<reg51.h> //包含单片机寄存器的头文件

/

函数功能:延时一段时间

/

void delay(void)

{

unsigned int i;

for(i=0;i<20000;i++)

;

}

/

函数功能:主函数

/

void main(void)

{

unsigned char i;

for(i=0;i<255;i++) //注意i的值不能超过255

{

P0=i; //将i的值送P0口

delay(); //调用延时函数

}

}

相关问答

单片机 除了可以用汇编和 c语言 编程,还有其他什么编程语言吗?

除了C和汇编,超子还接触过使用Arduino、Labview、Python以及Lua对单片机进行程序开发。不过这些相对比较小众,没有普适性。一、ArduinoArduino应该算是一种对...

单片机C语言 计数器 程序 ?

//timer0设定为计数器模式1TMOD&=0xf0;//清除原来的设定TMOD|=0x05;//T0为计数器模式1TH0=0;TL0=0;//从0开始计数TR0=...

51 单片机C语言 for循环延时 程序 时间计算设晶振12MHz,即一个机...

[最佳回答]不可能的,是不是你的编译有错的啊我改的晶振12M,在KEIL4.0里面编译的,为你得出的结果最大也就是40ms,这是软件的原因,不可能出现100ms那么大的差...

怎么把 c语言程序 烧进 单片机 ?

1、把C语言编译为编程器支持的语言格式,比如常用的bin,或hex等格式。2、如果是可在线编程的,可以用ISP直接进行烧录。3、如果不是可在线编程的,将单片机芯...

JAVA、 C C ++、Python同样是高级 语言 ,为什么只有 C C ++可以编写 单片机程序 ?

菜农从1981年开始就涉足与嵌入式领域的编程,开始是汇编语言和宏汇编语言,后来是C语言及C++语言,其他语言可能有,但很少且无大出路。因为嵌入式领域的编程与...

c语言 编程 单片机 难吗?

c语言编程单片机不难。学习掌握C语言的语法之后,单片机编程就是遵循单片机的技术规范,编写要实现的功能。其实到后来你会发现这个工作和C语言没有什么关系,用...

C 51 单片机 编程题:编写一个 C语言 函数,该函数能产生0~10的随机数?

软件没办法产生真随机数的,你可以加一个AD采集电路,采集信号噪声,作为随机种子产生随机数软件没办法产生真随机数的,你可以加一个AD采集电路,采集信号噪声,作...

51 单片机C语言 需要学习哪些知识?

答主从事嵌入式、单片机开发工作有几年了,负责硬件电路的设计和程序的编写调试等,所以结合自身的情况给与回答。1.单片机编程与PC编程不同单片机C语言和PC编...

C语言 单片机C语言 的区别急求?

单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。具体体现在:1、单片机中C的语法一般...

c语言 编程中,如何在51 单片机 8位数码管上滚动显示-HELLO--字符。比如?

P0=smgduan[i];delay(100);这两句是显示字母的语句,把它们加入对应的case语句里,就可以指定哪一段数码管显示啥字母,比如:case(2):LSA=0;LSB=1;LSC.....

猜你喜欢