博文
<015> AVR Studio中常用快捷键(2006-11-10 11:43:00)
摘要:┌───────┬─────────────┬─────────┐
ㄧ 名称 ㄧ 功能 ㄧ 快捷键 ㄧ
├───────┼─────────────┼─────────┤
ㄧ Run ㄧ 在Simulator上运行目标程序ㄧ F5 ㄧ
├───────┼─────────────┼─────────┤
ㄧ Stop ㄧ 终止Debug调试 ㄧ Ctrl + Alt + F5 ㄧ
├───────┼─────────────┼─────────┤
ㄧ Reset ㄧ 复位目标程序 ㄧ Shift + F5 ㄧ
├───────┼─────────────┼─────────┤
ㄧ Break &nb......
<014> AVR-GCC中常用Make操作的功能(2006-11-09 22:42:00)
摘要:┌───────┬─────────────────────────┐
ㄧ 操作 ㄧ 功能 ㄧ
├───────┼─────────────────────────┤
ㄧ make all ㄧ 编译源文件,生成输出文件 ㄧ
├───────┼─────────────────────────┤
ㄧ make clean ㄧ 清除所有编译生成的文件 ㄧ
ㄧ ㄧ (在编译之前,应该先清除上一次编译生成的旧文件) ㄧ
├───────┼────────────......
<013> PN中常用快捷键&PN中添加Make工具各参数含义(2006-11-09 22:17:00)
摘要:┌────────────┬─────────────┐
ㄧ 快捷键 ㄧ 对应功能 ㄧ
├────────────┼─────────────┤
ㄧ Ctrl F2 ㄧ 设置普通书签 ㄧ
├────────────┼─────────────┤
ㄧ Ctrl K, x(x=0,1,2,…,9)ㄧ 设置数字书签 ㄧ
├────────────┼─────────────┤
ㄧ F2 ㄧ 在各个书签位置跳转 ㄧ
├────────────┼─────────────┤
ㄧ Ctrl Q, x ㄧ 跳转到指定数字书签位置 ㄧ
├────────────┼─────────────┤
ㄧ C......
<012> WinAVR中sbi()和cbi()函数编译报错的解决(2006-09-13 17:58:00)
摘要:今天在用WinAVR的20050214版本时发现编译无法通过,不能识别sbi()和cbi()函数。论坛里查了一下,原来是这个版本里没有定义这两个函数。(查看 帖1, 帖2)
看了一下, 大概有三种方法解决:
<1>
#ifndef sbi
#define sbi(reg,bit) reg |= (_BV(bit))
#endif
#ifndef cbi
#define cbi(reg,bit) reg &= ~(_BV(bit))
#endif
<2>
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
<3>
#define sbi(x, y) (x |= (1 << y)) /*置位寄器x的第y位*/
#define clr(x, y) (x &= ~(1 <<y )) /*清零寄器x的第y位*/
★其实前两种方法追根溯源还是用的第三种方法, 因为_BV是用<<定义的。 可以在WinAVR的安装目录下\include\avr中找到一个sfr_defs.h文件,里面有对_BV的定义:
#define _BV(bit) (1 << (bit))
觉得还是用第3种方法比较直观, 也是本质, 所以决定以后就用它定义。
......
<011> TCCR0 值与计数器0触发条件的关系 [AVR](2006-09-08 13:40:00)
摘要: 所谓计数器,即是在规定时间内对输入信号的脉冲个数进行计算的模块。PB0为计数器0的输入端口,因此,使用计数器时,必须将PB0设为输入。计数器的使用与定时器十分相似,每次输入信号的上升沿(或下降沿)出现时,TCNT0就自加,当自加到0xFF以后,再次自加就会溢出。与定时器一样,TCNT0溢出时TIFR中的TOV0就置1。
输入信号是上升沿还是下降沿触发计数器,是由TCCR0控制的。
┌─────┬──────────────┐
ㄧ TCCR0 值 ㄧ 触发方式 ㄧ
├─────┼──────────────┤
ㄧ 5 ㄧ 输入信号的下降沿触发计数器 ㄧ
├─────┼──────────────┤
ㄧ 6 ㄧ 输入信号的上升沿触发计数器 ㄧ
└─────┴──────────────┘
《AVR单片机与CPLD/FPGA综合应用入门》......
<010> TCCR0 与预分频数的关系 [AVR](2006-09-07 13:17:00)
摘要:所谓"预分频",就是该时钟是由晶振时钟分频得到的。预分频数可以是1、8、64、256、1024。假设预分频数为8,则每8个晶振时钟周期后,TCNT0的值自加1。预分频数由寄存器TCCR0控制。
┌─────┬─────────┐
ㄧ TCCR0 值 ㄧ 预分频后时钟频率 ㄧ
├─────┼─────────┤
ㄧ 1 ㄧ fosc ㄧ
├─────┼─────────┤
ㄧ 2 ㄧ fosc/8 ㄧ
├─────┼─────────┤
ㄧ 3 ㄧ fosc/64 ㄧ
├─────┼─────────┤
ㄧ 4 ㄧ fosc/256 ㄧ
├─────┼─────────┤
ㄧ 5 ㄧ fosc/1024 ㄧ
└─────┴─────────┘
《AVR单片机与CPLD/FPGA综合应用入门》......
<009> MCUCR 中关于INT0的中断触发条件 [AVR](2006-09-07 13:02:00)
摘要:ATmega16L 共有3个外部中断(INT0:PD2,INT1:PD3,INT2:PB2),MCUCR寄存器可以控制外部中断的触发条件(INT2只能沿触发)。MCUCR中的ISC01和ISC00用来控制INT0的中断触发条件。
┌────┬────┬───────────────────────┐
ㄧ ISC11 ㄧ ISC10 ㄧ 说明 ㄧ
├────┼────┼───────────────────────┤
ㄧ 0 ㄧ 0 ㄧINT0上的低电平产生中断请求 ㄧ
├────┼────┼───────────────────────┤
ㄧ 0 ㄧ 1 ㄧINT0上的电平变化(高到低或低到高)产生中断请求 ㄧ
├────┼────┼───────────────────────┤
ㄧ 1 ㄧ 0 ㄧINT0上的下降沿产生中断请求 &n......
<008> MCUCR 中关于INT1的中断触发条件 [AVR](2006-09-07 12:59:00)
摘要:ATmega16L 共有3个外部中断(INT0:PD2,INT1:PD3,INT2:PB2),MCUCR寄存器可以控制外部中断的触发条件(INT2只能沿触发)。MCUCR中的ISC11和ISC10用来控制INT1的中断触发条件。
┌────┬────┬───────────────────────┐
ㄧ ISC11 ㄧ ISC10 ㄧ 说明 ㄧ
├────┼────┼───────────────────────┤
ㄧ 0 ㄧ 0 ㄧINT1上的低电平产生中断请求 ㄧ
├────┼────┼───────────────────────┤
ㄧ 0 ㄧ 1 ㄧINT1上的电平变化(高到低或低到高)产生中断请求 ㄧ
├────┼────┼───────────────────────┤
ㄧ 1 ㄧ 0 ㄧINT1上的下降沿产生中断请求 &n......
<005> GCC中的整型类型名 [AVR](2006-09-07 12:03:00)
摘要:标准C的变量类型一般都适用于单片机的C语言,如char、float、double、unsigned int 等。经常使用的整型在头文件 <inttypes.h> 中作了定义。
┌──────┬──────┬──────────────┐
ㄧ 类型名 ㄧ 长度/字节 ㄧ 数值范围 ㄧ
├──────┼──────┼──────────────┤
ㄧ int8_t ㄧ 1( 8 bits) ㄧ -128~127 ㄧ
├──────┼──────┼──────────────┤
ㄧ uint8_t ㄧ 1( 8 bits) ㄧ 0~255 ㄧ
├──────┼──────┼──────────────┤
ㄧ int16_t ㄧ 2(16 bits) ㄧ -32768~32767 ㄧ
├──────┼──────┼──────────────┤
ㄧ uint16_t ㄧ 2(16 bits) ㄧ 0~655......
<004> 高阻、上拉、下拉(2006-09-07 12:01:00)
摘要: 所谓高阻,可以简单理解为输出端处于浮空状态(没有电流流动),其电平随外部电平高低而定,即门电路放弃对输出端电路的控制。而上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用。下拉同理,只不过上拉是对器件注入电流,下拉是输出电流。至于弱上拉和强上拉,只是上拉电阻的阻值不同,没有什么严格区分。简言之,上拉就是在端口没有输入的情况下,将端口的电平稳定在高电平。
《AVR单片机与CPLD/FPGA综合应用入门》......