AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx

上传人:b****7 文档编号:10009192 上传时间:2023-02-07 格式:DOCX 页数:22 大小:669.84KB
下载 相关 举报
AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx_第1页
第1页 / 共22页
AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx_第2页
第2页 / 共22页
AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx_第3页
第3页 / 共22页
AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx_第4页
第4页 / 共22页
AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx

《AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx》由会员分享,可在线阅读,更多相关《AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx(22页珍藏版)》请在冰豆网上搜索。

AVR单片机嵌入式系统原理与应用实践一书勘误修正表.docx

AVR单片机嵌入式系统原理与应用实践一书勘误修正表

《AVR单片机嵌入式系统原理与应用实践》一书勘误修正表

(08/7/20共119处)

目录

1。

*第2页,第1行

   错误:

2.2.3 ATmage16的外部引脚与封装

   正确:

2.2.3 ATmega16的外部引脚与封装

第一章

1。

*第6页,第15行

   错误:

(1)单片嵌入式系统......

   正确:

(1)单片机嵌入式系统......

2。

*第9页,倒7行

   错误:

单片机是单片嵌入式系统的......

   正确:

单片机是单片机嵌入式系统的......

3。

**第14页,第10行

   错误:

工作电压范围宽(2.6~6.0v)

   正确:

工作电压范围宽(1.8~6.0v)

4。

**第15页,续表1-2,ATtiny85  / 系统时钟

   错误:

0~1

   正确:

0~20

第二章

1。

*第27页,倒2行

   错误:

2.2.3 ATmage16的外部引脚与封装

   正确:

2.2.3 ATmega16的外部引脚与封装

2。

*第28页,图2-3(a)18号引脚名称

   错误:

(CO1B)PD4

   正确:

(OC1B)PD4

3。

*第28页,图2-3(b)14号引脚名称

   错误:

(CO1A)PD5

   正确:

(OC1A)PD5

4。

*第28页,图2-3(b)

   17号引脚名称Vcc印刷模糊

   

5。

**第30页,图2-4

   下右部PD0~PD7引线中左数3、4根上多2个连接点

6。

**第31页 图2-5

   错误:

 R29     $001B    Y...

          R30     $001D    Z...

   正确:

 R29     $001D    Y...

          R30     $001E    Z...

7。

*第35页,倒6行

   错误:

(512~64K)X16位

   正确:

,(512~128K)X16位

8。

*第35页,倒2行

   错误:

$000开始

   正确:

$0000开始

9。

**第40页,倒2行

   错误:

必须将该其地址加上.....

   正确:

必须将该寄存器在I/O空间地址加上.....

10。

*第45页,第11行

   错误:

同时决大部分....

   正确:

同时绝大部分....

11。

*P47,第4行

   错误:

由一组溶丝位SUT、CKSEL...

   正确:

由一组熔丝位SUT、CKSEL...

12。

*P53,倒6行

   错误:

配置溶丝位...

   正确:

配置熔丝位...

第三章

1。

***P63,第7行

   错误:

LDD R16,Y + 31

   正确:

LDD R16,Y + $31

2。

*P69,倒11行

   错误:

AND Rd,Rr       0≤d≤31,0≤d≤31

   正确:

AND Rd,Rr       0≤d≤31,0≤r≤31

3。

*P76,第7行:

   错误:

指令“BRBS 0,K”。

   正确:

指令“BRBC 0,K”。

4。

**第82页,倒4行

   错误:

ST X,Rr

   正确:

ST X+,Rr

5。

*第85页,倒16行

   错误:

因此,PAMPZ寄存器...

   正确:

因此,RAMPZ寄存器...

6。

*第85页,倒3行

   错误:

LPM Rd,Z+

   正确:

ELPM Rd,Z+

7。

*第91页,倒11行

   错误:

SHE

   正确:

SEH

8。

*第92页,第7行

   错误:

转到$000。

   正确:

转到$0000。

第四章

1。

*第111页,第8行

   错误:

...,而且仿真与时序有关,...

   正确:

...,而仿真与时序有关,...

2。

*第113页,第10行

   错误:

debug - ware

   正确:

debugWIRE

3。

*第116页,第4行

   错误:

...,并对数学和浮点运算。

   正确:

