定时器计数器T1典例

1、设系统时钟频率为12MHZ,利用C语言编程实现从单片机P1.5引脚输出周期为2S的方波。(利用定时器T1,方式0,方式1,方式2.分别编写三个程序实现),输出的方波在Proteus利用示波器观看)交作业的时候交Proteus工程文件还有源程序,截图在作业本上,程序也写在作业本上)
答:方式0:#include<reg51.h>
sbit P1_5=P1^5;
int i;
void main(){
TMOD=0x00;TH1=0xE0;TL1=0x18;
EA=1;ET1=1;
i=0;
TR1=1;
while(1);}
void time0_int(void) interrupt 3{ TH1=0xE0;TL1=0x18;
i++;
if(i1000){P1_5=!P1_5;}}
方式1:#include <reg51.h> //包含特殊功能寄存器库
sbit P1_5=P1^5;
int a=0;
void main(){
TMOD=0x10; //定时器1,方式1TH1=0x3C;TL1=0xB0; //定时50ms,0x3cb0 == 15536
EA=1; //开总中断ET1=1;
//开定时器0中断
TR1=1; //开定时器0while(1);}void time0_int(void) interrupt 3 //中断服务程序{TH1=0x3C;TL1=0xB0;a++;if(a
20) //定时到1s{ P1_5=!P1_5;}}
方式2:#include <reg51.h> //包含特殊功能寄存器库
sbit P1_5=P1^5;
int a=0;
void main(){TMOD=0x20; //定时器1,方式2TH1=0x06;TL1=0x06; //定时250us
EA=1; //开总中断
ET1=1; //开定时器1中断
TR1=1; //开定时器1
while(1);}
void time0_int(void) interrupt 3 //中断服务程序{
TH1=0x06;TL1=0x06;a++;if(a==4000) //定时到1s{ a=0; P1_5=!P1_5;}}
周期为2s方波用Protues中示波器观察在这里插入图片描述

发布了2 篇原创文章 · 获赞 1 · 访问量 18

猜你喜欢

转载自blog.csdn.net/m0_46911306/article/details/105485552