您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 用AT89S52的P1口做输出口-控制六个发光二极管亮灭-模拟交通灯控制。
ORG0000HLJMPMAINORG0080HMAIN:MOVP1,#0FFH;对P1口清零MOVP1,#0BBH;对P1口赋值使东西路口绿灯亮,南北路口红灯亮LCALLDELAY;调用延时子程序MOVR0,#03H;输入黄灯闪烁次数L5:MOVP1,#0BDH;对P1口赋值使东西路口绿灯熄灭,黄灯亮LCALLFLASH;调用闪烁子程序MOVP1,#0BFH;对P1口赋值使东西口所有灯熄灭LCALLFLASH;调用闪烁子程序DJNZR0,L5;未到三次闪烁继续循环MOVP1,#0D7H;对P1口赋值使东西红灯亮,南北绿灯亮LCALLDELAY;调用延时子程序MOVR0,#03H;输入黄灯闪烁次数L6:MOVP1,#0E7H;对P1口赋值使南北路口绿灯熄灭,黄灯亮LCALLFLASH;调用闪烁子程序MOVP1,#0F7H;对P1口赋值使南北口所有灯熄灭LCALLFLASH;调用闪烁子程序DJNZR0,L6;未到三次闪烁继续循环LJMPMAIN;循环主程序DELAY:MOV50H,#100;定时延时5s的循环次数MOVTMOD,#10H;设T1为方式1MOVTH1,#3CH;赋定时初值高字节MOVTL1,#0B0H;赋定时初值低字节SETBTR1;启动T1L2:JBCTF1,L1;查询计数溢出,当TF1位为1时,转移到L1,同时使TF1位清零SJMPL2L1:MOVTH1,#3CH;重赋定时初值MOVTL1,#0B0HDJNZ50H,L2;未到5s继续循环RET;返回主程序FLASH:MOV51H,#10;定时闪烁0.5s的循环次数MOVTMOD,#10H;设T1为方式1MOVTH1,#3CH;赋定时初值高字节MOVTL1,#0B0H;赋定时初值低字节SETBTR1;启动T1L4:JBCTF1,L3;查询计数溢出,当TF1位为1时,转移到L1,同时使TF1位清零SJMPL4L3:MOVTH1,#3CH;重赋定时初值MOVTL1,#0B0HDJNZ51H,L4;未到0.5s继续循环RET;返回主程序END
本文标题:用AT89S52的P1口做输出口-控制六个发光二极管亮灭-模拟交通灯控制。
链接地址:https://www.777doc.com/doc-5915084 .html