标题:
51初学小白~请问定时器为什么不能触发
[打印本页]
作者:
zjm001
时间:
2022-8-25 11:30
标题:
51初学小白~请问定时器为什么不能触发
RT,刚刚学习51的定时器,想做一个每隔50MS闪灯的程序,但LED却常亮,编译是正常的,求问各位老师问题出在哪里了帮忙指点一下,谢谢定时器初始化方法是STC-ISP生成的 50MS 12T 16位自动重载
#include <STC89C5xRC.H>
void Timer0Init();
int i=0;
void main(){
Timer0Init();
P22=1;
while(1);
}
void Timer0Init() //50MS@11.0592MHz{
AUXR &= 0x7F;
TMOD &= 0xF0
TL0 = 0x00;
TH0 = 0x4C;
TF0 = 0;
TR0 = 1;
ET0=1
EA=1
}
void c_led() interrupt 1{
TL0 = 0x00;
TH0 = 0x4C;
TF0 = 0;
i+=1;
if(i>=65534){
复制代码
51hei截图20220825112637.png
(29.62 KB, 下载次数: 28)
下载附件
2022-8-25 11:30 上传
作者:
Hephaestus
时间:
2022-8-25 12:39
用手甩一下电路板,如果看到一条连续的亮线,说明没闪。如果看到的是不连续的亮点,那就是已经闪了,但是你的眼睛无法分辨50ms这么快的速度。
作者:
hhh402
时间:
2022-8-25 12:57
你确定可以分辨出50ms闪烁?改成500ms闪烁吧
作者:
robinsonlin
时间:
2022-8-25 13:01
1,int类型的i,能够累加到65534么?
2,定时器中断是50ms的间隔,50ms翻转一次P22口的状态,你确定你的肉眼能否分辨100ms以内的闪烁?
作者:
188610329
时间:
2022-8-25 13:02
时间太短,闪了你也看不出来,500ms翻转一次比较好,这是其1,其二,stc89系列,模式0是13位定时器方式,那么,你所以为的50ms,其实只有6ms出头,那么等于就是常亮了。
作者:
zjm001
时间:
2022-8-25 13:10
解决了,是89c52没有16位定时器重载,选择16位就好了
作者:
sttt300
时间:
2022-8-25 13:16
这50ms已经超出了正常人能看到的范围了,改1秒试试
作者:
lkc8210
时间:
2022-8-25 13:19
就算你有钛合金氪石眼你也看不到50MS的闪灯闪烁
作者:
xxxevery
时间:
2022-8-25 13:48
如果你用的是stc89c5x的芯片,哪有16位自动重载这个模式,那么TMOD &= 0XF0这一句设定肯定不合适,在应用前还是先搞清楚用的是啥芯片,再研究一下对应的pdf
作者:
Tuier
时间:
2022-8-25 14:31
定时器模式设置不对。将TMOD &=0xf0改为TMOD =0X01试试。建议不要用ISP中的定时器设置程序,很多错误
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1