
ORG 0000H
LJMP START
ORG 0003H ;INT 0 中断入口地址
LJMP INT0
ORG 0040H
START:
MOV SP,#60H
SETB EX0 ;INT 0 中断有效
SETB IT0
SETB EA
LCALL STATUS0 ;初始状态(都是红灯)
CIRCLE:
LCALL STATUS2 ;南北绿灯闪转黄灯,东西红灯
LCALL STATUS3 ;南北红灯,东西绿灯
LCALL STATUS4 ;南北红灯,东西绿灯闪转黄灯
LJMP CIRCLE
INT0:
PUSH PSW ;保护现场
PUSH 2
PUSH ACC
MOV DPTR,#8300H
MOV A,#0FH ;南北,东西都亮红灯
MOVX @DPTR,A
MOV R2,#100 ;延时10秒
LCALL DELAY
POP ACC ;恢复现场
MOVX @DPTR,A
POP 2
POP PSW
RETI
STATUS0: ;南北红灯,东西红灯
MOV DPTR,#8300H
MOV A,#0FH
MOVX @DPTR,A
MOV R2,#10 ;延时1秒
LCALL DELAY
RET
STATUS1: ;南北绿灯,东西红灯
MOV DPTR,#8300H
MOV A,#96H ;南北绿灯,东西红灯
MOVX @DPTR,A
MOV R2,#200 ;延时20秒
LCALL DELAY
RET
STATUS2: ;南北绿灯闪转黄灯,东西红灯
MOV DPTR,#8300H
MOV R3,#03H ;绿灯闪3次
FLASH:
MOV A,#9FH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
MOV A,#96H
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
DJNZ R3,FLASH
MOV A,#06H ;南北黄灯,东西红灯
MOVX @DPTR,A
MOV R2,#10 ;延时1秒
LCALL DELAY
RET
STATUS3: ;南北红灯,东西绿灯
MOV DPTR,#8300H
MOV A,#69H
MOVX @DPTR,A
MOV R2,#200 ;延时20秒
LCALL DELAY
RET
STATUS4: ;南北红灯,东西绿灯闪转黄灯
MOV DPTR,#8300H
MOV R3,#03H ;绿灯闪3次
FLASH1:
MOV A,#6FH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
MOV A,#69H
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
DJNZ R3,FLASH1
MOV A,#09H ;南北红灯,东西黄灯
MOVX @DPTR,A
MOV R2,#10 ;延时1秒
LCALL DELAY
NOP
RET
DELAY: ;延时子程序
PUSH 2
PUSH 1
PUSH 0
DELAY1:
MOV 1,#00H
DELAY2:
MOV 0,#0B2H
DJNZ 0,$
DJNZ 1,DELAY2 ;延时 100 mS
DJNZ 2,DELAY1
POP 0
POP 1
POP 2
RET
END
这是我们的实验,程序肯定没问题。至于ULN2803,只是一个增大电流,电压的芯片,因为51单片机本身的电流太小。你改一下就好。至于其他不明白的地方,可以交流。QQ375778861
单片机数码管加到10自动清0了的方法如下,1、在主程序中一直扫描显示程序
2、通过按键触发中断 在中断里面进行计数
3、每有一次中断触发 计数指针加一
4、加够10次后指针恢复初始状态 即清零。
以上就是关于c语言中的头文件cstdio中的c与stdio.h中.h有什么区别全部的内容,包括:c语言中的头文件cstdio中的c与stdio.h中.h有什么区别、求Nosound A1200软件!!!!、AT89S51 单片机控制交通灯程序(汇编语言)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)