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

📄 avr16spi.c

📁 AVR例子程序和protues仿真
💻 C
字号:
/***********************************************
****      AVR  SPI接口使用范例   	             ***
****  	                                     ***
**** 作者:  HJJourAVR                        ***
**** 编译器:WINAVR20050214                   ***
****                                         ***
****  	www.OurAVR.com	 2005.9.26           ***
***********************************************/
/*
本程序简单的示范了如何使用AVR ATMEGA16的SPI接口来访问DS1302 RTC实时时钟芯片
	串行外设接口-SPI
	DS1302的读写控制
	USART跟PC连接,实现显示和控制

*/

#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
//时钟定为外部晶振 7.3728MHz,F_CPU=7372800
#include "main.h"

unsigned char DS1302_EXIST;
unsigned char INITDATE[8]={0x50,	//59秒
						   0x59,	//59分
						   0x23,	//23时  24小时制
						   0x06,	//06日
						   0x10,	//10月
						   0x04,	//星期四
						   0x05,	//2005年
						   0x80		//写保护
						  };

unsigned char CURDATE[7];
unsigned char sCURDATE[]="20xx年xx月xx日xx时xx分xx秒 星期xx";
unsigned char sWEEK[]="错一二三四五六日";
//注意 汉字要占用2个字节的空间

int main(void)
{
    //上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻
    PORTA=0xFF;							//不用的管脚使能内部上拉电阻。
    PORTC=0xFF;
    PORTD=0xFF;
	DDRD=(1<<1);					//串口的输出
    PORTB=~((1<<DS1302_CE)|(1<<DS1302_MOSI)|(1<<DS1302_MISO)|(1<<DS1302_SCK));
    									//DS1302带内部下拉电阻
    DDRB =(1<<DS1302_CE)|(1<<DS1302_SCK)|(1<<DS1302_MOSI);
    									//设定SPI接口
    init_USART();
    init_SPI();
    put_s("这是个简单的SPI接口访问DS1302实时时钟(RTC)的程序");
    DS1302_EXIST=check_RTC();			//检测DS1302的存在
    if(DS1302_EXIST)
    {
    	put_s("按下[I]键可以初始化RTC时间,默认为2005年10月06日23时59分50秒 星期四");
    	put_s("按下[R]键可以读取当前时间");
    	put_s("用户可以自行开发其他功能");
    	put_s("     www.ouravr.com");
	}
	else
		put_s("RTC找不到!");
    sei();								//使能全局中断
    while(1);
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -