博文

<015> AVR Studio中常用快捷键(2006-11-10 11:43:00)

摘要:┌───────┬─────────────┬─────────┐
ㄧ     名称     ㄧ          功能            ㄧ     快捷键       ㄧ
├───────┼─────────────┼─────────┤
ㄧ Run          ㄧ 在Simulator上运行目标程序ㄧ F5               ㄧ
├───────┼─────────────┼─────────┤
ㄧ Stop         ㄧ 终止Debug调试            ㄧ Ctrl + Alt + F5  ㄧ
├───────┼─────────────┼─────────┤
ㄧ Reset        ㄧ 复位目标程序             ㄧ Shift + F5       ㄧ
├───────┼─────────────┼─────────┤
ㄧ Break      &nb......

阅读全文(4602) | 评论:1

<014> AVR-GCC中常用Make操作的功能(2006-11-09 22:42:00)

摘要:┌───────┬─────────────────────────┐
ㄧ    操作      ㄧ                      功能                        ㄧ
├───────┼─────────────────────────┤
ㄧ make all     ㄧ 编译源文件,生成输出文件                          ㄧ
├───────┼─────────────────────────┤
ㄧ make clean   ㄧ 清除所有编译生成的文件                           ㄧ
ㄧ              ㄧ (在编译之前,应该先清除上一次编译生成的旧文件)    ㄧ
├───────┼────────────......

阅读全文(4087) | 评论:0

<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......

阅读全文(3396) | 评论:0

<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种方法比较直观, 也是本质, 所以决定以后就用它定义。
......

阅读全文(6133) | 评论: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综合应用入门》......

阅读全文(4661) | 评论:0

<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综合应用入门》......

阅读全文(4365) | 评论:0

<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......

阅读全文(4045) | 评论:0

<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......

阅读全文(4067) | 评论:0

<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......

阅读全文(2992) | 评论:0

<004> 高阻、上拉、下拉(2006-09-07 12:01:00)

摘要:    所谓高阻,可以简单理解为输出端处于浮空状态(没有电流流动),其电平随外部电平高低而定,即门电路放弃对输出端电路的控制。而上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用。下拉同理,只不过上拉是对器件注入电流,下拉是输出电流。至于弱上拉和强上拉,只是上拉电阻的阻值不同,没有什么严格区分。简言之,上拉就是在端口没有输入的情况下,将端口的电平稳定在高电平。

《AVR单片机与CPLD/FPGA综合应用入门》......

阅读全文(4249) | 评论:2