51单片机流水灯汇编与c语言程序附电路图
/*******flowing water light*********/
//晶振:12M ,P0口接8个led进行流水灯显示,74HC573驱动,8位led共阴接法
ORG 0000H LJMP MAIN
ORG 0030H //主程序从程序存储器0030H单元开始存放 MAIN: MOV P0,#0FFH //P0口初始化
MOV A,#01H //共阴接法,点亮最低位LED LOOP: MOV P0,A
LCALL DELAY_1S //延时1s
RL A //循环左移一次,点亮下一位 SJMP LOOP //跳转到LOOP处执行,死循环 // 3层嵌套软件延时子程序,延时1s
DELAY_1S: MOV R1,#10 //最外层循环体执行10次 DELAY0: MOV R2,#200 //中间层循环体执行200次 DELAY1: MOV R3,#248 //最内层循环体执行248次
DJNZ R3,$ //循环子程序最内层,执行时间248*2=496us NOP //空操作,为了凑到准确的500us执行时间
DJNZ R2,DELAY1 //中间层循环体(1+496+1+2)*200=100000us=100ms DJNZ R1,DELAY0 //最外层循环体(100ms+2us)*10=1000.02ms RET END