打印

大家来看看

[复制链接]
3634|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shiwilson|  楼主 | 2010-12-24 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//---定时器实验---
//---头文件引用---
#include<reg51.h>
#include<absacc.h>
//---宏声明---
#define uchar unsigned char
uchar idata led[8]={0xfa,0xf5,0xaf,0x5f,0xaa,0x55,0x00,0xff};    //显示常数表
uchar times=20;                                   //延时1秒的常数
uchar status=0;
//---定时器---
void int1() interrupt 3
{
    TR1=0;                              //关定时器
    TL1=0x00;                           
    TH1=0x4b;                                 //延时50ms常数
    TR1=1;                              //开定时器
    times=(times-1);
    if(times==0)
    {
        times=20;                             //延时1秒的常数
        P1=led[status];                       //送P1口显示
        status=((status+1)&0x07);
   
    }
}
//---主程序---
void main()
{
    TMOD=0x10;                                //置T1为方式1
    TL1=0x00;                                    //延时50ms的时间常数
    TH1=0x4b;
    TR1=1;
    ET1=1;
    EA=1;                            //开中断
    while(1);
}
老师要我们把TL1=0x00;  TH1=0x4b;改为另一种表达式,
我的方法是计算出高八位低八位,即4b00=4*16*16*16+b*16*16=19200,65536-19200=46336,则可改为:TH1=(65536-46336)/256;TL0=(65536-46636)%256;
然而,带实训中的三个老师各说不同的方法,真是让我刚到惊讶,
第一种:TH1=(65536-19200)/256;TL0=(65536-19200)%256;
第二种:TH1=19200/256;TL1=19200%256;
特来请教各位大虾我的方法是对还是老师的对,或者都错了,谢谢大家

相关帖子

沙发
shiwilson|  楼主 | 2010-12-26 11:24 | 只看该作者
大家圣诞节过得还好吧,怎么只有人看没人回贴呢?高手在哪里

使用特权

评论回复
板凳
月生1991| | 2010-12-26 12:01 | 只看该作者
:)椅子

使用特权

评论回复
地板
月生1991| | 2010-12-26 12:02 | 只看该作者
:lol板凳

使用特权

评论回复
5
月生1991| | 2010-12-26 12:03 | 只看该作者
;P肯定老师对的啦

使用特权

评论回复
6
月生1991| | 2010-12-26 12:05 | 只看该作者
要计的是19200,不是46336

使用特权

评论回复
7
shiwilson|  楼主 | 2010-12-26 13:07 | 只看该作者
那就是说第一种是对的咯??

使用特权

评论回复
8
efen| | 2010-12-26 13:13 | 只看该作者
老师对的。
65536-19200=46336,从46336开始计时,到65536溢出定时器申请中断

使用特权

评论回复
9
NE5532| | 2010-12-26 13:39 | 只看该作者
唉,你的这些老师强啊,连51的Timer是上计数还是下计数都没搞清楚就来教学生了。不会是在公司里做不下去了,被学校“回收”的吧。

没啥对不对的,你实际算一下,谁的方法算出来等于底数就谁对。0x4B00才是王道,其他的都是伪定义而已,你知道4B00是咋来的就可以了。

使用特权

评论回复
10
shiwilson|  楼主 | 2010-12-26 16:27 | 只看该作者
[url][/url]

使用特权

评论回复
11
shiwilson|  楼主 | 2010-12-26 16:28 | 只看该作者
回8楼:
那这是的咯
第一种:TH1=(65536-19200)/256;TL0=(65536-19200)%256;
谢谢

使用特权

评论回复
12
shiwilson|  楼主 | 2010-12-26 16:31 | 只看该作者
9楼的朋友,谢谢你的回答,老师也会有出错的时候,我们需体谅

使用特权

评论回复
13
maxking| | 2010-12-26 18:49 | 只看该作者
不是错不错的问题,你的老师基础不好。

使用特权

评论回复
14
NE5532| | 2010-12-26 19:57 | 只看该作者
9楼的朋友,谢谢你的回答,老师也会有出错的时候,我们需体谅
shiwilson 发表于 2010-12-26 16:31


本着这样的态度做工程,你就完了。13楼说的对,不是错不错的问题,简直就是不拿学生当人看,把51的数据手册浏览一遍,还要不了一周吧。不知道就说自己不知道,让学生觉得做工程是在“凑合”,25号印度的火箭就是“凑合”的结果。

使用特权

评论回复
15
shiwilson|  楼主 | 2010-12-26 21:12 | 只看该作者
想想楼上的说得极是,不识单片机的人来我们当实训老师,现在想想真是恼火

使用特权

评论回复
16
shiwilson|  楼主 | 2010-12-26 21:16 | 只看该作者
请问NE5532怎样使用直接截图粘帖呢

使用特权

评论回复
17
月生1991| | 2010-12-26 21:28 | 只看该作者
我这学校也差不多:( 还是靠自己 15# shiwilson

使用特权

评论回复
18
NE5532| | 2010-12-26 21:32 | 只看该作者
截图以后保存为文件,在高级回复里有文件上传功能。

使用特权

评论回复
19
shiwilson|  楼主 | 2010-12-26 21:50 | 只看该作者
非常谢谢大家,:handshake特别是NE5532,看来我还需继续自学

使用特权

评论回复
20
心静自然凉| | 2010-12-26 22:14 | 只看该作者
11# shiwilson
第一种也不对,两种都不对....

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

154

帖子

0

粉丝