《深入浅出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);
} 检查MAX232与单片机接地是否正确。
你用的芯片是M8,但是那个程序是基于M48的……你用ICC设置正确么? 请检查单片机是否正确运行了程序,时钟配置是否正确。在串口章节,有一个测试性的发送程序,可以先用那个程序烧进去,吧硬件调通。
调试就是这样,如果通讯没有好,就先不要加上层建筑(AD),等通讯已经搞定了,再往上加码。
如果还有问题,可以在这里讨论或者给我邮件。 短接TXD和RXD后,用实例15 数字电压表后台软件中,串口检测可以能过!
请问是什么回事啊? 串口调试助手出现狂收数据!全部是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) Gorgon_Meducer 发表于 2008-12-31 23:09
检查MAX232与单片机接地是否正确。
你用的芯片是M8,但是那个程序是基于M48的……你用ICC设置正确么? ...
《深入浅出AVR-从ATMega48/88/168开始》这本书有完整版下载链接吗?我想自己打印成多个小册一点一点学习。 hidden 发表于 2019-1-21 06:57
《深入浅出AVR-从ATMega48/88/168开始》这本书有完整版下载链接吗?我想自己打印成多个小册一点一点学习 ...
很遗憾,目前只有淘宝上可以找到扫描版或者复印版。 第一次近距离接近大师。^O^
页:
[1]