STC15F104W单片机外部中断程序怎么不工作

查看: 2205|回复: 4
STC15F104W单片机第二个定时器的用法
哪个大侠知道STC15F104W单片机第二个定时器的用法,请帮忙。用STC15F104W做了一个红外控制继电器的程序,已实现功能。又用STC15F104W做了一个红外发射程序,也实现了功能。现在想把两个功能整合到一起,以解决一个摇控器控制机项盒、电视、空调和功能。但两个定时器,不知道怎么整了。
1、关于T2,为何不去研读手册。
2、一个定时器可以定时若干个计时器,估计是楼主的思维太狭了。
定时器应当把它作为一个时基(时间基准),另外再用“寄存器+标记位”做成计时器,可做若干个。
例如:红外、继电器、摇控器、机项盒、电视、空调这6个都需要定时,现在就以T0为例:
当T0中断后:就给6个计时器(用6个寄存器做成6个计数单元:J1、J2、……J6)+1,分别与6个时限值做比较,比较时间到达后,做各自的标记(B1、B2、……B6)表示计时时间到。这样就要完成了6个定时任务。
而在主程序中,判断这6个标记(B1、B2、……B6),有标记的就处理此事件,处理后就清除标记。
更高级一点,楼主还控制这6个计时器,增加6个允许计时标记Y1、Y2、……Y6,T0中断后,视Yx是否=1才计数(+1),=0则不计数。如此楼主只要对Yx写1它就工作了,写0它就停止了。
问题已解决。STC15F104W没有定时T1,而是T2。再就是工作模式的设定、初装值的给定与以前的单片机不同。特别是工作模式的设定值是12而不是5。楼上说的也有点道理,但问题是有的时基是不一样的。
1、关于T2,为何不去研读手册。
2、一个定时器可以定时若干个计时器,估计是楼主的思维太狭了。
定时器应 ...
这个方法不错
问题已解决。STC15F104W没有定时T1,而是T2。再就是工作模式的设定、初装值的给定与以前的单片机不同。特别 ...
感谢楼主分享
Powered by还没有帐号? 赶紧
用户版块帖子
STC15f104w现在外部中断正常吗?
UID:916726
在线时间1009小时
M币282专家2
STC15f104w我看在淘宝上很多店都在卖了,不知道他的外部中断正常不?另外,104e是通过软件模拟串口实现通信的,那是不是104W也是这样的?
UID:1301826
在线时间458小时
M币1310专家17
有解决的办法,具体的方法忘了,好像在哪个脚上加个什么,论坛里可以搜到
UID:541075
在线时间3617小时
M币22821专家43
手册上说是正常了,是104E的修正版本了,内核也换成Y5的,速度更快
UID:820484
在线时间144小时
M币26专家2
我用过了,外部中断是正常的。你可以放心使用。
UID:1086633
在线时间146小时
M币1577专家5
但是好像定时1又出问题了 。。我同事那次调程序时候就一直定时器1不能使。。。不知道楼上可以试试否?
UID:820484
在线时间144小时
M币26专家2
引用第4楼liangzai于 22:32发表的&&:但是好像定时1又出问题了 。。我同事那次调程序时候就一直定时器1不能使。。。不知道楼上可以试试否?
楼上的,STC15f104w的PDF里面已经说了,只有T0 和 T2呀,哪里说有T1?我用的T0没有问题的。
UID:1479642
在线时间1130小时
M币6233专家7
手册上说是解决了之前104E外部中断不正常的问题。
UID:1086633
在线时间146小时
M币1577专家5
回 5楼(fxhfxh) 的帖子
哦这样?我再看看手册。。这么坑?104E有T1吧
UID:788787
在线时间2531小时
M币521专家26
应该正常了,因为改进版。
UID:916726
在线时间1009小时
M币282专家2
串口通信呢?
访问内容超出本站范围,不能确定是否安全
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
您目前还是游客,请
&回复后跳转到最后一页
Code by , Time now is:07-10 06:38, Total 0.175226(s) query 11,
Gzip enabled&单片机两个外部中断同时工作而不互相干扰_百度知道
单片机两个外部中断同时工作而不互相干扰
我要同时使用89S52的INT0和INT1,用来接收外部中断信号,并分别用数码管显示中断次数,如何实现同时工作而不互相干扰,软件上如何实现,主函数如何写?
下面的程序,主函数该怎么改?
#include &reg52.h&
code unsigned char table1[]={0x3f,0x0...
我有更好的答案
如果不设置的话,中断0的优先级比中断1的优先级高。或者你也可以设置一下。总之,它俩有优先级的关系,所有,你所得说的干扰就是谁把谁打断的关系!!!
采纳率:21%
进入中断服务程序时,先禁止中断使能,执行完本次中断,再恢复。
为您推荐:
其他类似问题
外部中断的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 1276|回复: 12
STC15F104W控制逻辑器
用此单片机控制两个IO状态,有信号时变高电平,无信号时变低电平,有一个开关无论前面有没有信号都取反控制。请问哪位大侠有没有这么方面的程序参考一下,或者说有没有逻辑方式
本人愚钝,不明白楼主的意思:是谁有无信号时,是其中的一个I/O口变高变低吗?,另一个开关又是哪位呢?是两个I/O口始终取反吗?哎,你的语言表达……
回帖助人的奖励!
哦,本人表达可能有问题,单片机的有两个IO端作输入,一个是按键一个是外部电平的高低变化,当外部电平为高时关电机,为低时开电机,同时按按键的
又可以让电机取反转动,但同时输入端会长期会保持一个高电平或一个低电平。比如外部是低电平电机开启正转,此时按按键电机反转但松手后电机又正转,因为外部输入是高电平。同理外部高电平时按按键时也是这样。所有这个逻辑要怎么处理。
很牛的逻辑看了都没看出来电机转究竟会朝那边转
回帖助人的奖励!
没明白说的是什么
程序给你编好了,自己去调试
void scan_key()
&&delay_ms(10);
& &if(!key)
& &&&& & & & {
& & & & out1=!out1;
& &&&& & & & out2=!out2;
& &while(!key);
void done()
& &if(!signal)
& &&&& & & & {
& & & & out1=0;
& &&&& & & & out2=0;
& &&&& & & & {
& & & & out1=1;
& &&&& & & & out2=1;
void main()
init_sys();
delay_ms(500);
& & & & done();
& & & & scan_key();
回帖助人的奖励!
首先要谢谢你的回复我会测试后回复于你,下面是本人写的就是按住按键时电机有动,松手就是反转。想请大侠顺便看一下本人哪里的错了,可以好好向你们学习学习。
#include&reg51.h&
#include&intrins.h&
#define uchar unsigned char
#define uint&&unsigned int
uchar flag,b;
sfr P3M0 = 0xB2;
sfr P3M1 = 0xB1;
sbit&&MA = P3^2;
sbit&&MB = P3^3;
sbit&&LED1 = P3^0;
sbit&&LED2 = P3^1;
sbit&&KEY1 = P3^4;
sbit&&KEY2 = P3^5;
void delayms(uchar x)
&&uchar i,j;
& && &for(i=12;i&0;i-- )
& && && & for(j=169;j&0;j-- );
& & & & while(--x);
void sw_12()
& & if(KEY1==0)//正转
& & & &&&{
& & & && & delayms(10);
& & & && & if(KEY1==0)
& & & && & {
& & & && & & & & &&&MA=~MA;MB=~MB;LED1=~LED1;LED2=~LED2;
& & & && & }
& & & && &while(KEY1==0);
void sw_13()
& & if(KEY2==1)//正转
& & & &&&{
& & & && & delayms(10);
& & & && & if(KEY2==1)
& & & && & {
& & & && & & & & && &MA=1;MB=0;LED1=1;LED2=0;
& & & && & }
//& & & && & while(KEY2==1);
void sw_14()
& & if(KEY2==0)//正转
& & & &&&{
& & & && & delayms(10);
& & & && & if(KEY2==0)
& & & && & {
& & & && & & & & &&&MA=0;MB=1;LED1=0;LED2=1;
& & & && & }
& & & && & while(KEY2==0);
void main()
&&P3M0 = 0x0C;
&&P3M1 = 0x00;
&&MA=1;MB=1;LED1=1;LED2=1;
&&while(1)
& & sw_12();
& & sw_13();
& & sw_14();
& & /*switch(b)
&&& & & &&&case 1:MA=0;MB=1;LED1=0;LED2=1;
& & & &&&case 2:MA=1;MB=0;LED1=1;LED2=0;b=0;& & & &&&
&&}*/ & & & &
回帖助人的奖励!
首先要谢谢你给我解答。本人也写了个程序麻烦大侠们给我看看哪里出了问题。
描述实在是看不明白,
不懂你按键用来控制什么。
按键做为测试之用,就是看一下电路有没有问题。简单点来说的话就是,输入的高电平控制马达正转,输入低电平时控制马达反转。按键就是在任意状态时按下后马达可以来回转动。不知道这样说能不能明白
现在主要的问题是输入端在任何都有一个状态。要怎么个方式来取反控制电机转动。而不影响输入控制
Powered by

我要回帖

更多关于 单片机外部中断计数器 的文章

 

随机推荐