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

📄 -ͦ

📁 手把手教你学AVR单片机C程序设计实验程序
💻
字号:
#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 + -