音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請各位幫忙!使用46R23時遇到很頭痛的問題.

作者:roach_lzq 欄目:嵌入式系統(tǒng)
請各位幫忙!使用46R23時遇到很頭痛的問題.
用46r23做了一個3位顯示的LED(個位,十位,百位),上電時顯示馬上顯示888。仿真時正常,但燒芯片后遇到兩種情況:
1. 上電后,沒有全部LED不亮,等1至4秒后LED全亮,顯示888。
2. 上電后,只有十位顯示8,個位,百位不顯示。等待1秒或不到1秒LED才全亮,顯示888.

程序如下,采用動態(tài)顯示。
/*初始化*/
void LEDInit(void)
{
cDispfresh2ms = 0;
cDispSeq = 0;
}

/*主顯示程序*/
void LEDWrite(void)
{
if(cDispfresh2ms!=0) return;

cDispfresh2ms = T2_2MS; /*定時2MS*/

if(++cDispSeq>2) cDispSeq = 0;

SWITCH(cDispSeq)
{
case 0:
Write0(); /*點亮個位*/
break;

case 1:
Write1(); /*點亮十位*/
break;

case 2:
Write2(); /*點亮百位*/
break;

}
}


/*定時初始化*/
#define TMRC_INIT 0x95
/* 0B10010101
|||||+++---->F_INT = F_SYS/32
||||+------->TMR active edge of the Timer/Event Counter = 0:active on low to high
|||+-------->enable timer counting
||+--------->Unused bits,read as "0"
++---------->Timer mode(internal clock)
*/
#define TMR_2MS 256-250

void TimerInit(void)
{
_tmrc = TMRC_INIT;
_tmrl = TMR_2MS;
_nop();
_nop();
_tmrh = 0xFF;
}

#pragma vector BaseTimerInt @ 0x08

/*定時中斷程序*/
void BaseTimerInt(void)
{
if(cDispfresh2ms != 0) cDispfresh2ms --;
_eti = 1;
}

對于第1點,可能是剛上電時電源不穩(wěn)定,導致程序跑死。由于幾秒后watchdog溢出,使顯示正!,F(xiàn)將watchdog選用16ms 溢出,第1點情況得到解決。但開機時還是只有十位顯示8,個位,十位沒有顯示。等待1秒左右才能全部顯示888,即第2點情況未解決。
對于第2點,懷疑是定時器未能正常工作,導致變量cDispfresh2ms 一直不為0,以至不能寫個位,百位。請問有這種可能嗎?怎么解決?特別注明,仿真時沒有出現(xiàn)第1,2點問題。即開機便顯示888.這問題搞了幾天了,還搞不定,請幫幫忙!謝謝!


參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
請問ATMEGA8L-8PI,可以用什么燒錄器編譯?
再次強烈建議21ic取消highend的版主資格
學習嵌入式操作系統(tǒng)需要什么基礎?
用keil可以作uc/oc-ii操作系統(tǒng)嗎?
到底應該在什么情況下選擇嵌入式操作系統(tǒng)和無操作系統(tǒng)的開發(fā)?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號