硬件連接
1.1 時鐘源
與AT89系列單片機相比,ATMEGA8515單片機具有更多種的時鐘產(chǎn)生方式,通常可選用:
1)外接晶振/陶瓷振蕩器方式
2)外接低頻晶振方式
3)外接RC元件構(gòu)成的振蕩電路
4)標(biāo)定的內(nèi)部RC振蕩電路
5)外接信號源
這些信號源的選擇是在編程通過對CKSEL3、CKSEL2、CKSEL1和CKSEL0這4個位的選擇來確定的。
下表是選擇不同的時鐘源時,應(yīng)寫入的CKSEL3…0的值。
時鐘源選擇
芯片時鐘選項 CKSEL3..0
外部晶體/陶瓷振蕩器 1111-1010
外部低頻晶體 1001
外部RC振蕩器 1000-0101
標(biāo)定的內(nèi)部RC振蕩器 0100-0001
外部時鐘 0000
說明:對于所有的熔絲位, “1” 表示未編程, “0” 代表已編程。
1.2 啟動延時
用于給芯片供電的電源特征各不相同,有一些電源,回路中有大電容,接通電源后其電壓上升速度較慢,當(dāng)電源升高到一定程度時,電路的各部份都開始工作但卻不能穩(wěn)定地工作,如果此時讓芯片進入到工作狀態(tài),往往會導(dǎo)致運算出錯、程序跑飛、片內(nèi)EEPROM數(shù)據(jù)被亂改等后果,致使單片機的工作出現(xiàn)不正常,為解決這一問題,ATMEGA8515芯片在芯片完成復(fù)位后并不立即開始工作,而是延遲一段時間再進入正常工作狀態(tài),這個延時的時間可以由用戶自行設(shè)定,系統(tǒng)中有SU1和SU0位,在編程時對這兩位進行設(shè)定即可獲得不同時長的延時。
芯片在出廠時CKSEL = “0001”, SUT = “10”。默認(rèn)時鐘源為有最長啟動時間的內(nèi)部RC振蕩器。默認(rèn)設(shè)置可以保證用戶使用在線編程或并行編程時都能獲得所期望的時鐘源。
關(guān)于振蕩電路選擇的更詳細(xì)資料,請參考ATMEGA8515的數(shù)據(jù)手冊。
本實驗板在設(shè)計時,用了11.0592M的晶振,這是為了使用51單片機而設(shè)定的。如果你用的芯片是ATMEGA8515,那么完全不用擔(dān)心,因為該芯片的最高頻率可以達(dá)到16M,如果你用的芯片是ATMEGA8515L,理論上,其最高工作頻率為8M,但經(jīng)過實踐,用到11.0592M也同完全沒有問題的,當(dāng)然,這里僅是在實驗板上使用,真正制作產(chǎn)品時不要這么做。
1.3 I/O口的連接
ATMEGA8515具有4個8位的I/O口(PA、PB、PC和PD)和一個附加的3位I/O口(PE),作為通用數(shù)字I/O 使用時,所有AVR I/O 端口都具有真正的“讀- 修改- 寫”功能。這意味著用SBI 或CBI 指令對一些管腳進行諸如改變方向、更改端口電平、禁止/ 使能上拉電阻等操作時,不會影響到其他的管腳。和51單片機不同,ATMEGA8515單片機的輸出緩沖器具有對稱的驅(qū)動能力,可以輸出或吸收大電流,直接驅(qū)動LED。所有的端口引腳都具有與電壓無關(guān)的上拉電阻。作為輸入使用時,若內(nèi)部上拉電阻使能,端口被外部電路拉低時將輸出電流。
每個端口引腳都具有三個寄存器位: DDxn、 PORTxn 和PINxn,這里的X代表A、B、C、D和E中的一個,以下同。DDxn 以來選擇引腳的方向。當(dāng)DDxn 為"1“ 時, Pxn 配置為輸出;否則為輸入。當(dāng)引腳配置為輸入時,若PORTxn 為"1“,上拉電阻將被接入電路中。如果不需要這個上拉電阻起作用,可以將PORTxn 清零,或者將這個引腳配置為輸出。復(fù)位時各引腳為高阻態(tài),即使此時時鐘沒有工作也是如此。
當(dāng)引腳配置為輸出時,若PORTxn 為"1“,引腳輸出高電平("1“),否則輸出低電平(“0“)。在 高阻態(tài)({DDxn, PORTxn} = 0b00)和 輸出高電平({DDxn, PORTxn} = 0b11) 兩種狀態(tài)之間進行切換時,上拉電阻接入電路({DDxn, PORTxn} = 0b01) 或輸出低電平{DDxn,PORTxn} = 0b10) 這兩種模式必然會有一個發(fā)生。通常,上拉電阻被接入電路是完全可以接受的,因為高阻環(huán)境不在意是強高電平輸出還是上拉輸出。如果外圍電路不允許接入上拉電阻,可以通過置位SFIOR 寄存器的PUD 來禁止所有端口的上拉電阻。在上拉輸入和輸出低電平之間切換也有同樣的問題。用戶必須選擇高阻態(tài)({DDxn,PORTxn} = 0b00) 或輸出高電平({DDxn, ORTxn} = 0b10) 作為中間步驟。
DSB-1A板在設(shè)計時,PB口接有8個發(fā)光二極管,同時接有排電阻PZ1作為二極管的限流電阻,如圖1所示,這是51單片機的典型設(shè)計,同樣可用于ATMEGA8515單片機。

圖1
2.程序
/**************************************************
; 平凡單片機工作室
; http://www.mcustudio.com
; Copyright 2003 pingfan's mcustudio
; All rights Reserved
;作者:周堅
;ddss.c
;單燈閃爍程序,用于AT89S8515,ATMEG8515,在DSB-1A型實驗板上實現(xiàn)
;**************************************************/
#include "avr/delay.h"
#include "avr/io.h"
static void io_init(void)
{
PORTA = 0x0;
DDRA = 0x0;
// PortB
PORTB = 0x0;
DDRB = 0x01;
// PortC
PORTC = 0x0;
DDRC = 0x0;
// PortD
PORTD = 0x0;
DDRD = 0x0;
}
void mDelay(uint16_t DelayTim)
{ uint16_t i;
for(;DelayTim>0;DelayTim--)
{ for(i=0;i<40000;i++)
{;}
for(i=0;i<39000;i++)
{;}
}
}
int main(void)
{
io_init();
while(1)
{
mDelay(500);
PORTB&=0xfe;
mDelay(500);
PORTB|=0x01;
}
}





