设计一个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执行也可以点
文章来源:https://www.toymoban.com/news/detail-479089.html
效果展示:
最后调试部分 参照了这篇文章
Keil C51软件基本操作十一式 新建工程 编译程序 用示波器看波形文章来源地址https://www.toymoban.com/news/detail-479089.html
到了这里,关于设计一个C51程序,使用定时器定时1s,输出周期为2s的方波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!