微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC 定时器0中断

PIC 定时器0中断

时间:11-21 来源:互联网 点击:
#include //调用头文件,可以去PICC18软件下去查找PIC18FXX2.H

__CONFIG(1,XT) ; //晶振为外部4M

__CONFIG(2,WDTDIS) ; //看门狗关闭

__CONFIG(4,LVPDIS) ; //禁止低电压编程

#define uint unsigned int

#define uchar unsigned char

uint count=0;

void timer0init(void)

{

T0CS=0; //TMR0工作于定时器方式

PSA=1; //TMR0不分频

TMR0IF=0; //TMR0IF是中断标志,定时一段时间就会输出1

TMR0IE=1; //允许TMR0中断

T0CON=0x88; //16bit定时方式

TMR0=0xff13;//晶振4M,定时250us(就是先在TMR0L和TMR0H中存入一定的数,使

计时时间为计数器中剩余的空间次数*执行每次的时间)

GIE=1; //

}

void interrupt ISR(void)

{

if(TMR0IF==1) //达到了250us

{

TMR0=0xff13; //重新装入初值

TMR0IF=0; //中断标志位清零,方便下一次中断产生时

判断

count++;

if(count==4000)

{

count=0;

}

}

}

void delayms(uint x)

{

uint i,j;

for(i=0;i<=110;i++)

for(j=0;j<=x;j++);

}

void main(void)

{

ADCON1=0X06; //所有IO均为数字口,模拟量输入禁止

TRISD=0B11111110;

timer0init();

while(1)

{

if(count==0)

{

RD0=1;

delayms(400);

}

else RD0=0;

}

}

这个效果比较单一,只能显示一闪一闪;但定时器中断却能够用在数码管动态扫描中,如果不用定时器中断,只用delayms()延时函数来让数码管闪是不可能实现的。必须用定时器中断。

上一篇:PIC_A/D converte
下一篇:C51_LCD1602显示

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top