125008301 发表于 2008-3-26 20:35:09

马潮 老师 有没有课后思考与的答案啊 因为我想了解一下我的想法是否正确

马潮 老师 有没有课后思考与的答案啊 因为我想了解一下我的想法是否正确

我是一名学生 而且是AVR的初学者 希望能有一份好的答案证明自己的想法是否正确

可以的话发到我的邮箱 125008301@qq.com

我很高兴买了这本书

machao 发表于 2008-3-27 13:09:26

有时间再整理.另外要看书的受欢迎程度.

125008301 发表于 2008-3-28 15:02:03

马潮老师 你的书很受欢迎的 我已经推荐了全班人到图书城买了 就等你的课后练习答案 因为很多人不肯定

希望能够整理一下 我真的很需要 毕竟买这书的人很多是初学者

再次感谢马潮老师的好书 o(∩_∩)o...

349242603 发表于 2008-7-24 20:49:36

课后思考与的答案,、
我也期待这个

machao 发表于 2008-7-24 21:56:27

为什么你们自己不先发个参考答案,然后让大家讨论?

还习惯于填鸭、死记的学习方法,这要害人的。而且不是一个人,是一代人。

weixiao361 发表于 2008-7-26 09:44:56

马老师说的有道理哈,我想大家讨论出的答案才是好答案,
下面是我对马老师《AVR单片机嵌入式系统原理与应用实践》一书第173页的思考与实践第三问的解答,
本人新手,欢迎大家提出改进意见,也希望贴出自己的解答一起讨论啦。

/*****************************************************
File name                        : a.c
Chip type         : ATmega16L
Program type      : Application
Clock frequency   : 4.000000 MHz
Memory model      : Small
External SRAM size: 0
Data Stack size   : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
#include<stdlib.h>
void main(void)
{
    unsigned char i,j,k,f;        // position为控制位的位置

    PORTA=0xFF;                                        // PA口输出全1,LED全灭
    DDRA=0xFF;                                        // PA口工作为输出方式

    while (1)
    {    for(j=0;j<=1;j++)
          {
             for(i=0;i<8;i++)
             {
              PORTA = ~(1<<i);                                       
             delay_ms(500);
             }
         }
         for(j=0;j<=1;j++)
             {
             for(i=0;i<8;i++)
                {
                PORTA = ~(0X80>>i);               
                delay_ms(500);
                 }
             }
            
      for(i=0;i<16;i++)
            {
            PORTA = 0x55;
            delay_ms(500);
            PORTA = 0xaa;
               delay_ms(500);
            
            }
      
         for(j=0;j<=1;j++)
             {
             for(i=0;i<8;i++)
               {   k= rand();
                     f= k%256;
                     PORTA=f;
                     delay_ms(500);
               
               
               
               
               
               }
      
            }
            
    }            
}




下面是‘盗用’书本第183页时钟程序写出来的倒走时钟:



/*********************************************
File name                        : demo_6_5.c
Chip type         : ATmega16
Program type      : Application
Clock frequency   : 4.000000 MHz
Memory model      : Small
External SRAM size: 0
Data Stack size   : 256
*********************************************/

#include <mega16.h>
#include <delay.h>

flash unsigned char led_7={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
flash unsigned char position={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
unsigned char time;                                        // 时、分、秒计数
unsigned char dis_buff;                                // 显示缓冲区,存放要显示的6个字符的段码值
unsigned char time_counter;                                // 1秒计数器
bit point_on;                                        // 秒显示标志

void display(void)                                // 扫描显示函数,执行时间12ms
{
        unsigned char i;
        for(i=0;i<=5;i++)
        {
                PORTA = led_7];
                if (point_on && ( i==2 || i==4 )) PORTA |= 0x80;        // (1)
                PORTC = position;
               delay_ms(2);                                                                        // (2)
               PORTC = 0xff;                                                                        // (3)
        }
}

void time_to_disbuffer(void)                        // 时间值送显示缓冲区函数
{
        unsigned char i,j=0;
        for (i=0;i<=2;i++)
        {
                dis_buff = time % 10;
                dis_buff = time / 10;
        }
}

void main(void)
{
    PORTA=0x00;                // PORTA初始化
    DDRA=0xFF;
    PORTC=0x3F;                // PORTC初始化
    DDRC=0x3F;

    time = 23; time = 58; time = 55;        // 时间初值23:58:55
    time_to_disbuffer();

    while (1)
    {
          display();                                                // 显示扫描,执行时间12ms
          if (++time_counter >= 40)
          {
                  time_counter = 0;                                // (4)
                  point_on = ~point_on;                        // (5)
                  if (time--<=0)
                  {
                          time = 59;
                          if (time--<= 0)
                          {
                                  time = 59;
                                  if (time --<=0) time =23;
                          }
                  }
                  time_to_disbuffer();
          }
      delay_ms(13);                                        // 延时13ms,可进行其它处理(6)
    }
}

jinbu 发表于 2008-8-28 15:22:20

支持马老师!
页: [1]
查看完整版本: 马潮 老师 有没有课后思考与的答案啊 因为我想了解一下我的想法是否正确