您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
1ms等于多少us(电导率1ms等于多少us)
定时器,单片机,波形1ms等于多少us(电导率1ms等于多少us)
发布时间:2016-12-08加入收藏来源:互联网点击:3
很多朋友想了解关于1ms等于多少us的一些资料信息,下面是小编整理的与1ms等于多少us相关的内容分享给大家,一起来看看吧。
上节说到决定计数,还是定时,由寄存器TMOD决定 具体请看这里计数器/定时器
如果要定时那么C/T=0,为定时器模式。
回顾上节的主要内容1.TMOD决定计数还是定时以及 M1,M0工作方式的选择;
2.根据设定时间计算出高八位TH1/0,低八位TL1/0;
3.开启总控 EA=1;
4.开启定时器中断
5.启动定时器
这节内容主要用定时器控制I/O口输出一个方波1.假设系统的时钟是12mhz,设计从P1.0引脚实现输出一个周期为2毫秒的方波,即占空比2:1
基本思路是:要在P1.0上产生周期为2MS的方波,定时器颖产生1ms的定时中断,定时时间到则中断服务程序中对P1.0去反。使用定时器T0方式1定时中断。因为 1ms=1000us 在P1.0引脚接示波器。通过Proteus软件中的虚拟数字示波器查看输出波形,判断输出是否正确。如下图
计算T0的初值,有65536-1000=X
X=64536 化为16进制数为0xfc18,那么高八位是 0xfc,低八位是0x18。
参考程序如下
注意P一定要大写 ,否则编译出错#includereg51.h// 头文件#includeintrins.h //没有用到#define uchar unsigned char#define achar signed charsbit P1_0=P1^0;//定义P1void main() //主程序{TMOD=0x01;EA=1;//开启总控ET0=1;//定时中断允许TR0=1; //启动定时器while(1);{TH0=0xfc; //装入高八位TL0=0x18; //装入低八位do{}while(!TF0);P1_0=!P1_0;//去反TF0=0;}}仿真结果
注意:在仿真时,如果发现没有波形,马上右键单击示波器。点击“Digital oscilloscope”就可以了!!!并且调节周期时间旋钮2.做如下设计①要求
已知单片机系统时钟频率为12MHz,请利用T0和P1.0在Proteus中输出矩形脉冲,波形如下:
②仿真图
③参考源代码
#includereg51.h#includeintrins.h#define uchar unsigned char#define achar signed charsbit P1_0=P1^0;uchar i=0,j=3;void main(){TMOD=0x02;P1_0=0;TH0=0xce;TL0=0x206;ET0=1;EA=1;TR0=1;while(1);}void T0_int() interrupt 1{ if(i==0) { j--; if(j==0) { P1_0=!P1_0; i=!i; j=3;}}else{P1_0=!P1_0;i=!i;}}④仿真结果
用一个if else 简单解决问题 大家注意练习哦!
获得更多源代码与教程请关注我!或者私信回复 单片机 获得免费资源获得更多源代码与教程请关注我!或者私信回复 单片机 获得免费资源获得更多源代码与教程请关注我!或者私信回复 单片机 获得免费资源本文到此结束,希望对大家有所帮助呢。
上一篇:intimate是什么意思(intimate是什么意思英语)
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |