/*PD0为RXD,PD1为TXD,PD2为控制端~RE/DE;
整个程序就是测试下从外部发送到板子上的数据再返回
*/
#define F_CPU 8000000 // 定义晶振频率,硬件上采用7.3728M
#include
#include
#include
#define SET_LED0 PORTD|=_BV(2);
#define CLR_LED0 PORTD&=~_BV(2);
volatile static uint8_t data;
int main(void)
{
UCSRB = (1<
UBRRL = 51; // 波特率9600
DDRD = 0xfe;
CLR_LED0;
sei();
while(1)
{
}
}
// 接收完成中断服务程序
SIGNAL(SIG_UART_RECV)
{
data = UDR;
_delay_ms(10);
SET_LED0;
_delay_ms(10);
UCSRB |= _BV(UDRIE); // 使能USART数据寄存器空中断
}
// USART数据寄存器空中断服务程序
SIGNAL(SIG_UART_DATA)
{
UDR = data;
_delay_ms(10);
CLR_LED0;
_delay_ms(10);
UCSRB &= ~(1<
}
出现的问题是从串口调试助手上收到的全是00,做单个接受中断测试的时候感觉像是没有进入中断
数据传送是由485转232的转换工具 传到pc机的
希望大家帮忙看看程序哪里不对了