📄 lesson1.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 + -