打印
[家电应用]

79F1616A定时器按照手册写的,始终不行,求助

[复制链接]
1207|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
he07413|  楼主 | 2014-5-30 14:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
79F1616A,按照手册初始化 定时器3 和定时器5.  BANK 设置也是查看手册设置的。无法产生中断。仿真发现: 只有定时器 3的计数寄存器低8位在变,高8位不动。定时器5的 16位计数寄存器 一直不变。               
               SETBIT(INSCON,6);                                          //BANK1
                                                                                          //T3CON=
                SETBIT(T3CON,4);                                          //T3PS0=1;256分頻
                SETBIT(T3CON,5);                                          //T3PS1=1;256分頻
                CLRBIT(T3CON,0);                                          //T3CLKS0=0;系统时钟,T3引脚做IO
                CLRBIT(T3CON,1);                                          //T3CLKS1=0;系统时钟,T3引脚做IO
                CLRBIT(T3CON,2);                                          //TR3=0;关闭定时器3
//                SWTHL=0x03;
                TL3=0x2b;                                                          //10mS定时
                TH3=0xfe;
               
                CLRBIT(INSCON,6);                                          //BANK0
                __enable_interrupt();                                  //开总中断
                SETBIT(IEN1,4);                                                  //IEN1|=0x10;开定时器3中断
                                                                                          //TF3=0;清除中断请求位,硬件清零
                SETBIT(INSCON,6);                                          //BANK1
                SETBIT(T3CON,2);                                          //开始定时器3
//---------------------------------------------------------------
                T5CON=0x30;                                                          //0X11 XX0X 256分频,禁止定时器5
                CLRBIT(T5CON,1);                                          //TR5=0;禁止定时器5
//                SWTHL=0x03;
                TL5=0x2b;                                                          //10mS定时
                TH5=0xfe;
                SETBIT(T5CON,1);                                          //TR5=1;开始定时器5

                CLRBIT(INSCON,6);                                          //BANK0
//                __enable_interrupt();                                  //开总中断
                SETBIT(IEN0,1);                                                  //开定时器5中断
沙发
summeryu| | 2014-6-3 12:11 | 只看该作者
INSCON 的地址為 86H ,不能進行位定義和位操作,請再仔細核對一下那些不能進行位操作和位定義的寄存器你進行了位操作,一般地址能被8整除的可以做位定義和位操作(中颖全心论坛已回复)

使用特权

评论回复
板凳
timeriverhao| | 2014-6-6 17:35 | 只看该作者
看你写的代码,其实不是86H的问题。不知道你SETBIT和CLRBIT是怎么写的,如果是普通函数就不对。建议你多看下C51的资料,函数参数传递这一块,你传递过去的是值传递,是不能对寄存器进行修改的。

使用特权

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

本版积分规则

5

主题

14

帖子

1

粉丝