/FCKSM = 00;时钟切换使能 FOS = 11主振荡器XT晶振模式外部4MHz
_FWDT(0X0000);//关狗
_FBORPOR(0X3A2);//MCLREN禁止 欠压2.7V 上电延时16MS
_FGS(0X03);
*/
void Delay_1ms(unsigned int t)//t = 1000大概1s
{
unsigned int i,j;
for(i = 0;i < t;i ++)
for(j = 0;j < 100;j ++);
}
#define SCLK PORTBbits.RB1
unsigned int Time;
void Timer1_Init(void)//定时器初始化
{
T1CONbits.TON = 0;//定时器关闭
T1CON = 0x0000;//空闲工作 预分频1:4 不用外部时钟 FOSC/4
T1CONbits.TSYNC = 1;//外部时钟
IEC0bits.T1IE = 1;//允许Timer1中断请求
INTCON1 |= 0X8000;//不要中断嵌套
IPC0bits.T1IP = 0x07;//中断优先级7
T1CONbits.TON = 1;//定时器使能
}
int main()
{
TRISB = 0x00;//RB口设置为输出
Timer1_Init();
while(1)
{
//PORTB = 0x02; //高电平输出
// PORTBbits.RB1=1;
// SCLK = 1;
Delay_1ms(1000);
//PORTB = 0x00;//低电平输出
//PORTBbits.RB1=0;
// SCLK = 0;
Delay_1ms(1000);
}
}
void __attribute__((__interrupt__, auto_psv)) _T1Interrupt(void)//定时器1中断
{
IFS0bits.T1IF = 0;//清中断
//定时器中断处理函数
T1CONbits.TON = 0;//定时器使能
TMR1 = -62500;
T1CONbits.TON = 1;//定时器使能
Time ++;
if(Time == 16)
{
Time = 0;
//T ++;
// SCLK = 0;
}
SCLK = (Time & 0x08) ? 1 : 0;
}
|