您现在所在的是:

单片机论坛

回帖:13个,阅读:1409 [上一页] [1] [2] [下一页]
1050
zhijh
文章数:54
年度积分:50
历史总积分:1050
注册时间:2006/5/20
发站内信
发表于:2006/8/7 13:59:00
#0楼
org  0000h
     jmp  start
      org  13h
      jmp  INT
start:
      mov ie,#10000100B
     mov sp,#30H
     setb it1
      mov p2,#0ffH
     setb p3.3
     setb p1.4
     mov r1,#02
loop: jb p1.4,loop
LOOP1:  mov p2,#10000000B
     call delay
     mov p2,#11000000B
     call delay1
     mov p2,#10000000B
     call delay
     mov p2,#10100000B
     call delay2
     djnz r1,loop1
     mov p2,#000H
     jmp start
INT:  push psw
     setb rs0
     mov p2,#10000000B
      call delay
      mov p2,#00100000B
     call delay
     pop psw
     RETI
     
delay: mov r7,#10
  d1: mov r6,#200
  d2: mov r5,#250
  djnz r5,$
  djnz r6,d2
  djnz r7,d1
  ret
delay1:mov r7,#100
  d3: mov r6,#200
  d4: mov r5,#250
  djnz r5,$
  djnz r6,d4
  djnz r7,d3
  ret
delay2:mov r7,#100
  d5: mov r6,#200
  d6: mov r5,#250
  djnz r5,$
  djnz r6,d6
  djnz r7,d5
  ret
  end
为什么我在按了中断后,执行INT子程序的mov p2,#00100000B花了很长时间才返回主程序,可程序里是延时DELAY 大约1秒钟啊
1050
zhijh
文章数:54
年度积分:50
历史总积分:1050
注册时间:2006/5/20
发站内信
发表于:2006/8/7 14:35:00
#1楼
各位高手,帮忙解答一下
1064
工控秀才
文章数:80
年度积分:50
历史总积分:1064
注册时间:2006/6/16
发站内信
09工控人生征文
08年优秀博客奖
发表于:2006/8/7 18:25:00
#2楼
这样写程序是不好的,既然使用了中断,就不要再使用延时了,特别是中断中更不能使用延时,可以利用标志位和时间寄存器来解决比较长的时间控制。
而且你在主程序和中段中都调用了DELAY函数,很容易造成函数重入而出错的。
14PIN的单片MCU多核心时代已来临,  想在低容量的MCU系统跑多任务吗,欢迎登陆"http://gongkong.gkbk.com"我的博客 查看详情,谢谢!
1050
zhijh
文章数:54
年度积分:50
历史总积分:1050
注册时间:2006/5/20
发站内信
发表于:2006/8/8 9:33:00
#3楼
谢谢秀才的解答,我用定时器试一下,不过你说中断中不能使用延时,可是我看到很多书上都有在中断中使用延时的啊
1990
gkcity.
文章数:683
年度积分:50
历史总积分:1990
注册时间:2006/6/12
发站内信
发表于:2006/8/8 9:36:00
#4楼
我觉在中断中可以使用延时!

1050
zhijh
文章数:54
年度积分:50
历史总积分:1050
注册时间:2006/5/20
发站内信
发表于:2006/8/8 10:01:00
#5楼
这程序我在实验中发现,当主程序在执行延时程序时按下中断,那它剩下的延时时间都给中断程序的mov p2,#00100000B,所以它要看上去要等很时间才回主程序,请问有什么办法解决,请各大高手指点迷津.
1050
zhijh
文章数:54
年度积分:50
历史总积分:1050
注册时间:2006/5/20
发站内信
发表于:2006/8/8 22:13:00
#6楼
没人回答在顶一下
1059
woodyxue
文章数:66
年度积分:50
历史总积分:1059
注册时间:2006/2/5
发站内信
发表于:2006/8/12 16:03:00
#7楼
loop: jb p1.4,loop  不明白这句用来干什么感觉好象LOOP自己在循环!另外我看了你的程序有中断的入口可是我找不到你中断开始的地方啊,而且我觉得没必要用中断,你用了延时就不要在用中断了!!

你说的你实验的结果我用防真做了,到LOOP就运行不下去了,你看看是不是你写的有问题啊,你把你想要实现的控制告诉我,这样我看起来会更方便的!!
1050
zhijh
文章数:54
年度积分:50
历史总积分:1050
注册时间:2006/5/20
发站内信
发表于:2006/8/13 9:43:00
#8楼
谢谢,WOODYXUE的解答,这P1.4是做启动开关用的,loop: jb p1.4,loop是等侍启动按钮开始,中断也是用外部的中断P3.3也是一个按钮,P2是输出用的.希望多多指导.
994
weiwei00
文章数:42
年度积分:50
历史总积分:994
注册时间:2006/7/22
发站内信
发表于:2006/8/13 16:58:00
#9楼
PUSH 07
PUSH 06
PUSH 05
   ..
   ..
POP 05
POP 06
POP 07
加进中断里就可以了;程序没写好,只能暂且这么补救


[此贴子已经被作者于2006-8-13 16:58:33编辑过]

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004