[求助] 关于stc89c52中断问题。写了个程序,大家看是哪的问题

早死早超生   2014-4-11 18:40 楼主
题目:利用定时器ti产生定时时钟,由P1口控制8个发光二极管,使八个指示灯依次一个一个闪动,闪动频率为10次每秒(8个灯依次亮一遍为一个周期),循环。我写的程序是这样的,大家看下是什么问题(频率可能不对):
#include
#include
#define uchar unsigned char
#define uint unsigned int;
uint tt;
uint temp;
void main()
{
        temp=0xfe;
        TMOD=0x10;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET1=1;
        TR1=1;
       
       
       

        while(1)
        {
                P1=0xff;

               
        }
}
void flash() interrupt 3
{
       
        P1=temp;
        if(tt%10==0)
        {
               
                temp=_irol_(temp,2);
                tt=0;
        }
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        tt++;
       
}
谢谢了。我做出的结果跟题目要求不一样。

回复评论 (11)

乍一看你的程序,小灯可能根本就不会闪。要么全灭,要么全亮。额,好像是全灭。 没仔细看,也许说的不对。 本帖最后由 sjtitr 于 2014-4-11 18:56 编辑
点赞  2014-4-11 18:55
        while(1)
         {
                 P1=0xff;

                 
         }
这段会战满P1状态.
点赞  2014-4-11 19:33
P1=0xff;后加延时,再看temp的值得变化是否正确
点赞  2014-4-11 19:39
引用: ienglgge 发表于 2014-4-11 19:39
P1=0xff;后加延时,再看temp的值得变化是否正确

while的时候不是会有定时器中断吗?中断的时候就进行移位了,还需要延时?
点赞  2014-4-11 19:58
引用: huo_hu 发表于 2014-4-11 19:33
while(1)
         {
                 P1=0xff;

在沾满的时候不是有中断吗?就去执行中断了吧?中断的时候就移位亮灯了吧?
点赞  2014-4-11 20:00
引用: sjtitr 发表于 2014-4-11 18:55
乍一看你的程序,小灯可能根本就不会闪。要么全灭,要么全亮。额,好像是全灭。

没仔细看,也许说的不对 ...

灯也会移位,只不过移位之后前面的所有灯都不会灭
点赞  2014-4-11 20:00
引用: 早死早超生 发表于 2014-4-11 19:58
while的时候不是会有定时器中断吗?中断的时候就进行移位了,还需要延时?

你不停的写 P1=0xff;
进入中断移位后,退出中断。P1又被你改回去了。
点赞  2014-4-11 20:19
你给TH0 TL0赋值是定时器0  但是你打开的是TR1定时器1   把前面改为TH1 TL1 试试看  
点赞  2014-4-11 20:20
引用: ccc00 发表于 2014-4-11 20:20
你给TH0 TL0赋值是定时器0  但是你打开的是TR1定时器1   把前面改为TH1 TL1 试试看

是这样的谢谢啊,我是刚刚学习,好多地方不够完善,以后还得多多学习,积累经验,谢谢你啊
点赞  2014-4-11 20:54
引用: ienglgge 发表于 2014-4-11 20:19
你不停的写 P1=0xff;
进入中断移位后,退出中断。P1又被你改回去了。

我要做的是闪的。是我太粗心了,那个定时器写错了,还是谢谢你
点赞  2014-4-11 20:55
        TMOD=0x10;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET1=1;
        TR1=1;

T0?  T1?
点赞  2014-4-15 11:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复