社区
单片机/工控
帖子详情
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。
LOVEMENYU520
2011-01-02 04:17:42
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。 大家帮个忙。谢谢、
...全文
10850
18
打赏
收藏
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。 大家帮个忙。谢谢、
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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;
}
单片机
输出
方波
晶振
为
12
M
根据给定文件的信息,本文将详细探讨如何在AT89S52
单片机
上实现特定
频率
的
方波
输出,并通过按键控制的方式选择不同的输出
频率
。该任务涉及到的知识点包括但不限于
单片机
基本原理、
定时
器的应用、中断处理以及简单的...
MCS-51
单片机
定时
器/
计数器
常见习题解答
6.
方波
信号
的生成:可以使用方式0设计两个不同
频率
的
方波
,
P1
.0输出
频率
为200Hz,
P1
.1输出
频率
为100Hz。 7.
定时
器的实际用途:
定时
器T0可以用于
定时
1s,每隔1s
计数器
0溢出一次。 8.PWM
信号
的输出:可以使用方式2...
单片机
(AT89C51)
定时
/
计数器
实验案例
给定的
单片机
时钟
频率
fosc为
12
MHz
,我们需要设置
定时
器以在每个
周期
结束后
产生
中断或查询条件。对于2ms的
周期
,计算初值的方法是:T初值 = (2^16 - 1ms/1us),但在这里我们直接用代码来设置。采用查询法,我们需要在...
计数器
实验
通过分析示波器上的波形,可以确定CLK的
周期
和QB的翻转时机,从而确认
计数器
是否正常工作。 实验的第三部分要求使用74LS90设计实现100进制和24进制
计数器
。这涉及到级联多个四进制
计数器
以达到更大的计数范围。在...
第05章
单片机
定时
计数器
习题集解答.doc
- 输出1KHz
方波
:设定
T1
为方式2,计算初值,然后在中断服务程序中翻转
P1
.0
引脚
状态。 - 控制LED闪烁:设定
T1
为
定时
中断,每0.5秒翻转
P1
.7状态,实现1秒亮1秒灭的效果。 在实际应用中,开发者需要根据项目需求选择...
单片机/工控
27,510
社区成员
28,796
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章