$ORG 0000H ;主程序的入口地址
< ;跳转到主程序的开始处
< 0003H ;外部中断0的中断程序入口地址
< 000BH ;定时器0的中断程序入口地址
<0_INT ;跳转到中断服务程序处
< 0013H ;外部中断1的中断程序入口地址
< : ,#50H
<,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断
<,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1
<1,#00H ;T1计数器清零
<1,#00H
<1 ;启动T1计时器
<1 ;允许INT1中断
<1 ;选择边沿触发方式
< ,#0003H
<, #80H ;给8255赋初值,8255工作于方式0
< @DPTR, A
<: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转
<,P1
<1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间
<0,#00H ;R0清零
<0,A ;存入东西方向绿灯初始时间
<3,A
<1
<
<
<: 1
<,#7FH ;P1.7置0
<7,#00H ;R7清零
<7,A ;存入东西方向红灯初始时间
<3,A
<1
<
<
;——————————————-
N0: 0 ;启动T0计时器
< 76H,R7 ;红灯时间存入76H
N00: ,76H ;东西方向禁止,南北方向通行
<3,A
<,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮
<,#0DDH
< @DPTR, A
N01: JB P2.0,B0
N02: 3.0
<3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行
;——黄灯闪烁5秒程序——
N1: 3.0
<3,#05H
<,#0000H ;置8255A口,东西,南北方向黄灯亮
<,#0D4H
< @
N11: 4,#00H
N12: 4,#7DH,$ ;黄灯持续亮0.5秒
N13: ,#0000H ; 置8255A口,南北方向黄灯灭
<,#0DDH
< @
N14: 4,#00H
<4,#7DH,$ ;黄灯持续灭0.5秒
<3,#00H,N1 ;闪烁时间达5秒则退出
;————————————————————
N2: 7,#00H
<,R0 ;东西通行,南北禁止
<3,A
<,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮
<,#0EBH
< @
N21: JB P2.0,T03
N22: 3,#00H,N21
;——黄灯闪烁5秒程序——
N3: 3,#05H
<,#0000H ;置8255A口,东西,南北方向黄灯亮
<,#0E2H
< @
N31: 4,#00H
<4,#7DH,$ ;黄灯持续亮0.5秒
N32: ,#0000H ; 置8255A口,南北方向黄灯灭
<,#0EBH
< @
N33: 4,#00H
<4,#7DH,$ ;黄灯持续灭0.5秒
<3,#00H,N3 ;闪烁时间达5秒则退出
<00
;——闯红灯报警程序——
B0: 2,#03H ;报警持续时间3秒
B01: 3
<1 ;若倒计时完毕,不再报警
<3.0 ;报警
<2,#00H,B01 ;判断3秒是否结束
<02
;——1秒延时子程序——-
N7: RETI
<:0,#9AH ;给定时器T0送定时10ms的初值
<0,#0F1H
<4
<5
<5,#001 ;判断延时是否够一秒,不够则调用显示子程序
<5,#00H ;R5清零
<3 ;倒计时初值减一
<2 ;报警初值减一
T01: ;调用显示子程序
< ;中断返回
;——显示子程序——
<: 2.4,T02
<1: ,#0AH
<,R3 ;R3中值二转十显示转换
<
< 79H,A
< 7AH,B
<: ,79H ;显示十位
<,#TAB
<,@
<,#0002H
< @
<,#0001H
<,#0F7H
< @
<
DS2: ,7AH ;显示个位
<,#TAB
<,@
<,#0002H
< @
<,#0001H
<,#0FBH
< @
<
;——东西方向车流量检测程序——
T03: 3
<,#00H ;若绿灯倒计时完毕,不再检测车流量
<3
<2.0,T03
<7
<7,#64H,E1
<7,#00H ;中断到100次则清零
E1: 22
;——东西方向车流量显示程序——
T02: ,#0AH
<,R7 ;R7中值二转十显示转换
<
< 79H,A
< 7AH,B
<3: ,79H ;显示十位
<,#TAB
<,@
<,#0002H
< @
<,#0001H
<,#0F7H
< @
<
DS4: ,7AH ;显示个位
<,#TAB
<,@
<,#0002H
< @
<,#0001H
<,#0FBH
< @
<7
;——延时4MS子程序———-
<: 1,#0AH
<: 6,#64H
<
<1: 6,LOOP1
<1,LOOP
<
;——字符表——
<: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
<
我有书,M我,给你参考如你所说你在主干道,那他就全责$我用三菱FX1S的PLC编了个程序。因为时序没有说得很细,所以我就按照一般的规律设定了。
X1为系统启动按钮;X0为系统停止按钮。
Y0为南北路绿灯;Y1为南北路黄灯;Y2为南北路红灯。
Y10为南北路绿灯;Y11为南北路黄灯;Y12为南北路红灯。
这程序是我自己编的,楼下的,各大参考书上都有这程序的话 你就拿来看看和这个是不是一样的,我这还编了一套步进控制的。有种就自己编一套,人家要的是PLC程序,不是要的各大参考书定时器的当前时间值可以读出来,比如可以用mov指令读出。如果要利用这个时间在程序里面控制某些东西要注意格式转换,比如西门子300的定时器出来的是BCD或者整数格式。如果你用方针软件只是想实时监视剩余时间值,那就直接在仿真软件里打开这个定时器行了。