社区
单片机/工控
帖子详情
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。
LOVEMENYU520
2011-01-02 04:17:42
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。 大家帮个忙。谢谢、
...全文
11135
18
打赏
收藏
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。 大家帮个忙。谢谢、
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Anjal2010
2011-03-11
打赏
举报
回复
可以用多个短的定时周期累加!你可以把100ms分为两个50ms来定时!
Barry-当下
2011-03-07
打赏
举报
回复
注意是周期!!!
okliujieko
2011-03-06
打赏
举报
回复
楼主若要周期为100ms的方波信号,定时50ms取反即可:
50ms / (1秒 / (12MHz / 12分频)) == 5 0000<65535
若要定时100ms,楼上说的是真理。
不知楼主是否误解了。
100ms定时取反是产生200ms周期方波。
lbing7
2011-01-26
打赏
举报
回复
定时是定在100ms。这个倒底能不能做到。
那就算一下。定时100ms需要多少个时钟周期。
100ms / (1秒 / (12MHz / 12分频)) == 10 0000(这个明显超出了65535这个16位定时器的长度)
如果不多次累积,咱的小51是做不到的。
pang123hui
2011-01-25
打赏
举报
回复
main()
{
IE = 0x88;
TMOD = 0x10;
TR1 = 1;
while (1) ;
}
void timer0() interrupt 1
{
// 定时50ms,要知道51单片机最长只能定时65.536ms
TL1 = (65536-50000)%256; // 得到定时器寄存器低位
TH1 = (65536-50000)/256; // 得到定时器寄存器高位
count++;
if(count == 2) //两次即100ms
{
count = 0;
P 10 = !P10;
}
}
pang123hui
2011-01-25
打赏
举报
回复
你这个题目无解的,先不说100ms定时,产生100ms方波,不现实
还有,51单片机貌似一般的最小系统12Mhz的晶振最多出65.536ms的延时
jnwsh
2011-01-12
打赏
举报
回复
100ms定时器能产生200ms方波这个不假?产生100ms方波表示怀疑。
doushi87
2011-01-12
打赏
举报
回复
51单片机是12分频的,12M的晶振则说明一个机器周期是12/12,即1us。所以定时从65536-50000到65536总共花了50000个机器周期,即50000us = 50ms。这样应该明白了吧!
doushi87
2011-01-12
打赏
举报
回复
void timer0() interrupt 1
{
// 定时50ms,要知道51单片机最长只能定时65.536ms
TL1 = (65536-50000)%256; // 得到定时器寄存器低位
TH1 = (65536-50000)/256; // 得到定时器寄存器高位
count++;
if(count == 2) //两次即100ms
{
count = 0;
P10 = !P10;
}
}
我觉得这样写中断函数更加容易理解!
mycrazycracy
2011-01-06
打赏
举报
回复
用的是51?那不是很简单,看书上都有写啊。
至于为什么要设那个计数初值,有两种办法:一个是上网下一个单片机小精灵,直接给程序,想都不用想。另一个是通过晶振自己算
tengchao998
2011-01-06
打赏
举报
回复
用带有比较匹配功能的单片机吧,如:c8051f310,配置好就行了,连中断都不用进
Great_Bug
2011-01-03
打赏
举报
回复
假定是标准的80C51,12MHz的时钟,一个周期是1uS,50毫秒要50000个周期。至于右移8位,是因为要把高8位送给寄存器
上面程序是用T0,如果用T1,可以像这样
sbit P1_0 = P1^0;
main()
{
IE = 0x88;
TMOD = 0x10;
TR1 = 1;
while (1) ;
}
void t1_isr() interrupt 3
{
P1_0 = !P1_0;
TR1 = 0; /* 改常数的时候其实应当把它停下来。。。于是就不会很准 */
TL1 = 65536-50000;
TH1 = (65536-50000) >> 8;
TR1 = 1;
}
LOVEMENYU520
2011-01-03
打赏
举报
回复
还不是很明白。。请指点
czk111111
2011-01-03
打赏
举报
回复
先算出时间周期
65536减去要定的时间就是定时器应该设定的时间
LOVEMENYU520
2011-01-03
打赏
举报
回复
P1_0 = !P1_0;
TL0 = 65536-50000;
TH0 = (65536-50000) >> 8;
这里的50000是怎么计算出来了呢?
还有为什么要 >> 8;
谢谢
LOVEMENYU520
2011-01-03
打赏
举报
回复
你QQ多少
zhm39913884
2011-01-03
打赏
举报
回复
交流交流,学习学习!
加我为好友吧!
Great_Bug
2011-01-02
打赏
举报
回复
sbit P1_0 = P1^0;
main()
{
IE = 0x82;
TMOD = 1;
TR0 = 1;
while (1) ;
}
void t0_isr() interrupt 1
{
P1_0 = !P1_0;
TL0 = 65536-50000;
TH0 = (65536-50000) >> 8;
}
51
单片机
(二十)——
定时
器
产生
方波
信号
本文介绍如何通过
定时
器0在两种不同
频率
下生成
方波
信号
,详细展示了实验1生成10kHz
方波
和实验2生成100Hz
方波
的代码实现及原理。
51
单片机
开发入门(5)-
定时
器/
计数器
本文详细介绍了8051
单片机
中的
定时
/
计数器
T0和
T1
的工作原理,包括它们的结构、模式设置、功能以及在不同工作方式下的应用。通过TMOD和TCON寄存器配置
定时
/
计数器
的工作模式,并展示了如何计算
定时
时间和计数值。此外,还给出了多个实例,如数值显示、
方波
输出以及航标灯控制等应用场景,演示了如何利用
定时
/
计数器
实现不同
定时
和计数功能。
51
单片机
定时
器/
计数器
本文详细介绍了89C51
单片机
的
定时
器T0和
T1
的基本概念、内部结构及相关寄存器的功能。通过实例演示了如何设置
定时
器的工作方式及计算初值,并给出了两种不同模式下
产生
1kHz
方波
的具体实现。
单片机
c语言1ms 2ms 4ms
方波
,
定时
器使用:利用
单片机
内部
定时
器0通过
P1
.0端口输出一定
周期
的
方波
信号
。 - 试题答案网问答...
本文探讨了
单片机
中
定时
器T0和
T1
的不同工作模式及其配置,涉及
晶振
频率
、
定时
周期
计算以及在
P1
口输出
方波
的应用。通过设置工作方式寄存器TMOD和初值计算,实现不同
频率
的
定时
任务,如200s、100us、1ms等。同时,提到了8253
定时
器的初始化和中断服务程序的编写,以及不同工作方式下的计数和
定时
功能。
单片机
接口与技术 实验05
定时
器/
计数器
文章介绍了使用51
单片机
进行实验,包括利用
定时
器/
计数器
产生
方波
、实现PWM电机调速,并探讨了查询和中断两种方式的应用,以及如何通过按键控制电机转速和停止。
单片机/工控
27,522
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章