raymondcs 发表于 2008-12-21 23:22:26

《深入浅出AVR-从ATMega48/88/168开始》中串口调试失败!【恢复】

今天终要学AVR了,买了本《深入浅出AVR-从ATMega48/88/168开始》回来了!

本来对51就有一定的基础!所以先试试串口试验!但没想到见到难题了!

我是按照光盘上的线路图做了一个串口试验版!把ADO也接好了!

芯片=M8

电平芯片=max232cpe

max232cpe电容用的是103P



接AD0,

接ISP(用USB做的那个,M8做芯片)

取电:直接用ISP,USB  5V电源



代码用光盘中的代码





/*********************************************************/

/*                                                       */

/*         第2篇第8章 串口校准发送测试 源程序            */

/*                                                       */

/*                   编写:江海波                        */

/*                                                       */

/*                2007-03       V1.0                     */

/*                                                       */

/*         提示 : 本程序仅随本书使用,保留版权            */

/*              实例代码用于工程时应谨慎!               */

/*                                                       */

/*             E-mail : soundman@sohu.com                */

/*                                                       */

/*********************************************************/



#include "iom48v.h"

#include "macros.h"



void uart0_init(void)

{

        UCSR0A = 0x02;                                        //使用波特率倍增,不使用多从机模式

        UCSR0C = 0x06;                                        //异步串口模式,禁止奇偶校验,1位停止位,8-bit帧模式

        UBRR0L = 0x0C;                                        //设置波特率,9600

        UBRR0H = 0x00;

        UCSR0B = 0x98;                                        //允许接收完成中断使能,禁止发送完成中断,禁止发送寄存器空中断,允许接收,允许发送

}



void Delay_ms(unsigned int Time)

{

    unsigned char n=0;

    while(Time>0)

    {

        for (n=1;n<187;n++)

        {

            NOP();

        }

        Time--;

    }

}



void main (void)

{

    unsigned char SendData = 0xFF;

    

    uart0_init();

    

    do

    {

        while(!(UCSR0A&(1<<UDRE0)));

        UDR0 = SendData;

        SendData--;

    }

    while(SendData != 0xFF);

    

    while(1);

}

Gorgon_Meducer 发表于 2008-12-31 23:09:23

检查MAX232与单片机接地是否正确。

你用的芯片是M8,但是那个程序是基于M48的……你用ICC设置正确么?

NE5532 发表于 2008-12-31 21:48:30

请检查单片机是否正确运行了程序,时钟配置是否正确。在串口章节,有一个测试性的发送程序,可以先用那个程序烧进去,吧硬件调通。



调试就是这样,如果通讯没有好,就先不要加上层建筑(AD),等通讯已经搞定了,再往上加码。



如果还有问题,可以在这里讨论或者给我邮件。

raymondcs 发表于 2008-12-21 23:35:05

短接TXD和RXD后,用实例15 数字电压表后台软件中,串口检测可以能过!

请问是什么回事啊?

raymondcs 发表于 2008-12-21 23:32:11

串口调试助手出现狂收数据!全部是000000000000000000000000000000000000000000000

用光盘自带的实例15 数字电压表后台软件在接收显示区中也是狂收到此为0000000000000000000000000000000000

http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_553383.JPG

 (原文件名:1.JPG) 



http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_553402.jpg

 (原文件名:2.jpg) 

hidden 发表于 2019-1-21 06:57:40

Gorgon_Meducer 发表于 2008-12-31 23:09
检查MAX232与单片机接地是否正确。

你用的芯片是M8,但是那个程序是基于M48的……你用ICC设置正确么? ...

《深入浅出AVR-从ATMega48/88/168开始》这本书有完整版下载链接吗?我想自己打印成多个小册一点一点学习。

Gorgon_Meducer 发表于 2019-1-21 19:29:32

hidden 发表于 2019-1-21 06:57
《深入浅出AVR-从ATMega48/88/168开始》这本书有完整版下载链接吗?我想自己打印成多个小册一点一点学习 ...

很遗憾,目前只有淘宝上可以找到扫描版或者复印版。

jack_yu 发表于 2019-1-21 19:32:04

第一次近距离接近大师。^O^
页: [1]
查看完整版本: 《深入浅出AVR-从ATMega48/88/168开始》中串口调试失败!【恢复】