C51程序设计:使用定时器产生周期为2s的方波,定时器周期为1s

设计一个C51程序,使用定时器定时1s,输出周期为2s的方波。

*代码*
#include <reg51.h>
sbit P0_0 = P0^0;
char i = 0;
void main()
{
	TMOD = 0x01;	//定时器T0方式1
	TH0 = 0xdc;
	TL0 = 0x00;		//定时器初值dc00:56320 产生10ms中断
	P0_0 = 0;
	EA = 1; 	//总中断打开
	ET0 = 1;	//允许T0中断
	TR0 = 1;	//启动定时器T0
	while(1);
}

void timer0() interrupt 1
{	
	TH0 = 0xdc;
	TL0 = 0x00;	//重赋初值
	i++;
	if(i == 100)	//一秒
	{
		i = 0;
		P0_0 = ~P0_0;
	}
}

结果显示:

程序设计原理分析

定时器定时1s,输出周期为2s的方波,即产生1s的中断,每过1s方波翻转一次,周期是2s.
首先设置TMOD寄存器,GATE0 = 0使T0仅由TR0控制,C/ = 0,定时器模式,M0、M1 = 01方式1,TMOD = 0x01;
此实验中晶振振荡频率11.0592MHz,定时10ms,每100次P0取反,时隔1s

公式:定时时间 = (216 – X) *12 / 11.0592

10*103 = (65536 – X) *12/11.0592
X = 56320 16进制:0xdc00

用示波器看P0^0的方波

一、在Keil下搭建工程并完成C文件的编写

二、选中Create HEX File

三、编译F7

四、Debug Ctrl F5

五、选中Logic Analyzer

六、点设置:Setup

七、添加P0.0端口(程序中用的P0^0故在此用的P0)

八、调显示类型重新打开Setup 将Display Type改为bit 颜色自己设定

九、也是最后一步,F5执行也可以点

效果展示:


最后调试部分 参照了这篇文章
Keil C51软件基本操作十一式 新建工程 编译程序 用示波器看波形

物联沃分享整理
物联沃-IOTWORD物联网 » C51程序设计:使用定时器产生周期为2s的方波,定时器周期为1s

发表回复