用单片机at89c51怎么实现5v和3v电压的交替延时输出
发布网友
发布时间:2024-09-30 04:54
我来回答
共2个回答
热心网友
时间:2024-11-23 08:34
ORG 0000H
AJMP START
ORG 000BH ;定时器0的中断向量地址
AJMP TIME0 ;跳转到真正的定时器程序处
ORG 30H
START:
MOV P1,#0FFH ;关所 灯
MOV 30H,#00H ;软件计数器预清0
MOV TMOD,#00000001B ;定时/计数器0工作于方式1
MOV TH0,#3CH
MOV TL0,#0B0H ;即数15536
SETB EA ;开总中断允许
SETB ET0 ;开定时/计数器0允许
SETB TR0 ;定时/计数器0开始运行
LOOP: AJMP LOOP ;真正工作时,这里可写任意程序
TIME0: ;定时器0的中断处理程序
PUSH ACC
PUSH PSW ;将PSW和ACC推入堆栈保护
INC 30H
INC 31H ;两个计数器都加1
MOV A,30H
CJNE A,#20,T_NEXT ;30H单元中的值到了20了吗?
T_L1: CPL P1.0 ;到了,取反P10
MOV 30H,#0 ;清软件计数器
T_NEXT:
MOV A,31H
CJNE A,#40,T_RET ;31h单元中的值到40了吗?
T_L2:
CPL P1.1
MOV 31H,#0 ;到了,取反P11,清计数器,返回
T_RET:
MOV TH0,#15H
MOV TL0,#9FH ;重置定时常数
POP PSW
POP ACC
RETI
END
热心网友
时间:2024-11-23 08:35
用D/A可以来做,如果是固定的3V与5V,可以用继电器来做,也就是用I/O口来控制继电器,但是被控制的电压一个是3V,一个5V.