...,并可进行数学和浮点运算。

4。

*第123页,第18行

   错误:

...使用DS1802....

   正确:

...使用DS18B20....

第五章

1。

***第139页,图5-9

   错误:

图5-9中下部的Memory窗口查看的是程序存储器中内容,与140页第9行的说明不符

   正确:

应选择查看数据存储器内容,地址为高端空间。

正确图如下:

2。

*第150页,151页上的图5-18,5-19,5-20(旧版BASCOM-AVR中的BUG)

   错误:

3个图中的EEPROM 为1024

   错误:

图5-19中的 Fusebit H  0:

CKOPT 0

   正确:

3个图中的EEPROM 为512

   正确:

图5-19中的 Fusebit H  1:

CKOPT 1

   正确图如下:

3。

**第154页,倒6行

   错误:

程序实例:

demo_5_2.asm

   正确:

程序实例:

demo_5_3.asm

   

第六章

1。

**P165,图6-2。

图中下面的文字说明第一行

    错误:

方向:

输入

    正确:

方向:

输出

2。

**第165页,表6-1的3、4行

   正确:

   DDRXn        PORTXn        PUD        I/O方式        内部上拉电阻        引脚状态说明

     0      0         X         输入           无效              三态(高阻)

     0         1/0         0         输入        有效/无效            有效时外部引脚拉低输出电流(uA)

     0          X         1         输入           无效              三态(高阻)

     1          0         X         输出           无效              推挽0输出,吸收电流(20mA)

     1          1         X         输出           无效              推挽1输出,输出电流(20mA)

3。

***第166页,第3行

   错误:

...取决于DDRXn设置。

   正确:

...取决于PORTXn设置。

4。

*第167页,图6-4

   错误:

图中PORTXn的D触发器一个控制信号---WRx

   正确:

图中PORTXn的D触发器一个控制信号---WPx

5。

**P169,第4行和第7行,2处 

   错误:

地址空间为I/O空间的0X00~0X31

   正确:

地址空间为I/O空间的0X00~0X1F

6。

***P170,第8行

   错误:

与0b00001000相“与”,

   正确:

与0b00001000相“或”,

7。

**173页,图6-7

   错误:

控制初值 = &B11111110 (有3处使用了&B)

   正确:

控制初值 = 0b11111110

8。

*第179页,表6-3

   错误:

表中第2行的段名 h  g  f  e  d  c  b  a

   正确:

表中第2行的段名 p  g  f  e  d  c  b  a

 

9。

*第192页,倒16行

   错误:

内部REM....

   正确:

内部RAM.... 

第七章

1。

*206页,倒数第九行

   错误:

(即AVR标志寄存器SREG....

   正确:

(即AVR状态寄存器SREG....

2。

*第226页,第3-4、7-8行

   错误:

4行程序代码排版不规则

   正确:

pop temp

         out sreg,temp           ;中断现场恢复

         reti                    ;中断返回

      led_7:

                     ;7段码表  

         .db 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07

         .db 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71

3。

**第231页,图7-4

   错误:

图7-4中芯片U2引脚名称标的不正规。

   正确:

见下图

第八章

1。

*236页,第5行

   错误:

作为C/T0的...

   正确:

作为T/C0的...

2。

*236页,倒18行

   错误:

或下降沿(CS0[2:

0]=8)时,...

   正确:

或下降沿(CS0[2:

0]=6)时,...

3。

**第239页,第9行:

   错误:

或改变OC2的输出逻辑电平。

 

   正确:

或改变OC0的输出逻辑电平。

4。

*241页,表8-2,8-3名称

   错误:

....(WGM=0、2)....

         ....(WGM = 3)....

   正确:

....(WGM0=0、2)....

         ....(WGM0= 3)....

5。

*243页,第6行

   错误:

2)比较匹配清0计数器CTC模式(WGM2[1:

0]=2)

   正确:

2)比较匹配清0计数器CTC模式(WGM0[1:

0]=2)

6。

*P247 图8-13中TCNTn中第二个描述

   错误:

TOR

   正确:

TOP. 

7。

*第259页,第5行

   错误:

(在一个PWN周期中,...)

   正确:

(在一个PWM周期中,...)

8。

