?? avr16spi.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 + -