打印
[AVR单片机]

[求助]高人指点这个中断程序应怎样改

[复制链接]
1490|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Karlshen|  楼主 | 2010-1-1 22:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教:想自己用stc89c52写个小程序  按下P1^0口开关后P0^0口的灯亮起,延时10秒后P0^1口的灯常亮,在延时过程中和延时后只要按下P1^1都可以随时中断程序从头重新执行。以下是自己写的总是有错越改越乱,求高人给该一下或帮忙写个参考参考,最好每一条语句给解释一下,谢谢了!
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint aa;
sbit s1=P1^0;
sbit s2=P1^1;
sbit d=P1^7;
void init()
{
TMOD=0x01;
aa=0;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
}
void main ()
{
init();
d=0;
while(1)
{
  if(s1==0)
  {  
   TR0=1;
   P0=0xfe;
  }
  if(aa==200)
  {
   aa=0;
   P0=0xfd;  
  }
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(s2==0)
{
  aa=0;
  P0=0xff;
}
}

相关帖子

沙发
NE5532| | 2010-1-2 20:43 | 只看该作者
其实就是一个触发——延时——复位的过程,先画流程图,再写程序就不会晕了。每一行给你注释是办不到的。另外你在AVR的地盘上讨论51,小心老耿打你PP哦。

使用特权

评论回复
板凳
suoma| | 2010-1-3 21:45 | 只看该作者
改用AVR的算了,肯定会有很多人给你解答问题的:P

使用特权

评论回复
地板
huamunv| | 2010-1-6 23:27 | 只看该作者
AVR难道和51一点关系没有吗?

使用特权

评论回复
5
wangwo| | 2010-1-9 00:08 | 只看该作者
4# huamunv
先了解了解吧

使用特权

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

本版积分规则

81

主题

734

帖子

1

粉丝