51单片机C语言中断程序定时计数器.docVIP

  • 7
  • 0
  • 约3.34千字
  • 约 11页
  • 2016-09-19 发布于重庆
  • 举报
51单片机C语言中断程序定时计数器

51单片机C语言中断程序 定时/计数器? 程序一 利用定时/计数器T0从P1.0输出周期为1s 的方波, 让发光二极管以1HZ闪烁, #includereg52.h? //52单片机头文件 #include intrins.h //包含有左右循环移位子函数的库 #define uint unsigned int??? //宏定义 #define uchar unsigned char? //宏定义 sbit P1_0=P1^0; uchar tt; void main()????? //主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while(1);//等待中断产生 } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; if(tt==20) { ?tt=0; ?P1_0=~P1_0; } } ? 程序二 利用定时/计数器T1产生定时时钟, 由P1口控制8个发光二极管, 使8个指示灯依次一个一个闪动, 闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。 #includereg52.h? //52单片机头文件 #include intrins.h //包含有左右循环移位子函数的库 #define uint unsigned int??? //宏定义 #define uchar unsigned char? //宏定义 sbit P1_0=P1^0; uchar tt,a; void main()????? //主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 a=0xfe; while(1);//等待中断产生 } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; if(tt==2) { ?tt=0; ?P1=a; ?a=_crol_(a,1); } } ? 程序三 ?同时用两个定时器控制蜂鸣器发声, 定时器0控制频率,定时器1控制同个 频率持续的时间,间隔2s依次输出 1,10,50,100,200,400,800, 1k(hz)的方波 #includereg52.h? //52单片机头文件 #include intrins.h //包含有左右循环移位子函数的库 #define uint unsigned int??? //宏定义 #define uchar unsigned char? //宏定义 sbit beep=P2^3; uchar tt; uint fre,flag; void main()????? //主函数 { fre=50000; beep=0; TMOD=0x11;//设置定时器0,定时器1为工作方式1 TH0=(65536-fre)/256; TL0=(65536-fre)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 ET1=1; TR1=1; TR0=1;//启动定时器0 while(1);//等待中断产生 } void timer0() interrupt 1?? //定时器0中断 { TR0=0;??? //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失 TH0=(65536-fre)/256; TL0=(65536-fre)%256; tt++; if(flag40)??? //以下几个if分别用来选取不同的频率 ?if(tt==10) ??{ ???tt=0; ???fre=50000; ???beep=~beep; ??} if(flag=40flag80) ?{ ??tt=0; ??fre=50000; ??beep=~beep;? ?} if(flag=80flag120) ?{ ??tt=0; ??fre=10000; ??beep=~beep;? ?} if(flag=120flag160) ?{ ??tt=0; ??fre=5000; ??beep=~beep;? ?} if(flag=160flag200) ?{ ??tt=0; ??fre=25

文档评论(0)

1亿VIP精品文档

相关文档