2434|5

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

#include<reg52.h>
#include"74hc595.h"
#define uchar unsigned char
#define uint unsingned int
uchar sa[32]={0};
uchar sb[32]={0};
uchar sx=0,sy=0,num,sf=1,i,sl=1;

void main()

 
     TMOD = 0x11;      //设置定时器0的工作方式1
     TH0 = ( 65535 - 50000 ) / 256;  
     TL0 = ( 65535 - 50000 ) % 256;
     EA=1;        //开总中断
     ET0=1;
     ET1=1;
     TR1=1;      
    TR0=1;
    while(1)
   {
         for(i=0;i<sl;i++)
               showPoint(sa,sb,1);
        sa[0]=sx;
   }
}

void T0_time() interrupt 1
{
    TH0 = ( 65535 - 50000 ) / 256;  //定时器0重装初值
    TL0 = ( 65535 - 50000 ) % 256;
    num++;        
     if(num ==20)      //如果到了20次,说明1m时间到
    {
        sx=5;
        num = 0;      //然后把num清0重新再计20次
   }
}

就这么点代码 ,,,,,,,,,,,,,,sa[0]的值永远是0,,,,就是改不了!!!!!!!!!!火大我没办法了。。不用定时器了火大很。。。莫名的问题让人作呕!!!!!!!

最新回复

这个问题我以前也碰到过。在网上发现一个解决办法: “知道原因了,是因为timer1设置问题:timer1是做为串行通信的波特率发生器,设置为方式2(自动填充)因为ET1被置位,而timer1没有跳转函数(因为是自动填充)所以timer1 会执行中断,跳转到中断入口0x1B,使程序跑飞了。不置位ET1就可以了。”出自http://topic.csdn.net/u/20101105/11/657a544a-d614-4bf5-83c6-df4d9edc4882.html; 而且你打开定时器0就够了,不需要将ET1置位,所以将其删去即可。  详情 回复 发表于 2012-3-21 17:11
点赞 关注
 
 

回复
举报

15

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
怀疑这个软件有问题。。。
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
貌似连粘贴都是错的     这本本有问题,,,需要买过
#include
#include"74hc595.h"
#define uchar unsigned char
#define uint unsingned int
uchar sa[32]={0};
uchar sb[32]={0};
uchar sx=0,sy=0,num,sf=1,i,sl=1;

void main()
{       
       
        TMOD = 0x11;                                                //设置定时器0的工作方式1
        TH0 = ( 65535 - 50000 ) / 256;               
        TL0 = ( 65535 - 50000 ) % 256;
        EA=1;                                                                //开总中断
        ET0=1;
        ET1=1;
        TR1=1;                                               
        TR0=1;
        while(1)
        {
                   for(i=0;i                         showPoint(sa,sb,1);
                sa[0]=sx;
        }
}

void T0_time() interrupt 1
{
        TH0 = ( 65535 - 50000 ) / 256;                //定时器0重装初值
        TL0 = ( 65535 - 50000 ) % 256;
        num++;                                                               
        if(num ==20)                                                //如果到了20次,说明1m时间到
        {
                sx=5;
                num = 0;                                                //然后把num清0重新再计20次
        }
}
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

4
 
真有问题   !!!!悲哀呀。。明明粘贴是sa  sb的 连粘贴三次都显示不了【】【】这两个东西
 
 
 

回复

2万

帖子

74

TA的资源

管理员

5
 

有些代码会和网页代码冲突的,上传代码可以使用专门的代码显示功能,如图剪头所示

 

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

1412

帖子

15

TA的资源

版主

6
 

这个问题我以前也碰到过。在网上发现一个解决办法:

 

“知道原因了,是因为timer1设置问题:

timer1是做为串行通信的波特率发生器,设置为方式2(自动填充)

因为ET1被置位,而timer1没有跳转函数(因为是自动填充)

所以timer1 会执行中断,跳转到中断入口0x1B,使程序跑飞了。

不置位ET1就可以了。”出自
http://topic.csdn.net/u/20101105/11/657a544a-d614-4bf5-83c6-df4d9edc4882.html

 

而且你打开定时器0就够了,不需要将ET1置位,所以将其删去即可。

个人签名https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表