原创 AVR(Mega8)的study:1、UART调试

2008-3-8 20:26 2329 6 6 分类: MCU/ 嵌入式

      学了较久的AVR单片机,一直都是只是做,没有写过东西。现在想把自己搞过的东西写下来,希望可以给看到的朋友们有所帮助。


     由于实验板资源有限,很多东西无法用实物实现,多用串口调试来Debug。所以先把UART口的程序发上来,以便后面的试验可以从串口看到相关的信息。


一、UART调试


/******************************************************
UART输出输入函数。
  作者:Joyce
  建立日期:2007-1-30
  修改日期:2008-2-3
  版本:V1.3  版权所有,盗版必究。
  Copyright(C) Joyce 2007-01-30
  All rights reserved
*****************************************************/
#include
#include "uart.h"


unsigned char table[16]="0123456789abcdef";
void main(void)
{
unsigned char i;
Uart_init(); //串口初始化。
Prints("System starting...",1);
for(i=1;i<255;i++)//发送测试,发送1~254到串口。
{
Send_abyte(table[i/16]);
Send_abyte(table[i%16]);
Send_abyte(' ');
if(i%16==0)
{
Send_abyte(10);
Send_abyte(13);
}
}
Send_abyte(10);
Send_abyte(13);
Prints("Data over...",1);
while(1)//串口接收测试。
{
unsigned char i;
i=Receive_abyte();
Send_abyte(table[i/16]);
Send_abyte(table[i%16]);
Send_abyte(' ');
}
}


 


/***********************************************


uart头文件


********************************************/


#ifdef _uart_
#define _uart_


void Uart_init(void);
void Send_abyte(unsigned char abyte);
unsigned char Receive_abyte(void);
void Prints(unsigned char *string,unsigned char enter);


#endif


**********************************************/


uart.c


//**********************************************


#include
#include "uart.h"


void Uart_init(void)  //串口初始化;
{
UCSRB=((1<UBRRL=25;
UBRRH=0;//波特率设置19200。
UCSRC=(1<}


void Send_abyte(unsigned char abyte)//发送字节。
{
while(!(UCSRA&(1<UDR=abyte;
}


unsigned char Receive_abyte(void)
{
while(!(UCSRA&(1<return UDR;
}



void Prints(unsigned char *string,unsigned char enter)//发送字符串。
{
 unsigned char i;
 i=0;
 while(string!=0)    //判断字符串是否结束
  {
   while(!(UCSRA&(1<   UDR="string";
   i++;            //移到下字节
  }
 if(enter)       //如果需要换行
  {
   Send_abyte(10);
   Send_abyte(13);   //发送回车换行
  }
}


测试结果如下图:



工程及调试结果见附件:


点击下载


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条