ORG 0000H
LJMP MAIN
ORG 000BH; 单片机中断程序入口地址
AJMP ZHDUAN
CJNE A,R7,RED; 判断是否进入红灯亮程序
DJNZ R6,GREEEN; 红灯亮条件不满足,判断是否进入绿灯亮程序
LJMP YELLOW; 绿灯亮条件不满足,判断是否进入黄灯亮程序
ORG 0100H
RED:MOV SP,#60H; 设置堆栈指针
MOV A,#0C9H; 200*0.1ms=20s
MOV R7,#00H
INC R7
SETB P1.0
CLR P1.1
CLR P1.2
AJMP DINGSHI
ORG 0200H
GREEN:MOV R6,#0C9H; 绿灯亮子程序入口 也是 200*0.1ms=20s
SETB P1.1
CLR P1.2
CLR P1.0
DINGSHI:MOV TMOD,#01H; 设置T0工作在方式1
MOY TL0,#0B0H; 计数初值3CB0=15536 50000*2uS=0.1ms
MOV TH0,#3CH;
KAIQI:SETB TR0; 开启中断
SETB ETO
SETB EA
HERE:AJMP HERE; 等待中断的到来
ZHDUAN:MOV TL0,#0B0H; 感觉中断子程序的内容没用
MOV TH0,#3CH
CLR TR0
RET
ORG 0300H
YELLOW:SETB P1.2; 黄灯亮子程序入口
CLR P1.1
CLR P1.0
MOV R3,#1EH; 0.1秒
BBB:MOV R4,#0FAH; 延
AAA:MOV R5,#0C8H; 时
DENGDAI:DJNZ R5,DENGDAI; 子
DJNZ R4,AAA; 程
DJNZ R3,BBB; 序
LJMP RED;
END
程序结束!!!!!!!