实验电路图及软件仿真图如下:
发光二极管每次P1输出的地址
单片机汇编语言程序:
ORG 30H 起始指令30H CYC1 EQU 200 给CYC1赋值200 CYC2 EQU 125 给CYC2赋值125 MOV A,#0FEH 给A赋值FE MOV P1,A 将控制字送至端口P1 MOV R2,#7 给工作寄存器R2赋值一个常数7 DOWN: RLA 将控制字循环左移FD ACALL DEL50 调用下面的DEL50,用于延时50ms MOV P1,A 把A输出P1,第二个灯亮 DJNZ R2 ,DOWN R2减1若不为0,则跳转到DOWN MOV R2,#7 给R2赋一个常数7 UP: RR A 控制字循环右移7E ACALL DEL50 调用下面的DEL50 MOV P1,A 把控制字送至端口P1 DJNZ R2,UP R2减1若不为0跳转到UP MOV R2,#7 把7赋给R2 SJMP DOWN 相对跳转到上面的DOWN形成死循环 DEL50:MOV R7,#CYC1 延时50ms DEL1: MOV R3,#CYC2 延时1ms DJNZ R6,$ R6减1若不为0则原地踏步 DJNZ R7,DEL1 R7减1若不为0则返回到DEL1 RET 堆栈中 END 结束
|