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

📄 lesson1.c

📁 另一个非常好的串口通信程序,希望大家多提出宝贵意见
💻 C
字号:
#include <iom128v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int

#define  mclk   7372800
#pragma interrupt_handler uart_rx:31
uchar rdata,flag=0;
void delay(uint ms)
{
        uint i,j;
	for(i=0;i<ms;i++)
	   {
	   for(j=0;j<562;j++);
       }
}
void init_port();
void init_port()
{
DDRB=DDRB|BIT(7);
	 PORTB=PORTB|BIT(7);
    
}
void uart_init(uint baud)
{
    UCSR1B=0x00; 
   UCSR1A=0x00; 		    //控制寄存器清零
   UCSR1C=(0<<UPM10)|(3<<UCSZ10);   
                                                        //选择UCSRC,异步模式,禁止                        
                                                     //   校验,1位停止位,8位数据位
   baud=mclk/16/baud-1	;   //波特率最大为65K
   UBRR1L=baud; 					     	  
   UBRR1H=baud>>8; 		   //设置波特率
   UCSR1B=(1<<TXEN1)|(1<<RXEN1)|(1<<RXCIE1); 
                                                       //接收、发送使能,接收中断使能
   SREG=BIT(7);	                //全局中断开放
   DDRD|=0X08;	                //配置TX为输出(很重要)

}
void uart_sendB(uchar data)
{
   while(!(UCSR1A&(BIT(UDRE1)))) ;
   UDR1=data;
   while(!(UCSR1A&(BIT(TXC1))));
   UCSR1A|=BIT(TXC1);
}
void uart_rx()
{
    UCSR1B&=~BIT(RXCIE1);
	rdata=UDR1;
	flag=1;
	UCSR1B|=BIT(RXCIE1);
}
void main()
{
	unsigned char j='a';

	unsigned int i=3;

	// 
	// 
	// init_port();
	uart_init(19200);
	 delay(1);
	 uart_sendB(i);
	 delay(1);
	 uart_sendB(j);
	  uart_sendB(i);
	 delay(1);
	 uart_sendB(j);
	 
	  uart_sendB(i);
	 delay(1);
	 uart_sendB(j);
	 
	  uart_sendB(i);
	 delay(1);
	 uart_sendB(j);
	 
	  uart_sendB(i);
	 delay(1);
	 uart_sendB(j);
	 
	  uart_sendB(i);
	 delay(1);
	 uart_sendB(j);
	 
	 
	  uart_sendB(i);
	 delay(1);
	 uart_sendB(j);
	 
	 
	 
	 
}

⌨️ 快捷键说明

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