学了较久的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); //发送回车换行
}
}
测试结果如下图:
工程及调试结果见附件:
文章评论(0条评论)
登录后参与讨论