**P263页,图8-19

   错误:

图中有2处明显错误,(Atmel的数据手册上也是错误的)

   正确:

见下图:

9。

*第266页,倒8行

   错误:

,但应确认触发信号比.....

   正确:

,但所确认的触发信号比.....

10。

**269页,图8-21的名称

   错误:

图8-21 采用T/C0的PWM功能产生正弦波

   正确:

图8-21 仅使用T/C1实现音乐播放器电路图

第九章

1。

*278页,倒15行

   错误:

...数字键“2”来将,

   正确:

...数字键“2”来讲,

2。

*296页,倒数第3行

   错误:

read_keyboaed()

   正确:

read_keyboard()

3。

*300页,17行

   错误:

该行语句的注解与程序重叠印刷

   正确:

将注解(//.....)右移4个空格 

第十章

1。

*303页,倒数第10行

   错误:

变ADC...

   正确:

变ACD...

2。

***306页,8-11行的程序注释

   错误:

        if (ACSR.5) 

            PORTB.2 = 0;    // AIN0 < AIN1 

        else 

            PORTB.2 = 1;    // AIN0 > AIN1,低电压报警

   正确:

        if (ACSR.5) 

            PORTB.2 = 0;    // AIN0 > AIN1,低电压报警 

        else 

            PORTB.2 = 1;    // AIN0 < AIN1

3。

*307页,12行

   错误:

非线形误差

   正确:

非线性误差

4。

**308页,图10-3

   错误:

图左上方的ADC多路选择两个内部控制信号名称错误:

AEFS1、AEFS0

   正确:

见下图,应为REFS1、REFS0

5。

*309页,倒11行

   错误:

REFS1、REFS2用于选择... 

   正确:

REFS1、REFS0用于选择...  

6。

*316页,倒5行

   错误:

flash unsigned char position[6]={......}

   正确:

flash unsigned char position[4]={......}

7。

*318页,倒4行

   错误:

以保证换算的正确型

   正确:

以保证换算的正确性

第十一章

1。

***327页,倒3行

   错误:

TIFR |= 0x02;

   正确:

TIFR = 0x80;

2。

*332页,第6行

   错误:

128000/125HZ=1024倍

   正确:

128000/125 = 1024倍

3。

*P333 第14行

   错误:

禁止T/CI输入捕捉和溢出中断

   正确:

禁止T/C1输入捕捉和溢出中断

 

4。

***342页,按键扫描函数代码

   原代码不理想,请改成如下:

unsigned char read_key(void) 

    static unsigned char key_state = 0,key_old; 

    unsigned char key_press,key_return = key_no; 

    key_press = key_input & key_mask;        // 读按键I/O电平 

    switch (key_state) 

    { 

        case key_state_0:

                    // 按键初始态 

            if (key_press !

= key_mask) 

            { 

                 key_old = key_press;        // 记录原电平                   

                 key_state = key_state_1;    // 键被按下,状态转换到键确认态  

            }              

            break;  

        case key_state_1:

                    // 按键确认态 

            if (key_press == key_old)        // 与原电平比较(消抖处理)

            { 

                if (key_press == 0b01000000) key_return = key_k1; 

                else if (key_press == 0b10000000) key_return = key_k2;  

                key_state = key_state_2;        // 状态转换到键释放态 

            } 

            else 

                key_state = key_state_0;        // 按键已抬起,转换到按键初始态 

            break; 

        case key_state_2:

 

            if (key_press == key_mask) key_state = key_state_0;  //按键已释放,转换到按键初始态 

            break;

    } 

    return key_return; 

第十二章

1。

*P351,第9行

   错误:

不仅是其低层的...

   正确:

不仅是其底层的...

2。

**P354,表12-3,倒数3、4行

   错误:

         H  X  L  ↓  X  移位寄存器内容打入8位锁存器中

         H  X  L  ↑  X  8位锁存器内容保持不变

   正确:

         H  X  L  ↑  X  移位寄存器内容打入8位锁存器中

         H  X  L  ↓  X  8位锁存器内容保持不变

         

3。

*P354,第6行

   错误:

...控制线上的上升打入到锁存器中的。

   正确:

...控制线上的上升沿打入到锁存器中的。

 

4。

*P355,倒9行

   错误:

利用74HC164

   正确:

利用74HC165

5。

*P355,倒8行

   错误:

采用74HC164

   正确:

采用74HC165

6。

*P356,图12-5标题

   错误:

采用74HC164

   正确:

采用74HC165

第十三章

1。

*370页,第1行 

   错误:

位6---UMSEn

   正确:

位6---UMSEL 

2。

*370页,表13-3名称栏(有2处)

   错误:

UPM2

   正确:

UPM0

3。

*377页,倒1行

   错误:

while(!

(UCSRA&(1<

   正确:

while(!

(UCSRA&(1<

4。

*381页,第6、7、8行(3处)

   错误:

RCX

   正确:

RXC

5。

*381页,倒4行

   错误:

总是设置DOR标志位为"0".

   正确:

总是设置PE标志位为"0".

6。

*387页,倒9行

   错误:

逻辑0、“1”之间的...

   正确:

逻辑0、1之间的...

7。

*P388,第9行

   错误:

都是在硬件低层...

   正确:

都是在硬件底层...

8。

**P389,第5行

   错误:

逻辑“1”电平规定为-15 ~ 5V

   正确:

逻辑“1”电平规定为-15 ~ -5V

9。

*P389,第7行

   错误:

三极管等分离器件

   正确:

三极管等分立器件

10。

*P391,第9行。

 

   错误:

基本的通信低层...

   正确:

基本的通信底层...

11。

*P391,第14行。

 

   错误:

(发送与接受)

   正确:

(发送与接收)

12。

*P393,倒8行。

 

   错误:

低层的

   正确:

底层的

13。

**394页,第8行

   错误:

( < 5% )

   正确:

( < ±0.5% )

14。

*P394,倒3行

   错误:

尤其是低层...

   正确:

尤其是底层...

第十四章

1。

*P407,第1行

   错误:

对编写SPI、I2(...(印刷不清楚)

   正确:

对编写SPI、I2C...

2。

*P409,13行

   错误:

正确受到

   正确:

正确收到

3。

**第418页,下部的通信协议小字部分

   错误:

1 切换卡通信方式 后面的序号为:

1.5、1.6、1.7、1.8

   正确:

序号应为:

1.1、1.2、1.3、1.4

4。

*P419,倒4行

   错误:

正确受到...

   正确:

正确收到...

第十五章

1。

*P430,表15-2,引脚栏中

   错误:

MOSI(PB7)   SCK(PB5)

   正确:

MOSI(PB5)   SCK(PB7)

2。

*P432,第9、10行

   错误:

SPCR(一处为寄存器定义图后面的名字)

   正确:

SPSR

3。

*P433,倒10行

   错误:

输入的SCL......

   正确:

输入的SCK......

4。

*P434,第2行

   错误:

产生任何的控制信号所需要从....

   正确:

产生任何的控制信号,所需要从....

5。

***P443-P444,原代码里面有几处笔误,以及一个BUG,请改成如下:

    #define SIZE 100 

    unsigned char SPI_rx_buff[SIZE]; 

    unsigned char SPI_tx_buff[SIZE]; 

    unsigned char rx_wr_index,rx_rd_index,rx_counter,rx_buffer_overflow; 

    unsigned char tx_wr_index,tx_rd_index,tx_counter; 

    unsigned char SPI_free; 

    interrupt [SPI_STC] void spi_isr(void)          // SPI 完成中断服务 

    { 

      SPI_rx_buff[rx_wr_index] = SPDR;              // 从SPI口读出收到的字节放入接收缓冲区 

      if (tx_counter)                               // 如果发送缓冲区中有待发的数据 

      { 

        SPDR = SPI_tx_buff[tx_rd_index];            // 发送1字节数据,  

        --tx_counter;                               // 待发送数据个数减1 

        if (++tx_rd_index == SIZE) tx_rd_index = 0; // 调整发送缓冲区队列指针 

      } 

      else SPI_free = 1;                            // 无待发送数据,置SPI空闲 

      if (++rx_wr_index == SIZE) rx_wr_index = 0;   // 调整接收缓冲区队列指针 

      if (++rx_counter == SIZE) 

      { 

         rx_counter = 0; 

         rx_buffer_overfl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1