圣龙扬特-AVR电子

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1402|回复: 4
打印 上一主题 下一主题

求教 串口中断接收

[复制链接]

2

主题

0

好友

16

积分

新手上路

Rank: 1

UID
302
帖子
4
精华
0
注册时间
2013-3-18
在线时间
1 小时
跳转到指定楼层
楼主
发表于 2013-3-19 08:56:10 |只看该作者 |倒序浏览
#include<iom64v.h>
#include<macros.h>
#define uchar8 unsigned char
#define uchar16 unsigned short
/*串口1初始化*/
volatile uchar8 temp_s[5];
void USART1_inital(void)
{
UCSR1B = 0x00;   //disable while setting baud rate
UCSR1A = 0x80;   //U2X = 0,不加倍数率
UBRR1L = 0x19; //set baud rate lo
UBRR1H = 0x00; //set baud rate hi波特率设定
UCSR1C = 0x06; //帧结构设定 8数据 无校验 1停止
UCSR1B = (1<<RXCIE1)|(1<<RXEN1)|(1<<TXEN1); //接收结束使能中断,发送接收使能
}
void USART_Transmit(uchar8 data)
{
while(!(UCSR1A&(1<<UDRE1)));
UDR1=data;
}
void delay_ms(uchar16 data)
{
uchar16 i;
while(data--)
{
  for(i=1;i<50000;i++);
}
}
#pragma interrupt_handler uart1_rx_isr:iv_USART1_RX
void uart1_rx_isr(void)
{
temp_s[2]=UDR1;
}
int main(void)
{
CLI();
USART1_inital();
//DDRD|=0X08;
SEI();
while(1)
{
  if(temp_s[2]==0x21)
  {
   USART_Transmit(0x99);
  }
  delay_ms(10);
  
  }
}
程序实现串口工具发送一个0x21,板子返回一个0x99。但是好像串口接收中断不好用。请帮忙分析下,谢谢。
回复

使用道具 举报

26

主题

1

好友

3446

积分

超级版主

Rank: 8Rank: 8

UID
7
帖子
140
精华
0
注册时间
2013-2-26
在线时间
20 小时

突出贡献

沙发
发表于 2013-3-19 16:40:38 |只看该作者
怎么个不好用法?请详细说明。
回复

使用道具 举报

26

主题

1

好友

3446

积分

超级版主

Rank: 8Rank: 8

UID
7
帖子
140
精华
0
注册时间
2013-2-26
在线时间
20 小时

突出贡献

板凳
发表于 2013-3-19 16:40:49 |只看该作者
怎么个不好用法?请详细说明。
回复

使用道具 举报

6

主题

2

好友

3315

积分

论坛元老

Rank: 8Rank: 8

UID
12
帖子
30
精华
2
注册时间
2013-2-26
在线时间
12 小时
地板
发表于 2013-3-19 18:46:15 |只看该作者
你没有打开中断吧?
拔剑四顾心茫然
回复

使用道具 举报

2

主题

0

好友

16

积分

新手上路

Rank: 1

UID
302
帖子
4
精华
0
注册时间
2013-3-18
在线时间
1 小时
5#
发表于 2013-3-20 09:23:50 |只看该作者
铜河 发表于 2013-3-19 16:40
怎么个不好用法?请详细说明。

谢谢,问题已解决,我程序熔丝设置没开看门狗,本身程序初始化部分也有错RXC置位了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|圣龙扬特-AVR电子 ( 鲁ICP备05022832号 )

GMT+8, 2024-4-27 04:14 , Processed in 0.211391 second(s), 18 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部