您的位置 首页 ADAS

USRAT通讯测验

估计是接口连线的问题,及晶振的问题,我的实验实际发送接收显示有一定错误率。尝试了短接测试,错误率还比较小,通过rs232连接到电脑中的…

估量是接口连线的问题,及晶振的问题,我的试验实践发送接纳显现有必定错误率。

尝试了短接测验,错误率还比较小,经过rs232连接到电脑中的串口帮手显现的信息不精确。

#include
#include
#include “delay.h”
#define uchar unsigned char
#define BAUD 9600 //波特率选用9600bps
#define CRYSTAL 4000000//体系时钟4MHz
//核算和界说波特率设置参数
#define BAUD_SETTING (unsigned int)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1)
#define BAUD_H (unsigned char)(BAUD_SETTING>>8)
#define BAUD_L (unsigned char)(BAUD_SETTING)
// USART操控和状况寄存器的标志位界说
#define RXC 7 // UCSRA位界说
#define TXC 6
#define UDRE 5
#define FE 4
#define DOR 3
#define PE 2
#define U2X 1
#define MPCM 0
#define RXCIE 7 // UCSRB位界说
#define TXCIE 6
#define UDRIE 5
#define RXEN 4
#define TXEN 3
#define UCSZ2 2
#define RXB8 1
#define TXB8 0
#define URSEL 7 // UCSRC位界说
#define UMSEL 6
#define UPM1 5
#define UPM0 4
#define USBS 3
#define UCSZ1 2
#define UCSZ0 1
#define UCPOL 0
#define FRAMING_ERROR (1<#define PARITY_ERROR (1<#define DATA_OVERRUN (1<#define DATA_REGISTER_EMPTY (1<uchar led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳7段数码管显现0-9对应的8bit
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
uchar status,data;
status=UCSRA;
data=UDR;
if((status&(FRAMING_ERROR|PARITY_ERROR|DATA_OVERRUN))==0)
PORTB = led7[data];
}

void USART_Transmit(uchar data)
{
while(!(UCSRA & DATA_REGISTER_EMPTY)); // 等候发送寄存器空
UDR=data; // 发送数据
}

void inti_port(void)
{
PORTB=0x00; // LED段码输出
DDRB=0xff;
PORTD=0x03; // TXD(PD1)输出
DDRD=0x02; // RXD(PD0)输入,上拉有用
}

void inti_usart(void)
{
UCSRA = 0x00; // USART初始化
UCSRB = (1< //UCSRB = 0x98;
UCSRC = (1< //UCSRC = 0x86;
UBRRH = BAUD_H; // 设置波特率
//UBRRL = BAUD_L;
SEI(); // 开中止
}

void main(void)
{
uchar i=0;
inti_port();
inti_usart();
while(1)
{
USART_Transmit(i);
if (++i>=10)i=0;
delay_ms(500);
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/274880.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部