📄 -ͦ
字号:
#include <iom16.h>
#include<intrinsics.h>
#include "lcd1602_8bit.c"
#define uchar unsigned char
#define uint unsigned int
#define UDRE 5
#define RXC 7
#define xtal 8
uchar __flash str1[]=" AVR RS232 TEST ";
uchar __flash str2[]="RECEVING :";
uchar ReceverFlag;
uchar ReceverCnt;
uchar s,p;
uchar temp;
uchar dat[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
/*************************************************/
void Delay_1000ms(void)
{
uint i=0;
while(i<1000)
{Delay_1ms();
i++;
if(ReceverFlag==1)goto end;
}
end:;
}
/*************************************************/
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0x00;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0x02;
}
/**************************************************/
void uart0_init(void)
{
UCSRB = 0x00;
UCSRA = 0x82;
UCSRC = 0x06;
UBRRL = 0x67;
UBRRH = 0x00;
UCSRB = 0x98;
}
/********************************************************/
void init_devices(void)
{
port_init();
uart0_init();
}
//**********************************************
void uart0_send(unsigned char i)
{
while(!(UCSRA&(1<<UDRE)));
UDR=i;
}
/*******************************************/
void str_send(char *s)
{
while(*s)
{
uart0_send(*s);
s++;
}
}
/********************************************/
void main(void)
{
init_devices();
Delay_nms(400);
InitLcd();
ePutstr(0,0,str1);
SREG=0x80;
while(1)
{
if(ReceverFlag==1)
{
SREG=0x00;
uart0_send(temp);
dat[p]=temp;
p++;
ReceverFlag=0;
if(ReceverCnt==10)
{
ReceverCnt=0;
ePutstr(0,1,str2);
}
SREG=0x80;
//**********************
}
if(ReceverCnt==0)
{
if(++s>9)s=0;
DisplayOneChar(12,1,(dat[s]/100)+0x30);
DisplayOneChar(13,1,(dat[s]/10)%10+0x30);
DisplayOneChar(14,1,(dat[s]%10)+0x30);
Delay_1000ms();
}
}
}
/****************************************/
#pragma vector=USART_RXC_vect
__interrupt void uart0_rx_isr(void)
{
temp=UDR;
ReceverCnt++;
ReceverFlag=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -