作者cses (5858)
看板ASM
标题[问题]中断与持续输出
时间Sun Oct 28 12:01:31 2012
设计上是AT89S51接受一个外部方波讯号,判断方波属於哪个频率後做输出
方波频率有三种"500HZ、1KHZ、other"
方坡计算方式是计数方波负缘在0.1秒内出现的频率
用了一个外部中断,0.1s中断一次去计算方波频率
已经可以判断读入的是哪个频率,但在输出的方面有点问题不知道该怎样解...
希望是在同一个固定频率持续的时候灯持续亮
但在频率转换成另一个的时候要换亮第二种灯
目前这样他会一直闪烁
要怎样让他能持续一直亮呢... :(
有想过在中断之後写回圈但不知道若频率转换时要怎麽跳到判断...
以下是程式码
ORG 0000H
MOV P2,
#11111111B
JMP MAIN
ORG 0013H
CPL A
CLR C
MOV R3,A
SUBB A,#6BH
JNC ENDDD
CLR C
MOV A,R3
SUBB A,#5DH
JNC KHZ
CLR C
MOV A,R3
SUBB A,#39H
JNC ENDDD
CLR C
MOV A,R3
SUBB A,#2BH
JNC HZ
RETI
KHZ:
MOV TH1,#0
MOV TL1,#0
CLR A
MOV P2,
#01111011B
RETI
HZ:
MOV TH1,#0
MOV TL1,#0
CLR A
MOV P2,
#11111110B
RETI
ENDDD:
MOV TH1,#0
MOV TL1,#0
CLR A
MOV P2,
#11111111B
RETI
MAIN: SETB P3.3
SETB IE1 // 中断智能
SETB EX1
SETB EA
START:
MOV TMOD,
#11010001B // 设定计数器模式
LOOP:
MOV TH1,#0
MOV TL1,#0 //负缘次数 清除为0
SETB TR1
WAIT:
MOV A,TL1 // 将 TL1 复制到累进器A
CPL A // 位元反转
MOV P1,A // 第一组port 输出 累进器数值
AJMP WAIT
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.38.62.51
1F:推 ruemann:我猜是 org 13h 下面那行的问题 改成 mov a, tl1;cpl a; 10/29 19:51
2F:→ cses:谢r大... 我星期三去改改看 :) 10/30 01:14