单片机控制的花样流水灯设计毕业论文 - 图文 下载本文

3.2电路程序设计

程序流程图如图9所示:

程序中LIGHT7为多种亮灯方式结合循环

延时子程序DELAY为100毫秒延时,延时子程序DELAY1为100毫秒延时 LIGHT1~LIGHT6亮灯方式程序中有标注

开 始 跳至主程序,设置外部中断0有效,电平触发 P3.0=0? LIGHT1 LIGHT2 P3.1=0? 主程序等待中断 P3.3=0? 中断到来? P3.4=0? 继续等待中断 LIGHT3 相应亮灯方式 LIGHT4 P3.5=0? LIGHT5 P3.6=0? LIGHT6 P3.7=0? LIGHT7 中断? 继续循环

图9 程序流程图

程序如下:

ORG 0000H

AJMP MAIN ;系统上电,执行主程序 ORG 0003H ;外部中断0入口 AJMP LOOP ;转移至中断服务程序 MAIN:

SETB EX0 ;允许INT0中断 SETB IT0 ;INT0中断选用电平触发 SETB EA ;CPU开中断 HALT: SJMP HALT ;等待中断

LOOP: ;判0转移到相应亮灯方式 SETB P3.2 JNB P3.0 ,LIGHT1 JNB P3.1 ,LIGHT2 JNB P3.3 ,LIGHT3 JNB P3.4 ,LIGHT4 JNB P3.5 ,LIGHT5 JNB P3.6 ,LIGHT6 JNB P3.7 ,LIGHT7

LIGHT1: ;一个正流水(100毫秒延时) SETB P3.0 MOV DPTR,#TAB1 MOV R0,#8

LIGHT11:MOVX A,@DPTR MOV P1,A LCALL DELAY INC DPTR

DJNZ R0,LIGHT11 JNB P3.0,LOOP

SJMP LIGHT1

LIGHT2: ;两个正流水(100毫秒延时) SETB P3.1 MOV DPTR,#TAB2 MOV R0,#4 LIGHT22:MOVX A,@DPTR MOV P1,A LCALL DELAY INC DPTR DJNZ R0,LIGHT22 SJMP LIGHT2

LIGHT3:

SETB P3.3 MOV DPTR,#TAB3 MOV R0,#8 LIGHT33:MOVX A,@DPTR MOV P1,A LCALL DELAY INC DPTR DJNZ R0,LIGHT33 JNB P3.0,LOOP SJMP LIGHT3

LIGHT4:

SETB P3.5 MOV DPTR,#TAB5 MOV R0,#4 LIGHT55:MOVX A,@DPTR

;隔一个正流水(100毫秒延时)隔一个倒流水(0.5秒延时)

MOV P1,A LCALL DELAY1 INC DPTR DJNZ R0,LIGHT55 JNB P3.0,LOOP SJMP LIGHT5

LIGHT5: SETB P3.7 MOV DPTR,#TAB7 MOV R0,#74 LIGHT77:MOVX A,@DPTR MOV P1,A LCALL DELAY INC DPTR DJNZ R0,LIGHT77 JNB P3.0,LOOP SJMP LIGHT7

DELAY1:MOV R3,#10 //0.5秒的延时子程序D1:MOV R7,#200 D2:MOV R6,#123 D3:DJNZ R6,D3 NOP

DJNZ R7,D2 DJNZ R3,D1 RET

DELAY:MOV R2,#40 //2秒的延时子程序 D4:MOV R1,# 200 D5:MOV R4,#123 D6:DJNZ R4,D6

(2秒延时);多样式流水