‘壹’ 单片机怎么用c语言
单片机是一门很有用的技术,懂单片机可以找一份很好的研发岗工作。所谓万事开头难,在初学入门阶段可能摸不着头脑无从下手,如果有了比较好的学习方法单片机学习起来也是很有趣、很容易的。和大家分享一下单片机以及单片机C语言编程的学习方法。
1.选择一块单片机开发板
不管你是从51单片机开始,还是直接从STM32、AVR开始,建议买一块单片机开发板。切记,在学习单片机的时候不要和学习高数一样天天抱着书看,单片机是一门实践性非常强的课程,如果只看书不动手永远是纸上谈兵。书都不要看,直接买一块开发板,对单片机而言,最好的书就是单片机的数据手册。
3.学习单片机的定时器、AD转换、中断等片上资源
单片机具有丰富的片上资源,合理的使用这些片上资源可以简化产品的设计使方案最优。所以学习这些片上资源非常重要。这些片上资源包括定时器,可以实现定时功能或计数功能,该功能非常有用。单片机的AD转换功能可以将模拟量转化成数字量,在信号采集方面是非常重要的。使用单片机的中断资源可以节省单片机的资源,提高代码执行效率。
4.学习UART、IIC、SPI、CAN等通讯功能
通讯功能可以实现数据的传输,如wifi、蓝牙、RS485等都是常用的通讯功能,所以这一块一定要学习。现在绝大多数的单片机都带有UART、IIC、SPI甚至CAN通讯功能,其他一些通讯功能可能都是由这几种通讯功能延时出来的,比如说UART功能配合不同的电平转换芯片可以实现RS232、RS485、CAN,甚至蓝牙和wifi通讯等。
‘贰’ 51单片机C语言中delay函数是怎么定义和使用的
在51单片机的C语言编程中,我们经常需要使用延时函数来控制程序的执行速度。延迟函数通常由程序员自己编写,其核心思想是通过执行无意义的指令来实现时间上的延迟。这是一种简单且常见的方法,特别是在硬件资源有限的环境下。
下面,我们来探讨一个经典的延时函数的实现方式。这个函数的目的是根据给定的毫秒数来产生相应的延迟。具体实现如下:
// 定义一个延时xms毫秒的延时函数
void delay(unsigned int xms) // xms代表需要延时的毫秒数
{
unsigned int x, y;
for(x = xms; x > 0; x--)
for(y = 110; y > 0; y--);
}
在这个函数中,主要包含了两个嵌套的for循环。外部的循环变量x用于控制总的延迟时间,内部的循环变量y则用于细化每个时间单位内的延迟。通过这种方式,我们可以根据不同的需求调整延时的具体时长。
需要注意的是,这个延时函数的具体延迟时间依赖于单片机的时钟频率和编译器的优化设置。在实际应用中,为了获得更准确的延时,可能需要对循环次数进行适当的调整。
此外,这个延时函数适用于那些对延迟时间要求不是特别严格的应用场景。对于需要极高精度延时的应用,可能需要采用更复杂的方法,例如使用定时器中断等。
综上所述,通过简单的循环结构,我们可以实现一个基本的延时功能,这对于许多小型嵌入式项目来说已经足够。