⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usart.c

📁 Atmega169 usart 驱动
💻 C
字号:
#include <iom169.h>
#include <intrinsics.h> 


#define SYSTEM_CLOCK 11059200

#define _NOP_nop(i)    __delay_cycles(i)
#define _NOP_us(i)  __delay_cycles((i*(unsigned long long)SYSTEM_CLOCK)/1000000)
#define _NOP_ms(i)  __delay_cycles((i*(unsigned long long)SYSTEM_CLOCK)/1000)
#define _NOP_s(i)  __delay_cycles((i*(unsigned long long)SYSTEM_CLOCK)/1)

void USART_Init( unsigned int baud )
{
    /* 设置波特率*/
    UBRR0H=(unsigned char)((0x0fff&(SYSTEM_CLOCK/(16*(unsigned long)baud)-1))>>8);
    UBRR0L=(unsigned char)(0x0fff&(SYSTEM_CLOCK/(16*(unsigned long)baud)-1));

    /* 接收器与发送器使能*/
    UCSR0B = (1<<RXEN0)|(1<<TXEN0);
    /* 设置帧格式: 异步  无校验  8 个数据位, 1 个停止位*/
    UCSR0C = (0<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00);    
}

void USART_Transmit( unsigned char data )
{
    /* W 等待发送缓冲器为空 */
    while ( !( UCSR0A & (1<<UDRE0)) )
    ;
    /* 将数据放入缓冲器,发送数据 */
    UDR0 = data;
}

void USART_Transmit_Str( unsigned char *data )
{
    while(*data)
    {
       USART_Transmit(*data++);
    }
}
        

unsigned char USART_Receive( void )
{
    /* 等待接收数据*/
    while ( !(UCSR0A & (1<<RXC0)) )
    ;
    /* 从缓冲器中获取并返回数据*/
    return UDR0;
}

#pragma pack(4)
typedef struct arphdr
{

    unsigned char  arp_pln;
    unsigned short arp_op;
    unsigned long arp_spa;
	//unsigned char  arp_tha[6];
}ARPHDR;



void (*reset)(void) = 0x0000;


void main()
{
    USART_Init(9600);
    DDRD = 0x30;
    /*
        USART_Transmit(sizeof(unsigned long long));

        USART_Transmit(sizeof(unsigned long));

        USART_Transmit(sizeof(unsigned long int));

        USART_Transmit(sizeof(ARPHDR));
    */
        
       // reset();
    
    while (1)
    {
        //USART_Transmit_Str("abcd");

              
        PORTD_Bit4 = 1;
        PORTD_Bit5 = 1;
        
        USART_Transmit('a');
        
        _NOP_s(1);
        PORTD_Bit4 = 0;
        PORTD_Bit5 = 0;
        
        _NOP_s(1);
        
    }
}


   
    
  




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -