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


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

*代码*#include sbit P0_0 = P0^0;char i = 0;void main(){TMOD = 0x01;//定时器T0方式1TH0 = 0xdc;TL0 = 0x00;//定时器初值dc00:56320 产生10ms中断P0_0 = 0;EA = 1; //总中断打开ET0 = 1;//允许T0中断TR0 = 1;//启动定时器T0while(1);}void timer0() interrupt 1{TH0 = 0xdc;TL0 = 0x00;//重赋初值i++;if(i == 100)//一秒{i = 0;P0_0 = ~P0_0;}}

结果显示:

图片[1] - 设计一个C51程序,使用定时器定时1s,输出周期为2s的方波 - MaxSSL

程序设计原理分析

定时器定时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

图片[2] - 设计一个C51程序,使用定时器定时1s,输出周期为2s的方波 - MaxSSL

三、编译F7

四、Debug Ctrl F5

五、选中Logic Analyzer

图片[3] - 设计一个C51程序,使用定时器定时1s,输出周期为2s的方波 - MaxSSL

六、点设置:Setup

图片[4] - 设计一个C51程序,使用定时器定时1s,输出周期为2s的方波 - MaxSSL

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

图片[5] - 设计一个C51程序,使用定时器定时1s,输出周期为2s的方波 - MaxSSL

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

图片[6] - 设计一个C51程序,使用定时器定时1s,输出周期为2s的方波 - MaxSSL

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

图片[7] - 设计一个C51程序,使用定时器定时1s,输出周期为2s的方波 - MaxSSL

效果展示:

图片[8] - 设计一个C51程序,使用定时器定时1s,输出周期为2s的方波 - MaxSSL
最后调试部分 参照了这篇文章
Keil C51软件基本操作十一式 新建工程 编译程序 用示波器看波形

© 版权声明
THE END
喜欢就支持一下吧
点赞0分享