社区
单片机/工控
帖子详情
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。
LOVEMENYU520
2011-01-02 04:17:42
单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序。 大家帮个忙。谢谢、
...全文
10846
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
编写51
单片机
程序,输出
方波
,at89s52的
单片机
要求:
晶振
为
12
M,用T0做
定时
器,在
P1
的低四位输出四种
频率
的
方波
:
P1
.3 = 1.25kHz、
P1
.2 = 2.5kHz、
P1
.1 = 5kHz、
P1
.0 = 10kHz 另外,
P1
.6、
P1
.7的输出做四选一数据选择器的选择位,它们由P3.0按键控制
MCS-51
单片机
定时
器/
计数器
常见习题解答
1、根据
定时
器/
计数器
0方式1逻辑结构图,分析门控位GATE取不同值时,启动
定时
器的工作过程。 答:当GATE=0:软件启动
定时
器,即用指令使TCON中的TR0置1即可启动
定时
器0。
单片机
(AT89C51)
定时
/
计数器
实验案例
继上篇的《
单片机
(AT89C51)
定时
/
计数器
详解及其实验案例》由于各种原因里面没有实验案例现在在此补上。
单片机
(AT89C51)
定时
/
计数器
详解见上篇:https://blog.csdn.net/weixin_45629315/article/details/105418365 目录 案例分析 实验一(已知8051
单片机
的fosc=
12
MHz
用
T1
定时
,试编程由
P1
.0
引脚
分别输出
周期
为2ms的
方波
) 方法一(查询法): 方法二(中断法): 实验结果图: 实验二(已知8051
单片机
的fosc=
12
MHz
用
T1
定时
。试编程由
P1
.0
引脚
分别输出
周期
为2s的
方波
):
计数器
实验
1.测试74LS90逻辑功能,记录其逻辑功能。 2.用模拟示波器显示74LS90模10
计数器
的QB和CLK。 3.用74LS90设计一个电路实现100进制
计数器
和24进制
计数器
。
第05章
单片机
定时
计数器
习题集解答.doc
第05章
单片机
定时
计数器
习题集解答.doc
单片机/工控
27,509
社区成员
28,796
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章