mega128的485通信中断接收的程序,调试通过
mega128 16AU的485通信中断接收的程序,调试通过,晶振为外部16M,MAX485的DE和RE短接连PC0口,程序如下:
#define SEND_485 PORTC|=0x01
#define READ_485 PORTC&=0xfe
void Usart1_init(void)//16Mhz频率,设置波特率9.6k,8位数据位,无校验,接收发送使能,1位停止位
{
UBRR1H=0;
UBRR1L=103;
UCSR1B=(1<<RXCIE1)|(1<<RXEN1)|(1<<TXEN1);//发送接收使能,使用中断方式,
UCSR1C=(1<<UCSZ10)|(1<<UCSZ11);//0x06 8位数据,1位停止位,无校验
}
void Usart1_transmit(unsigned char c)//查询方式发送接收字符函数
{
SEND_485;
DelayBus();DelayBus();DelayBus();
while( !(UCSR1A&(1<<UDRE1)));//等待发送缓冲区为空
UDR1=c;
while(!(UCSR1A&(1<<TXC1)));
// UDCR0=c;
UCSR1A |= _BV(TXC1);//将发送结束标志位清零
// SET_BIT(UCSR1A,);
READ_485;
direction++;
}
SIGNAL(SIG_UART1_RECV)//serial port 1
{
if(UCSR1A&(1<<RXC1))
{
rec1buff=UDR1;
rec1_flag=1;
}
}
望各位大虾批评指正 人家的贡献
怎么没人顶呢?? 我来!
现在用128在做一个项目,等好了全部传上去 顶,这样好的兄弟怎么能不顶呢? ^_^ 我写了一个基于数据包的485接受发送驱动,效果很好
有时间上传,供大家批评指正 通讯程序实际上学问很多,向各位学习 我倒觉得做硬件流控制更好些,软件的我也用过,但觉得在需要更改波特率时不是很方便! 如果是485网络,对于网络中的节点如何去寻址呢,请教一下~ direction++; 能实现direction累加功能吗?请回复
-----此内容被bobooliu于2007-07-20,13:13:16编辑过 这么短. mark 谢谢! mega128 16AU 现在啥价? 学习一下~~~~~~~128估计50+左右吧 回复【13楼】sunicecream遗忘时光
-----------------------------------------------------------------------
.................
MEGA128A 现在不到20..... 回复【14楼】huayuliang 花生
-----------------------------------------------------------------------
有哪么便宜? 俺几个月前买还29呢,现在19.5!! 我也要用MEGA128做项目,关注中。 谢谢,多谢了{:handshake:}! 有那么便宜吗128 {:smile:}{:smile:}{:handshake:} 顶顶 {:lol:}
页:
[1]