您的位置 首页 应用

51单片机C言语程序(二)守时/计数器 中止

程序一利用定时计数器T0从P10输出周期为1s的方波,让发光二极管以1HZ闪烁,includereg52h>52单片机头文件includeintrinsh>

程序一

使用守时/计数器T0从P1.0输出周期为1s的方波,
让发光二极管以1HZ闪耀,
#include //52单片机头文件
#include //包括有左右循环移位子函数的库
#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个灯顺次亮一遍为一个周期),循环。
#include //52单片机头文件
#include //包括有左右循环移位子函数的库
#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)的方波

#include //52单片机头文件
#include //包括有左右循环移位子函数的库
#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);//等候中止发生

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/259396.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部