您的位置:首页 > 其它

使用定时器T1的模式2 定时器T0的模式2 并且引入外部事件计数器

2012-12-20 23:16 351 查看
#include <AT89X52.H>

#define uint unsigned int

#define uchar unsigned char

uint i,j;

sbit P34=P3^4;

sbit P35=P3^5;

void delay1ms(uint q){

unsigned char w;

while(q--){

for(w=0;w<115;w++)
//1ms基准延时程序

{

;

}

}

}

main(){

i=0;

j=0;

EA=1; //中断总开关开

ET0=1;//定时器T0中断允许

ET1=1;//定时器T1中断允许

TR0=1;// 启动定时器T0

TR1=1;// 启动定时器T1

TMOD=0x66;//使用定时器T1的模式2 定时器T0的模式2 并且引入外部事件计数器

//对T1和T0的引脚负脉冲进行计数

TH0=TL0=256-1; //计数器T0高8位赋初值 255 只需要一个数就产生中断

TH1=TL1=256-1; //计数器T0高8位赋初值 255 只需要一个数就产生中断

P0=0x00;
//打开所有P0口的LED灯

P1=0xff;
//关闭所有P1口的LED灯

while(1); //无限循环,

}

/**************************************************************

函数功能:定时器T0中断服务程序

**************************************************************/

void int1(void) interrupt 1 //“interrupt”声明函数为中断服务函数

{

if(P34==0){//键盘消抖

delay1ms(20);

if(P34==0){//键盘消抖

i=i+1;

if(i==10){
//

i=0;

}

P0=~P0;
//P0口的LED灯取反

}

}

}

/**************************************************************

函数功能:定时器T1中断服务程序

**************************************************************/

void int2(void) interrupt 3 //“interrupt”声明函数为中断服务函数

{

if(P35==0){//键盘消抖

delay1ms(20);

if(P35==0){//键盘消抖

j=j+1;

if(j==10){ //

j=0;

}

P1=~P1;
//P1口的LED灯取反

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