搜索
bottom↓
回复: 2

求助一个AVR M16串口中断的问题

[复制链接]

出0入0汤圆

发表于 2010-1-24 16:43:10 | 显示全部楼层 |阅读模式
编一个小程序需要与计算机通过串口联系,由于采用串口查询接收比较浪费机器资源,所以就采用了串口接收中断的方式,按M16手册查询了寄存器的设置,编了一段小程序验证,问题来了,无论如何也收不到计算机发送的数据,验证程序设计电脑发送0x43,接收中断判断出是0x43后,点亮PB口的LED,郁闷的是怎么也无法实现,把程序发上来,高手给分析一下,看看错在哪里。 谢谢大家!

解释一下:速率4800 8数据位 1停止位 倍速通信(非倍速也试了,不行) 单片机时钟8M

//ICC-AVR application builder : 2010-1-24 16:24:18
// Target : M16
// Crystal: 8.0000Mhz

#include <iom16v.h>
#include <macros.h>

void port_init(void)
{
PORTA = 0x7F;
DDRA  = 0x00;
PORTB = 0x00;
DDRB  = 0xFF;
PORTC = 0x00; //m103 output only
DDRC  = 0x00;
PORTD = 0x00;
DDRD  = 0x00;
}

//UART0 initialize
// desired baud rate: 4800
// actual: baud rate:4808 (0.2%)
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x02;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0xCF; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x98;
}

#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
//uart has received a character in UDR
unsigned char temp;
temp = UDR;
if (temp == 0x43)
   {
    PORTB = 0x55;
   }
//else PORTB = 0;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
uart0_init();

MCUCR = 0x00;
GICR  = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}

void main ()
{
init_devices();

while (1)
{
   
}

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入4汤圆

发表于 2012-11-5 23:07:16 | 显示全部楼层
PD0,PD1没有配置好。
反正PD1应该配置输出。
PD0输入输出都可以,简单测试了一下,实际使用时自行验证哈。

出0入0汤圆

 楼主| 发表于 2012-11-25 18:26:40 | 显示全部楼层
谢谢你的回复!
已经搞定了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 04:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表