單片機
基于pic16f877A單片機,用MPLAB編寫。編寫的子程序(延時程序或者空語句),不管主程序有沒有調(diào)用,都會出現(xiàn)程序跑飛的現(xiàn)象(端口呈高阻抗?fàn)顟B(tài)),軟件仿真不斷報錯(PIC16?。茫希遥拧。校茫剑埃埃埃埃牛螅簦幔悖搿。酰睿洌澹颍妫欤铮鳌。澹澹悖酰簦椋睿纭。遥牛裕疲桑拧。椋睿螅簦颍酰悖椋铮睿瑢嶋H搭建的硬件電路板也不工作。而將子程序屏蔽掉后,中斷工作正常(B端口閃爍)。同樣若將中斷屏蔽掉,也正常。1,如果說是因為現(xiàn)場保護沒做好的問題,但在沒有調(diào)用的情況下,程序也不應(yīng)該跑飛才對,2,或者說還是編譯器本身出現(xiàn)了未知問題需要重裝軟件?
貼出簡化后源程序如下
#include
#define uchar unsigned char
#define uint unsigned int
#define LED0 RB0
#define LED1 RB1
#define LED2 RB2
#define LED3 RB3
#define LED4 RB4
#define LED5 RB5
#define LED6 RB6
__CONFIG(XT&WDTDIS&LVPDIS);
/*************函數(shù)聲明**************************/
void INITIAL(void);
void interrupt aiie(void);
/*
void INITIAL()
{
;
}
*/
void main()
{
TRISB=0x00; //RB設(shè)置為輸出
TRISD=0x00; //RD設(shè)置為輸出
PORTD=0xff; //初始化為高
TMR1L=0;
TMR1H=0;
PORTB=0xff; //初始化為高
OPTION=0B10000101;//TIMERO 對內(nèi)部時鐘計數(shù),預(yù)分頻64
INTCON=0B10100000;//運行TMR0溢出中斷
while(1);
}
void interrupt aiie(void)
{
T0IF=0;TMR0=0;PORTB=~PORTB;
}