![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AVR
Yqq__00
这个作者很懒,什么都没留下…
展开
-
AVR全局全能中断 #define sei() __asm__ __volatile__ ("sei" ::) 是什么意思
GCC 嵌入汇编的写法1,标准C语言没有实现开关中断,所以需要内联汇编来实现。__asm__ __volatile__ ("sei" ::)__asm__ 是关键字,标明后面的是汇编代码。__volatile__ 标识这代码是可变的,防止被编译器优化,其实在这里没有用。("sei" ::) sei 就是汇编指令,后面两个冒号隔开了两个操作数,输入和输出。这转载 2013-12-30 16:34:31 · 3403 阅读 · 0 评论 -
SPI,UART,I2C都有什么区别,及其各自的特点
区别:SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 I2C:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的原创 2014-01-02 12:22:25 · 648 阅读 · 0 评论 -
AVR——使用定时器必须弄清的几个概念
在MCU中(M16),定时器是独立的一个模块,M16有三个独立的定时器模块,即T/C0、T/C1和T/C2;其中T/C0和T/C2都是8位的定时器,而T/C1是一个16位的定时器。定时器的工作是独立于CPU之外自行运行的硬件模块。1、定时器何时开始工作(或说计数)的? 当TCCR0!=0x00任何模式下,只要MCU一上电,T/C就开始计时工作。其实TCCR0主要是定时器的预分频和波形转载 2014-01-03 14:25:41 · 2741 阅读 · 0 评论 -
看门狗WDT
看门狗这个东西以前没接触过……理解它费了一点周折。使用它的复位MCU的功能实现LED的闪烁。准备工作是设定WDT的超时时间(如1s)首先使能看门狗(wdt_enable),然后喂狗(wdt_reset),再延时灯的闪烁时间(delay=0.5s),使灯亮(SET_LED);再用一个恰当的比较长的延时(delay>0.5s)饿死狗。之后MCU重启,如此往复。(转载 2014-01-13 10:27:21 · 1950 阅读 · 0 评论 -
Mega48/88/128中内部EEPROM的读写
1、AVRGCC里面自带有EEPROM读写函数。 这需要包含头文件#include ,里面的一些函数如下: #define eeprom_is_ready() bit_is_clear(EECR, EEWE)//检测EEPROM是否准备好。OK返回1(返回EEWE位) #define eeprom_busy_wait() do {} whil原创 2014-02-20 13:17:03 · 2031 阅读 · 0 评论 -
FLASH、SRAM、EEPROM
FLASH程序存储器存程序,单片机上电后会自动从这里读代码开始运行。SRAM是跑程序时候暂存临时数据的地方,一般不太大,从128字节到几K字节都有,一掉电数据就没了。EEPROM是掉电也不丢数据的存储器,一般都用来存设置的。你可以一字节一字节的把每字节的8位1任意编写成0。但这片一般是按扇区为单位,一擦除就是全成1。原创 2014-05-06 17:20:47 · 565 阅读 · 0 评论