- 202104-2351单片机几种精确延时实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 今天主要介绍软件延时,关于硬件延时,之后定时器部分再做详细说明。 首...
- 202104-23AVR 的精确延时程序C语言中,想使用精确的延时程序并不容易。IAR 中有这样的一个函数 __delay_cycles(),该函数在头文件intrinsics.h中定义,函数的作用就是延时N个指令周期。根据这个函数就可以实现精确的延时函数了(但不能做到100%精确度)。实现的方法:建立一个delay.h的头文件:#ifndef __IAR_DELAY_H#define ...
- 202104-23AVR学习笔记------SPI总线和AVR SPISPI是一种采用串行同步方式的3线或4线通信接口,使用信号有使能信号,同步时钟,同步数据输入和数据输出。其常用于微控制器和外围芯片的直接连接和扩展。 一个典型的SPI总线系统包括一个主机和一个从机,双方之间通过主机输出/从机输入(MOSI),主机输入/从机输出(MISO) ,同步时钟信号(SCLK),从机选择(SS...
- 202104-23AVR c语言的位操作位操作一个共同的任务是编程微控制器 MCU打开或关闭IO 寄存器的一些位bit 很幸运标准C 有较好的和适用的位操作功能而没有借助于汇编指令或其它非标准C 结构C 定义了一些按位进行的运算是很有用的a | b – 按位或 这个表达式指示中a 被表达式中的b 按位进行或运算这惯用于打开某些位尤其常用|=的形式例如PORTA |= 0x80; // 打开位7 (最高位)a...
- 202104-23AVR的bootloader的设置一些注意事项:1.熔丝位的烧写:BOOTRST要进行编程,这样单片机在复位后自动跳转到bootloader区执行bootloader的代码,然后要根据自己bootloader的大小设置boot区的的熔丝位:具体设置如下图,这里我选择的是1024大小(注意1代表为编程,0代表已编程): 2.设置引导区锁定位:为了保护boot...