千家论坛_智能建筑与智能家居技术交流社区

标题: 高手__請指教。 [打印本页]

作者: freepc    时间: 2004-5-28 13:24
标题: 高手__請指教。
在AT89S51中: 1﹑我的外部中斷經常會失靈﹐不知用什么好辦法來解決﹔

2﹑作八段LED動態顯示時﹐我把40H,41H,42H,43H,44H作顯示緩沖區用﹐但怎樣才能

用循環的方式來實現顯示﹐如﹕

disp: mov r0, #40h

mov r1, #01h

disp2: jb p2.4, disp

mov p2, r1

mov a, r1

rl a

mov r1, a

mov a, @r0

mov dptr, #tab

movc a, @a+dptr

mov p1, a

inc r0

acall delay ;1ms

ajmp disp2

這段程序好像實現不了。

[此贴子已经被作者于2004-5-31 9:05:37编辑过]

作者: freepc    时间: 2004-5-28 16:54

怎么還是沒人回?


作者: fclvgyfe    时间: 2004-5-28 17:00
把电路图贴出来啊,LED显示通常都用定时器完成的。
作者: fclvgyfe    时间: 2004-5-28 17:02
r0大概会加出头的。
作者: freepc    时间: 2004-5-31 09:09

謝樓上﹐程序我已改好了﹐這樣就沒有問題了﹐

但誰能告訴我第一個問題怎樣去解決﹕外部中斷經常不靈﹐怎樣去解決?


作者: fclvgyfe    时间: 2004-5-31 11:21
外部中断比较复杂,首先看你是用沿触发还是电平触发,前者要求中断信号在响应后消失,并在中断中清标志。另外,中断程序也很重要。不要死在里面。
作者: freepc    时间: 2004-5-31 13:38

謝樓上﹐是這樣的﹐我做過好多外部中斷程序都是一樣不靈﹐程序自身是沒有問題的﹐我想應是硬件上造成的﹐

普通IO可以通過軟件延時的方式進行消抖﹐但是外部中斷卻無能為力了﹐請指教這個消抖電路應該怎樣來做呢?例程﹕

org 0000h

ajmp 0030h

org 000bh

ajmp ex0

org 0030h

main: mov ie, #86h

setb it0

sjmp $

ex0: cpl p1.0 ; p1.0上接一LED發光管

reti

結果﹕按一次int0所接按鍵﹐有時會LED閃兩 次。這我就沒招了﹐還請同行指教﹗


作者: fclvgyfe    时间: 2004-5-31 17:16
你这个程序也太简单了吧,按键时手的抖动就有好几个,消抖在每本书上都有,大约20MS。否则EX0:会进去多次。
作者: fclvgyfe    时间: 2004-5-31 18:04

用位标志多判几下就可以了


作者: freepc    时间: 2004-6-1 09:12

謝樓上﹐但是外部中斷是無法通過軟件上去延時的,延時20ms只能用在普通的IO上;

謝過你了﹐我已有辦法去做好了。






欢迎光临 千家论坛_智能建筑与智能家居技术交流社区 (http://bbs.qianjia.com:8020/) Powered by Discuz! X3.2