设计一个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;}}

结果显示:

程序设计原理分析

定时器定时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软件基本操作十一式 新建工程 编译程序 用示波器看波形