1、1、定时器应用实验单片机的P1口上接有8只LED。采用定时器T0的方式1的定时中断方式,使P1口外接的8只LED每0.5s闪亮一次。#includeChar i=100;/*给变量i赋初值*/void main( )TMOD=0x01;/*设置定时器T0为方式1*/TH0=0xee;/*向TH0写入初值的高8位*/TL0=0x00;/*向TL0写入初值的低8位*/P1=0x00; /*P1口8只LED点亮*/EA=1; /*总中断允许*/ET0=1; /*定时器T0中断允许*/ TR0=1; /*启动定时器T0*/while(1) ; /*无穷循环,等待定时中断*/*以下为定时器T0的中断服务
2、程序*/void T0_int(void) interrupt 1 TH0=0xee;/*给T0装入16位初值,计4608个数后,T0溢出*/TL0=0x00; i-; /*循环次数减1*/if(i=0)P1=P1; /*P1口按位取反*/i=100;/*重新设置循环次数*/2、计数器应用实验 采用定时器T1的方式1的中断计数方式。计数输入引脚T1(P3.5)上外接开关K1,作为计数信号输入。按4次K1后,P1口的8只LED闪烁不停。#include void Delay(unsigned int i)/* 定义延时函数Delay( ),i是形式参数,不能赋初值*/unsigned int j
3、;for(;i0;i-) /* 变量i由实际参数传入一个值,因此i不能赋初值*/for(j=0;j125;j+);/*空函数*/void main( )/*主函数*/TMOD=0x50;/*设置定时器T1为方式1计数*/TH1=0xff;/*向TH1写入初值的高8位*/TL1=0xfc;/*向TL1写入初值低8位*/EA=1; /*总中断允许*/ET1=1; /*T1中断允许*/ TR1=1; /*启动T1*/while(1) ; /*无穷循环,等待定时中断*/*以下为定时器T1的中断服务程序*/void T1_int(void) interrupt 3 for(;) /*无限循环*/P1=0xff;/*8位LED全灭*/Delay(500) ;/*延时500ms*/P1=0;/*8位LED全亮*/Delay(500); /*延时500ms */