欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
STC8A單片機(jī)外部晶振這樣啟動
[打印本頁]
作者:
happy33
時間:
2021-5-24 04:27
標(biāo)題:
STC8A單片機(jī)外部晶振這樣啟動
來自網(wǎng)絡(luò)大神的帖子
沒事試了一下STC8A外部晶振這樣啟動
以前用STC15系列,使用外部晶振時在軟件上選一下就可以,如果外部晶振沒有焊,單片機(jī)默認(rèn)是內(nèi)部時鐘運(yùn)行的,現(xiàn)在STC8A單片機(jī)軟件上沒有選項,需要在代碼中啟動外部晶振,官方的例程是死等晶振穩(wěn)定,如果晶振沒有焊,就卡住了,試了一下將死等改成等一段保守時間,如果晶振沒有穩(wěn)定啟動,就默認(rèn)用內(nèi)部時鐘工作。考慮到有些情況用晶振可以更穩(wěn)定,但用內(nèi)部時鐘也能滿足的情況下,這樣啟動,即使晶振損壞也能像STC15一樣正常工作
//這個是拷貝STC-ISP里的范例程序。
//我使用時都是與或操作。
P_SW2 |= 0x80; //bit7=1
//操作代碼略
P_SW2 &= ~0x80; //bit7=0
//而在中斷中,則是:
u8 i;
i = P_SW2;
P_SW2 |= 0x80; //bit7=1
//操作代碼略
P_SW2 &= ~0x80; //bit7=0
P_SW2 = i;
P_SW2 |= 0x80;
XOSCCR = 0xc0; //啟動外部晶振
for(j=0;j<65535;j++) //官方例程是while (!(XOSCCR & 1));
{
if ((XOSCCR & 1)) //判斷時鐘穩(wěn)定位
{
CKDIV = 0x00; //時鐘不分頻
CKSEL = 0x01; //選擇外部晶振
break;
}
}
P_SW2 &= ~0x80;
復(fù)制代碼
//========================================================================
//請參考STC-ISP里的范例程序里的STC8系列的“選擇系統(tǒng)時鐘源”,我拷貝到這里。
#include "reg51.h"
#include "intrins.h"
#define CKSEL (*(unsigned char volatile xdata *)0xfe00)
#define CKDIV (*(unsigned char volatile xdata *)0xfe01)
#define IRC24MCR (*(unsigned char volatile xdata *)0xfe02)
#define XOSCCR (*(unsigned char volatile xdata *)0xfe03)
#define IRC32KCR (*(unsigned char volatile xdata *)0xfe04)
sfr P_SW2 = 0xba;
void main()
{
P_SW2 = 0x80;
CKSEL = 0x00; //選擇內(nèi)部IRC ( 默認(rèn) )
P_SW2 = 0x00;
/*
P_SW2 = 0x80;
XOSCCR = 0xc0; //啟動外部晶振 B7 ENXOSC B6 XITYPE
while (!(XOSCCR & 1)); //等待時鐘穩(wěn)定
CKDIV = 0x00; //時鐘不分頻
CKSEL = 0x01; //選擇外部晶振
P_SW2 = 0x00;
*/
/*
P_SW2 = 0x80;
IRC32KCR = 0x80; //啟動內(nèi)部32K IRC
while (!(IRC32KCR & 1)); //等待時鐘穩(wěn)定
CKDIV = 0x00; //時鐘不分頻
CKSEL = 0x03; //選擇內(nèi)部32K
P_SW2 = 0x00;
*/
while (1);
}
復(fù)制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1